IT recording...
[OS] 3. 프로세스 스케줄링 - (2) 본문
[이화여자대학교 반효경 교수님의 강의를 듣고 정리한 글입니다.]
[그림과 함께 편하게 보려면 여기로]
https://adorable-aspen-d23.notion.site/OS-3-2-dacf99e3481a4aef98df6c2f450549a8
1. 프로세스 스케줄링
1. 프로세스 문맥 (context)
1. Context Swtiching (문맥교환)
- CPU 스케줄링 시, CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
- Block 상태가 되는 프로세스의 정보를 커널의 PCB에 저장해둔다.
- 프로세스를 다시 실행할 때 정확한 문맥에서 실행하기 위함
- cf) System call이나 interrupt 발생 시 다른 프로세스로 cpu가 넘어가지 않는다면 문맥교환이 일어나지는 않는다. (CPU제어권이 넘어가는 상황에서 문맥교환 발생)
- Cotext : 현재 시점에 프로그램이 무슨 일을 하고 있는지를 알려주는 것
- 현재 기계어의 어디까지 실행했고, 메모리에 어떤 내용을 담고 있는가(code, data, stack), cpu레지스터(PC등)에 어떤 값을 담아놓았는가(CPU얼마나 썼는지)
2. Context switching의 Cost
- Cost
- Cache 초기화
- Memory Mapping 초기화
- 메모리 접근을 위해 Kernel은 항상 실행되어야 한다.
- ⇒ 잦은 문맥교환은 성능 저하를 가져온다.
- 시간할당량과의 관계 (Timer)
- 시간 할당량이 작음
- 인터럽트, 문맥교환 증가 → 오버헤드 증가
- 여러 개의 프로세스가 동시에 수행되는 느낌
- 시간 할댱량이 커짐
- 인터럽트, 문맥교환 감소 → 오버헤드 감소
- 여러 개의 프로세스가 동시에 수행되는 느낌 XX
- 시간 할당량이 작음
- Process VS Thread 문맥교환
- Thread는 stack을 제외한 모든 메모리를 공유하기 때문에 문맥 교환 cost가 process보다 훨씬 적다.
2. PCB(Process Controll Block)
: 운영체제 커널이 프로세스들을 관리하기 위해 프로세스 당 유지하는 정보
- 구성
- OS가 관리상 사용하는 정보
- Process State(Ready, Running, Blocked...), Process Id, Scheduling information, Priority(큐에서 어떤 것을 우선으로 CPU줄 것인가)
- CPU 수행 관련 하드웨어 값
- PC, CPU Registers(accumulator, index register, stack pointers, general purpose 등)
- 메모리 관련
- code, data(ready queue정보들), stack의 위치 정보
- 그외
- Owner(계정정보), 기억장치 관리 정보, 입출력 정보, 파일 관련 정보
- OS가 관리상 사용하는 정보
- 프로세스가 생성되면 해당 PCB가 생성되고, 프로세스 완료 시 제거된다.
3. 프로세스 상태 (proces state)
- Running
- CPU제어권을 가지고 프로그램을 실행시키고 있는 상태
- CPU를 반납하는 경우
- 끝나서 반납 (→ terminated)
- 타이머 끝 (→ ready)
- I/O나 event (→ waiting)
- Ready
- 메모리(물리적 주소)에 프로그램의 모든 정보를 올려두고 CPU만 오매불망 기다리는 상태
- Blocked
- I/O 작업 등으로 인해서 CPU제어권을 잠시 빼앗긴 상태
- → 자신이 요청한 event가 만족되면 → Ready 상태로 변한다.
- Suspended(stopped)
- 외부적인 이유로 프로세스의 수행이 정지된 상태 (SWAP)
- ex) 사용자가 프로그램을 일시정지 시킨 경우, 시스템이 여러 이유로 프로세스를 잠시 중단시킴(메모리에 너무 많은 프로세스가 올라와 있을 때)
- → 외부에서 resume해줘야 → Ready 상태로 변한다.
- New : 프로세스가 생성중인 상태
- Terminated : 프로세스가 끝나고 정리하고 있는 상태
4. 프로세스 관리 큐 (Queue)
1. Job Queue
- 현재 시스템 내에 있는 모든 프로세스들의 집합
- 메모리에 올라가지 않은 프로그램까지 모두
2. Ready Queue
- Ready 상태인 프로세스들의 집합
- 현재 메모리 내에 있으면서 CPU를 기다리고 있는 프로세스의 집합
3. Device Queue
- I/O device의 처리를 기다리는 프로세스의 집합
5. 스케줄러
1. Long-Term Scheduler (장기 스케줄러)
- new → ready 큐로 어떤 프로세스를 옮길지 결정
- 어떤 자원을 사용할 것인가? (프로세스에 메모리를 주는 문제)
- degree of Multiprogramming을 제어
- 메모리에 몇 개의 프로그램을 올릴래?
- time sharing system(시분할)은 몽땅 다 올려버리므로 보통 장기 스케줄러가 없음
2. Short-Term Scheduler (단기 스케줄러, CPU 스케줄러)
- ready → running 큐로 어떤 프로세스를 옮길지 결정
- 어떤 프로세스에 CPU를 줄 것인가?
- 충분히 빨라야 함
3. Medium-Term Scheduler (중기 스케줄러, Swapper)
- 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아내는 것
- degree of Multiprogramming을 제어
- 메모리에서 어떤 프로세스를 쫒아낼래?
'Operating System' 카테고리의 다른 글
[OS] 6. CPU 스케줄링 (0) | 2022.04.24 |
---|---|
[OS] 5. 쓰레드 (0) | 2022.04.24 |
[OS] 4. 프로세스 시스템콜, 협력 - (3) (0) | 2022.04.24 |
[OS] 2. 프로세스란? - (1) (0) | 2022.04.24 |
[OS] 1. 운영체제 (0) | 2022.04.24 |
Comments