# 마이크로커널 구조 (microkernel architecture)
- address spaces
- interprocess communication (IPC) : 프로세스간 대화하는 것
- basic scheduling
* 일체형 : 단일체
# 멀티쓰레딩 (multithreading) **************
- 프로세스는 두 개이상의 쓰레드로 구성됨 (자원(힙 등)을 공유 가능)
- 한 개의 프로세스를 동시에 수행될 수 있는 여러 개의 쓰레드들로 나누어 병행적으로 실행
- 경량 (프로세스에 여러 개의 쓰레드가 자리해서 자원 공유하므로)
* 쓰레드 : cpu에 작업을 할당하는 디스패칭 단위
* 디스패치 : 프로세스를 스케줄링 해줌, cpu 작업을 할당, 그 작업이 수행된다
* 문맥 : 프로그램이 돌다가 어디까지 수행됐는지 저장
* 컨테이너 : 하나 이상의 시스템 자원들을 담고 있음
***** 쓰레드와 프레서스 차이 ? 그림 그려가면서 설명 (시험) *****
# SMP 구조
- 다중 처리
- 블록 상태 : 수행되다가 기다리는 상태
- 인터리빙 : 서로 교차적으로 수행, 어느 시간에 누군가는 수행되고 있음, 처리율 향상
cpu 2개면 동시 수행 가능
# 분산된 운영체제
분산 : 질의적으로 떨어짐
# 결함허용(fault tolerance) *****영어로도
- 24시간 nonstop으로 돔
- 하드웨어, 소프트웨어에도 불구하고 시스템이 계속 정상 작동할 수 있는 능력
- 여분 설비(redundancy) 필요
- 은행, 금융사, 항공사, 정부통합전산센터
- load balancer : 짐을 분산시킴, 균형있게 맞춰줌
- failover : 고장남, 자동적으로 넘어가게 함
# 결함허용 수준 측정 단위
- 신뢰성
- MTTF : 결함이 발생하기까지의 평균 시간
- MTTR : 수리완료까지의 평균 시간)
- SLA(service leverl agreement 서비스레벨협약) : cloud service
0.99999 : 여간 다운타임은 5분
active : 수행중
standby : 대기
중복 둠 : 미러링
시스템이 작동되다가 미러링 거울처럼 X2로 둠, 망가지면 미러링된 걸 씀, 망가진 것 고침
가상 기계 : 운영체제 이름
# 멀티코어
- ~16
# 매니코어
- ~256
- 두뇌가 여러개
- 운영체제는 어떻게 용량을 최소 활용할것인가, 자원을 어떻게 잘 관리할 것인가
- 병렬성, 동시성 향상 => 속도가 빨라짐
# GCD (grand central dispatch)
- 응용 내 병령성 지원도구
# 가상 기계(VM) 방식
- cpu가 자신의 모든 성능을 그 프로세스를 위해서만 사용
- 호스트 운영체제는 윈도우, 유닉스, 리눅스, 여러 가지 운영체제 깔림
- 하드웨어 아님
- 효율적으로 사용
- 병렬성, 동시성 향상
# windows
- 하드웨어 추상화 계층
- 커널
- 시스템 서비스
- windows 8 가장 중요
- 시스템 운영은 쓰레드 단위로
- 어떤 플랫폼이든 쓸 수 있게 함
# 전통적인 UNIX 시스템
- shell : 명령어 확인하고 실행되는 것
- 리눅스의 오리지널
- c언어로 구성
- 하드웨어를 둘러싸고 있는 건 커널(운영체제 핵심 부분)
- 시스템 함수 : read, write
# 최근 UNIX 시스템
- solaris 10 : 가장 상업적으로 성공한 유닉스
- sun사가 oracle에 합병
# Linux (리눅스)
- 널리 퍼짐
- 마이크로커널 방식 사용하지 않음
- 무료 sw 패키지
- 하드웨어 플랫폼 상에서 성능 좋음
- 머신 인터페이스 : 디바이스, 메모리, cpu
- 모듈화된 구조
# 모바일 운영체제
- 모바일에 탑재된 운영체제
# 안드로이드 운영체제
- 리눅스 모바일 버전이 안드로이드
- 리눅스 커널
- 필요한 기능(소프트웨어)들이 모여진 SW스택이라고 할 수 있음
* 스택 (LIFO)
# WSL (Windows Subsystem for Linux)
- 윈도우즈에서 리눅스 명령을 cmd, powersheell 등을 통해 직접 실행
# 리눅스 명령어 형식
명령어 -옵션 인수
- 명령어는 반드시 소문자
- 공백 필요
# pwd (print working directory)
- 작업중인 디렉토리 출력
# ls
- 디렉토리 내용 보기
# mkdir directoryname
- 디렉토리 생성
# cd directoryname
- 디렉토리 이동
- 인수가 없는 경우 사용자의 홈디렉토리로 이동
# cat
cat > filename : 파일 생성
cat -n filename : 파일 내용 확인
ctrl + d : 저장하고 빠져나옴
# mv
mv -i oldfilename newfilename : oldfile을 newfile로 변경
mv -i filename directoryname : filename을 dictoryname으로 이동
-i : 변경사항과 같은 파일이 이미 존재하는 경우 사용자에게 확인
# cp
파일 복사
cp -i oldfile newfile
cp -r olddirectory newdirectory
-r : olddirectory 내부에 있는 모든 파일과 서브디렉토리를 newdirectory로 복사
# rmdir
디렉토리 제거 (디렉토리 비어있어야 함)
rmdir directoryname
rm -r : 디렉토리와 디렉토리 내부를 전부 제거
# rm
파일 제거
rm filename
rm * : 모든 파일 제거
# 파일 편집기
vi 에디터 호출
test.c 파일 들어가서 i 누르면 insert 모드
입력 다 한 후 esc :wq! enter 누르면 저장되고 빠져나옴
# gcc 컴파일러
# apt update
sudo apt update
sudo apt upgrade
# gcc 컴파일러 설치
sudo install gcc
sudo : 관리자 권한으로 명령어 실행
# nano editor 사용
nano main.c
소스 입력후 ctrl + x 누르고 y키 누르면 저장 enter 누르고 빠져나옴
# gcc 컴파일 & 실행
gcc 컴파일할 파일 : a.out 파일 자동 생성
./a.out 입력하면 실행파일 실행
gcc -o 실행파일 이름 컴파일할 파일
./실행파일 이름 : 실행파일 실행
test.c : 컴파일할 파일
test.out : 실행파일 이름
'전공 공부 > 운영체제' 카테고리의 다른 글
운영체제 9주차 강의 (0) | 2021.04.27 |
---|---|
운영체제 7주차 강의 (0) | 2021.04.13 |
운영체제 5주차 강의 (0) | 2021.04.04 |
운영체제 3주차 강의 (0) | 2021.03.16 |
운영체제 2주차 강의 (0) | 2021.03.09 |