멀티 프로그래밍 (Multiprogramming)
- CPU 이용을 최대화 시켜준다.
- CPU 이용을 최대화 시키려면, 프로세스를 스케줄링하여 최대한 CPU가 쉬지 않고, 일을 하도록 해주어야 한다.
시분할 (Time Sharing)
- 프로그램이 실행되는 동안, 사용자가 상호 작용할 수 있도록 프로세스들 사이에서 CPU 코어를 빈번하게 교체한다.
- 주어진 시간을 다수의 프로세스가 나누어, 한정된 자원을 분할해 사용한다.
프로세스 스케줄러 (Process Scheduler)
- CPU 코어 하나에는 한 번에 하나의 프로세스만 실행할 수 있다.
- 프로세스 스케줄러는 멀티 프로그래밍, 시분할의 목적을 이루어준다고 할 수 있다.
- 다중 코어 시스템은 당연히 여러 개의 프로세스를 한 번에 실행할 수 있고
프로세스의 수가 코어 갯수를 넘어서가 된다면, 프로세스는 코어가 사용가능하게 되고 스케줄링 될 때까지 기다려야 한다.
- 현재 메모리에 적재되어 있는 프로세스 수를 다중 프로그래밍 정도(degree of multiprogramming)라고 부른다.
I/O 바운드 프로세스와 CPU 바운드 프로세스 (I/O bound process and CPU bound process)
- 자원을 효율적으로 관리하고 사용하기 위해서는 프로세스를 균형있게 스케줄링해야 한다.
- 프로세스는 일반적으로
CPU를 사용한 계산보다 I/O(입출력)에 시간을 더 많이 할애하는 I/O bound process와
I/O보다 CPU를 사용한 계산에 시간을 더 많이 할애하는 CPU bound process로 나뉘어진다.
- CPU bound process와 I/O bound process를 주어진 자원에 적절히 스케줄링하는 것이 효율성 측면에서 중요하다.
스케줄링 큐 (Scheduling Queue)
- 프로세스가 시스템에 들어오면, ready queue에 들어가 ready 상태가 되어 CPU 코어에서 실행되기를 기다린다.
- queue는 일반적으로 링크드 리스트로 구현되어 있으며, 헤드가 순서대로 PCB를 가리키는 형태로 이루어진다.
- I/O 요청이 들어와 I/O 완료와 같은 이벤트가 필요하게 되면, 프로세스는 wait 상태가 되는데 이러한 wait 상태의 프로세스를 위한 wait queue 또한 존재한다.
- 프로세스의 상태와 PCB에 대한 내용은 이전 게시글을 참고하면 더 도움이 될 것이다.
- 일반적인 프로세스 스케줄링의 도표이다.
- 간단히 설명하자면, 프로세스는 기본적으로 ready queue에서 CPU 할당을 기다리며
할당 후, I/O 요청, 자식 프로세스 생성, 인터럽트 요청 등으로 wait queue로 이동할 수 있으며
CPU에 할당된 time slice가 만료되거나, 인터럽트에 의해 강제로 중단되어 ready qeueu로 이동할 수 있다.
- 프로세스는 종료될 때까지 이를 반복하며, 종료 시 PCB 및 자원을 모두 반환한다.
CPU 스케줄링 (CPU Scheduling)
- Process Scheduler(Job Scheudler, Long-term Scheduler)는 new 상태의 프로세스를 ready 상태로 전이시켜주는 역할을 한다면, CPU Scheduler는 ready queue에서 어느 한 프로세스에 CPU를 할당할 것인지 결정하는 역할을 한다.
- 대부분 적어도 100ms마다 한번씩 실행된다.
Context Switching
- CPU 스케줄링을 하게되면, 인터럽트나 I/O request 등의 이유로 실행되던 프로세스가 ready 상태가 되어 ready queue에서 대기하다가 다시 실행되는 상황이 발생된다.
- 이 때, 실행되던 현재 문맥(Context)을 저장하고, ready queue에서 실행될 프로세스의 저장되었던 문맥을 복구할 수 있어야 한다.
이러한 작업을 Context Switching(문맥 교환)이라고 부른다.
- Context Swithcing이 일어나면, 커널은 실행중이었던 프로세스의 Context를 PCB에 저장하고,
새로 스케줄된 프로세스의 저장된 Context를 복구한다.
- 이러한, Context Swithcing은 시스템의 순수한 오버헤드이기 때문에, 스케줄링을 할 때, 충분한 고려요소이다.
- PCB에 대한 글도 이전 게시글을 참고하자.
참조)
Abraham Silberschats, Greg Gagne, Peter B. Galvin. (2018). Operating System Concepts (10/E)
'컴퓨터 사이언스 > 운영체제' 카테고리의 다른 글
[공룡책] 프로세스 동기화와 임계구역(Critical Section) (0) | 2021.07.16 |
---|---|
[공룡책] CPU 스케줄링 (CPU Scheduling) (0) | 2021.07.11 |
[공룡책] 프로세스 개념 (Process Concept) (0) | 2021.04.28 |
[스케줄링] Scheduling of Linux (0) | 2021.04.13 |