다중 프로그래밍(시분할)의 목적
- 각 프로그램이 실행되는 동안 사용자가 상호작용할 수 있도록 프로세스들 사이에서 CPU를 빈번하게 교체하는 것
- 교체는 왜 하는가? 단일처리기 시스템에서는 실행 중인 프로세스가 한 개 이상 있을 수 없기 때문.
스케줄링 큐(Scheduling Queues)
크게 두가지 큐가 있다. - 준비완료 큐, 장치 큐
이 중 준비완료 큐에 대해 알아보겠다.
준비완료 큐
- 준비완료 상태에서 실행을 대기하는 프로세스들은 준비완료 큐에 있다.
- 이 큐는 일반적으로 연결 리스트로 저장된다.
- 준비완료 큐의 헤더는 리스트의 첫 번째와 마지막 PCB를 가리키는 포인터를 포함한다.
새로운 프로세스는 처음에 준비완료 큐에 놓인다. 프로세스는 cpu를 할당받을(dispatch) 때까지 준비완료 큐에서 대기한다.
일단 프로세스에 cpu가 할당되어 실행되면, 다음 여러 가지 사건들 중 하나가 발생할 수 있다.
- 프로세스가 입출력을 요청하여 입출력 큐에 넣어질 수 있다.
- 프로세스가 새로운 서브프로세스를 생성하고 그 프로세스의 종료를 기다릴 수 있다.
- 프로세스가 인터럽트의 결과에 따라 강제로 cpu로부터 제거되어 준비완료 큐에 다시 놓일 수 있다.
프로세스는 종료될 때까지 이 주기를 계속하며, 종료되면 모든 큐에서 삭제되고 그 자신의 PCB와 자원을 반납(deallocate)한다.
'운영체제' 카테고리의 다른 글
[운영체제 OS] 프로세스 개념, 프로세스 상태 (0) | 2020.09.12 |
---|