[운영체제] 2. 프로세스(Process) 스케줄링, 스케줄러, 문맥 전환
프로세스 스케줄링(Process Scheduling)
1) 멀티프로그래밍(Multiprogramming)
- CPU 사용을 극대화 하기 위해서, 항상 여러개의 프로세스를 동작시켜야 한다.
2) 시분할(Time-sharing)
- 많은 사용자가 컴퓨터를 동시에 이용하기 위해서, 각 사용자는 최소한의 CPU 할당 시간을 갖어야 한다.
- 시분할 시스템이 잘 구축되면, 각 사용자들은 전체 컴퓨터 시스템을 자신만 사용하는 것과 같이 느낄 수 있다.
3) 프로세스 스케줄러(Process Scheduler)
- 멀티프로그래밍, 시분할 기능을 사용하기 위해서는 프로세스 스케줄러가 필요하다.
- 스케줄러는 실행할 프로세스를 선택한 뒤 CPU에 해당 프로세스를 전달한다.
프로세스 사이에서 CPU 전환
프로세스 스케줄링 큐(Process Scheduling Queues)
1) Job Queue : 컴퓨터 시스템에 존재하는 모든 프로세스를 관리
2) Ready Queue : 메인 메모리 상에 존재하며 CPU에 의해 실행될 준비가 된 모든 프로세스를 관리
3) Device Queues : I/O 장치를 기다리는 모든 프로세스를 관리
- 리소스 마다 별도의 Waiting Queue가 존재한다.
(메시지 큐, 소켓, 세마포어)
4) 프로세스는 실행되는 동안 다양한 큐 사이에서 전환이 이루어진다.
스케줄러
1) 스케줄러의 역할
- 스케줄링을 하고자 하는 목적으로, 프로세스를 선택하여 조건에 따라 다양한 스케줄링 큐로 이동시키는 역할을 한다.
2) CPU Scheduler
- 다음에 실행될 프로세스를 선택한 뒤, 그 프로세스에 CPU 자원을 할당한다.
문맥 전환(Context Switch)
1) Context 무엇인가?
- Context는 Process Control Block(PCB)으로 표현된 정보다.
- Context는 CPU 레지스터 정보와, 프로세스 상태 정보를 갖는다.
2) 문맥 전환(컨텍스트 스위칭 - Context Switching)때 일어나는 일
step1. 실행되고 있었던 프로세스의 PCB를 저장한다.
step2. 실행될 프로세스의 PCB 정보를 불러온다.
step3. Cache와 TLB(Translation Lookup Buffer)이 재설정된다.
- 컨텍스트 스위칭이 일어날 때, Cache와 TLB에 상당히 많은 미쓰가 발생한다.
3) 컨텍스트 스위칭이 일어날 때, 시스템은 실질적인 작업을 처리하지 못한다.
'운영체제(OS)' 카테고리의 다른 글
[IEEE754] float, double 부동 소수점에 대해서 (0) | 2015.11.28 |
---|---|
[운영체제] IPC(Inter Process Communication) 공유 메모리, 메시지 전달 [Shared Memory, Message Passing] (0) | 2015.07.12 |
[운영체제] 3. 프로세스(Process) 생성, 종료, 좀비 (0) | 2015.07.12 |
[운영체제] 1. 프로세스(Process) 개념, 상태, 컨트롤 블록(PCB) (0) | 2015.07.12 |