● 운영체제란?
- 컴퓨터 사용자와 하드웨어 시스템 간의 인터페이스를 담당하는 프로그램이다.
● 운영체제의 기능
- 자원 관리 : 어떠한 기준(indicator:지표)에 맞춰 만들어주는 활동.
→ 자원을 정해진 기준에 맞추는 것.
- 장치 제어 : 자원 관리를 하기 위한 방법. ex) 명령어를 보낸다.
- 사용자 편의 제공
● 운영체제의 종류
- 구조적 구분 : Micro Kernel, Monolithic Kernel
※ Kernel : OS의 핵심으로, H/W Control의 핵심 코드
· Micro Kernel : 순수한 Kernel이 독립적으로 존재하고, 나머지는 유저 모드에서 기능을 수행하는 Kernel
· Monolithic Kernel : 모든 기능을 Kernel에 집중시킨 Kernel.
(ex : Unix, Linux, Windows . . )
- 장점 : 빠르다.
- 단점 : 보안에 취약하고 디버깅이 힘들다.
- OSS적 구분 : Linux, Unix, Windows
● 운영체제의 계층 구조

- 특징 : 계층이 낮아지면 낮아질수록 중요하고, 보안이 강화된다.
- 장점 : N 계층은 (N-1) 계층만 생각하면 된다. 모듈화, 테스트가 용이하다.
- 단점 : 계층이 많은 만큼 속도가 느리다.
● 운영체제의 목표
목표
|
지표
|
설명
|
★효율성
|
높은 Throughput
|
단위 시간당 처리 작업량 증가
|
빠른 응답속도
|
짧은 응답 시간, 반환 시간
|
|
신뢰성
|
견고성
|
높은 품질, 안정된 동작
|
보안성
|
기밀성, 무결성, 가용성 제공
병목현상의 해결 및 회피 방안
|
|
상호작용성
|
사용성
|
대화식, 쉬운 인터페이스
|
학습용이성
|
개인화, 보편성
|
|
확장성
|
규모 확장성
|
Scale Up, Scale Out
|
설계 유연성
|
멀티 프로세싱 능력 향상
메모리 관리 유연
|
● 운영체제의 성능 평가 기준
- 응답 시간 (Response time) : 작업이 처음 실행되기까지 걸린 시간
- 대기 시간 (Waiting time) : 작업을 실행하지 않은 시간의 합계
- 실행 시간 (Running time, Burst time) : CPU가 작업을 처리한 시간의 합계
※ Running time을 운영체제의 목적에 맞게 공정하게 분배해야 기아 상태를 방지할 수 있다.
※ Running time과 Burst time의 차이점
· Running time : CPU, I/O 등 무엇이든 작동하면 Running time
· Burst time : 오로지 CPU만 작동하는 시간
* 위 개념에선 I/O라는 개념 없이 CPU만 쓴다는 가정 하에 둘을 같은 의미로 사용했다.
- 반환 시간(Turn-around time) : 작업이 완료되기까지 걸린 시간 (대기 시간 + 실행 시간)
● 프로세스란?
- CPU에 의해 실행되는 프로그램
- PCB(Process Control Block)에 의해 관리된다.
- PCB(Process Control Block) : 프로세스 정보를 저장한 자료 구조

- PCB의 크기는 OS가 로딩 될 때 정한다.
- OS는 PCB의 PID 시작 주소만 알고 있으면 PCB의 내용을 알 수 있다.
※ 이 PID의 시작점을 Segment라고 한다.
● 프로세스 관리
- 문맥 교환(Context Switching) : CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태(Context)를 보관하고 새로운 프로세스의 상태를 적재하는 과정.
- 문맥 교환이 필요한 이유 :멀티 프로세싱, 기아상태 방지
- 발생 시점 : Time Slice(Time Quantum) 소진 시, Interrupt 발생 시, 사용자, 커널 모드 전환시
※ 사용자 모드는 커널 모드에 동작을 요청하기 때문에 문맥 교환이 발생한다. 그러므로 속도가 저하된다.
● 스케줄링의 종류
▶ 스케줄링 정책에 따른 종류
· 선점형 스케줄링(Preemptive Scheduling) : OS가 실행중인 프로세스를 중단 가능
- 장점 : 기아 상태 발생 X
- 단점 : 빈번한 문맥 교환으로 Over head 발생
※ 보통 OS는 선점형 스케줄링 방식을 사용한다.
· 비선점형 스케줄링(Non-Preemptive Scheduling) : OS가 실행중인 프로세스를 중단 할 수없다.
- 장점 : 문맥교환으로 인한 Over head가 적다.
- 단점 : 기아 상태 발생
▶ 시기에 따른 종류
- 상태가 변하는 빈도에 따라 장기(가끔), 중기(중간), 단기(많이)로 나뉜다.
시기에 따른 종류는 단기가 가장 중요하며, 현대 OS에선 크게 의미를 두지 않는다.
★프로세스 상태 전이 (Process State Diagram)

★ 중앙 선의 위쪽 부분인 Active 상태는 메모리에서 동작하고, 중앙 선의 아래쪽 부분인 Suspended 상태는 디스크에서 동작한다.
· Create : 프로세스가 처음 생성되는 상태로, Ready 상태 또는 Suspended Ready 상태로 갈 수 있다.
· Ready : Dispatch가 되면 바로 Running이 될 수 있는 실행 대기 상태
· Running : 현재 CPU를 할당받아 사용하고 있는 상태
· Asleep : 자원을 할당 받을 때 까지 대기하는 상태
· Create → Ready : 시기에 따른 종류 중 장기에 해당. : Job scheduling, CPU bound와 I/O bound를 적절히 조합
· Running → Asleep : 중기에 해당. Swapper, 실행되고 있는 프로세스를 빼내는 스케줄링
· Asleep → Ready : 중기에 해당.
· Ready ↔ Running = Dispatch, Time-out 등 CPU를 차지할 프로세스를 선택하는 스케줄링
※ 단기에 해당하며 가장 빈번하게 일어나는 스케줄링이다.
- 프로세스도 결국 프로그램이다. 문제가 생기면 현재 상태를 Disk에 전부 적는다. = Dump
- 만약 Ready 상태에서 문제가 생기면 그것을 디버깅하기 위해 Swap-out을 해서 Disk에 Dump하는 과정이 Suspended Ready 이다. Disk에 있는 내용을 다시 Ready로 올리는 것이 Swap-in이다.
- Asleep 상태에서도 마찬가지로 동작한다.
'Study' 카테고리의 다른 글
2022-07-18 (0) | 2022.07.18 |
---|---|
Process Memory Map / Debug (0) | 2022.03.27 |
메모리와 버스 (0) | 2022.03.27 |