티스토리 뷰
Goal
- 운영체제의 핵심 기능에 대한 이해
- 주요 운영체제 설계 영역에 대한 이해
- 가상화에 대해 정의하고 설명할 수 있음
- 운영체제 설계 이슈에 대한 이해
운영체제
- 응용 프로그램의 실행을 제어하는 프로그램
- 컴퓨터 사용자와 하드웨어 사이에 중재자(intermediary) 역할을 하는 프로그램
- 커널 (Kernel) : 주 메모리에 상주하는 운영체제 핵심
일괄처리 멀티 프로그래밍
-
여러 개의 프로그램이 메모리에 올라와 CPU를 번갈하가며 사용하며 작업을 수행
-
멀티 프로그래밍을 위한 운영체제 기능
- 운영체제에 의해 I/O 작업이 수행
- 메모리 관리 : 여러 개의 job에 메모리 할당
- CPU 스케줄링 : 준비 상태에 있는 job 중 하나를 선택해 CPU를 할당
-
목적 : CPU 이용률(utilization)의 극대화
-
단점 : 수행중인 job과 상호 작용이 안됨
-
한 작업이 입출력을 대기해야 할 때, 처리기는 다른 작업으로 제어를 넘김
시분할 시스템 (Time Sharing System)
- 여러 개의 대화형 작업들을 다루기에 적합
- 처리기 시간은 여러 사용자들이 공유하며, 터미널을 통해 동시에 시스템에 접근
- OS는 CPU 시간을 조금(quantum)씩 쪼개어(slicing) 각 사용자 프로그램을 실행시킴
일괄처리 멀티프로그래밍과 시분할 시스템 비교
일괄 처리 멀티프로그래밍시분할 시스템
주요 목적 | 처리기 이용률의 최대화 | 응답시간의 최소화 |
명령어 소스 | 작업과 함께 제공되는 작업 제어 언어 명령어 | 터미널에서 입력되는 명령어 |
운영체제 핵심 기능 - 프로세스 관리
-
멀티프로그래밍 일괄처리 동작 : 처리기는 주 메모리에 있는 다양한 여러 프로그램들을 돌아가며 실행시킴
-
시분할 시스템 : 개별 사용자에게 빨리 응답해야 하면서도 동시에 여러 사용자들을 지원할 수 있어야함
-
Real-time Transaction Systems : 많은 사용자들이 한 DB에 대해 동시에 질의와 갱신을 입력
※ 위 3가지는 타이밍과 동기화라는 문제를 야기했고, 프로세스 개념 탄생에 큰 기여를 함
프로세스의 구성 요소
- 실행 가능 프로그램
- 프로그램 수행에 필요한 데이터(변수, 작업 공간, 버퍼 등)
- 프로그램의 실행 문맥 또는 상태(프로세스 레지스터 값, 우선순위 정보 등)
전형적인 프로세스 구현
운영체제 핵심 기능 - 메모리 관리
- 메모리 관리를 위해 OS가 지원해야할 5가지 핵심 기능
- 프로세스 분리
- 자동 할당 및 관리
- 모듈식 프로그래밍 지원
- 보호 및 접근 제어
- 영구적 저장 지원
가상 메모리
- 주 메모리 크기에 상관 없이 논리적 관점에서 메모리 주소 지정을 할 수 있게 해주는 기법
- 여러 개의 사용자 프로그램들이 동시에 주 메모리에 올라와 있어도 프로그램들이 통일된 주소 지정 방식을 사용할 수 있게 해주는 역할을 함
페이징
-
프로세스 메모리를 페이지라고 하는 고정-크기 블록 단위로 잘라서 관리하는 기법
-
프로그램은 가상 주소를 통해 원하는 워드에 접근
-
가상 주소
- 구성 : 가상 페이지 번호 + 페이지 내에서의 오프셋
- 가상 페이지에 해당하는 실제 페이지는 주 메모리 내 또는 보조기억장치 내 어느 위치에도 존재할 수 있음
- 가상 주소를 주 메모리 내의 물리주소로 동적으로 바꾸기 위해 OS가 매핑 정보를 제공
-
가상 메모리 개념
-
가상 메모리 주소 지정
운영체제 핵심 기능 - 스케줄링과 자원 관리
-
자원 할당 정책이 반드시 갖고 있어야 할 고려사항
- 효율성(Efficiency)
- 공정성(fairness)
- 반응시간 차등화(Differential Reponsiveness)
-
멀티프로그래밍을 위한 운영체제 주요 요소
최근 운영체제 발전
-
OS는 필요에 따라 OS 구조를 바꾸는 방법을 통해 새로운 기능을 지원하기도 함
-
마이크로커널 구조 : 몇몇 핵심 기능들만 커널에 포함시킴(address spaces, InterProcess Communication, Basic Scheduling)
- 장점 : 유연성, 분산 환경에 적합한 커널 구조
-
멀티쓰레딩 : 한 프로세스를 여러 개의 쓰레드(실행흐름)으로 나누어 병행적으로 실행시키는 기법
- 쓰레드(Thread)
- CPU에 작업을 할당하는 디스패칭 단위
- 서브루틴 분기/복귀를 가능하게 하기 위한 처리기 문맥과 쓰레드 만의 데이터 영역을 포함하고 있음
- 순차적으로 실행되며 인터럽트 가능
- 프로세스(Process) : 하나 이상의 쓰레드와 시스템 자원들의 컨테이너 역할
- 쓰레드(Thread)
-
대칭적 멀티프로세싱(SMP) : 여러 프로세스들이 동시에 실행될 수 있는 구조
-
여러 개의 처리기들이 주 메모리와 I/O 장치들을 공유함
-
모든 처리기들의 능력에 차등이 없음
-
OS는 쓰레드나 프로세스들을 각 처리기로 스케줄링 하고, 처리기들 간의 동기화도 책임짐
-
장점
- 성능 : 여러 프로세스들이 서로 다른 처리기 상에서 동시에 실행될 수 있음
- 가용성 : 처리기 하나가 고장 났더라도 시스템 전체가 망가지지는 않음
- 점진적 성장 : 시스템에 처리기를 추가하면 추가한만큼 전체 시스템의 성능이 높아짐
- 확장성 : 벤더들은 시스템에 장착된 처리기의 개수를 조절하며 제품 라인을 다양하게 출시할 수 있음
-
멀티프로그래밍과 멀티프로세싱
-
-
분산 운영체제
-
객체-지향 설계 : 소형화된 커널에 모듈식 확장 기능을 추가할 때 유용하며 시스템 일관성을 깨지 않은 채로 OS를 커스터마이징 하고자 할 때에도 유용
-
결함허용(Fault Tolerance)
- 하드웨어나 소프트웨어 고장에도 불구하고 어떤 시스템 또는 컴포넌트가 계속 정상 작동할 수 있는 능력을 일컫는 용어
- 결함 허용 척도를 시스템에 도입할 것이냐 아니냐는 그 자원이 얼마나 중요한 자원이냐에 따라 결정됨
- 결함허용 기법
- 프로세스 분리(Process Isolation)
- 병행성 제어(Concurrency)
- 가상 기계(Virtual Machines)
- 체크 포인트와 롤백(Checkpoints and Rollbacks)
'Computer Science > Operating System' 카테고리의 다른 글
쓰레드(Thread)의 개념과 장단점 (0) | 2020.07.06 |
---|---|
프로세스 기술 및 제어 (0) | 2020.07.05 |
프로세스의 주소 공간 (0) | 2020.05.29 |
프로세스(Process) & 스레드(Thread) (0) | 2020.05.23 |
운영체제(Operating System)의 개념 (0) | 2020.05.11 |
- Total
- Today
- Yesterday