[운영체제 3-2장. 프로세스 스케줄링]
- 프로세스 스케쥴러 : 프로세스중에 다음으로 CPU로 실행시킬 프로세스를 고르는 역할.
: 프로세스의 스케줄링 큐를 포함함다.
# 리눅스의 프로세스 표현(생략)
[스케줄링 큐(Scheduling queues)]
- 잡 큐(Job queue)
: 시스템 안의 모든 프로세스들로 구성.
: 프로세스가 시스템으로 들어올때 여기에 위치.
: 1개 존재
- 준비 완료 큐(ready queue)
: 준비 완료 상태에서 실행을 대기하는 프로세스들이 위치.
: 메인메모리 상에 존재.
: 1개 존재
- 장치 큐(device queue)
: 특정 입출력 장치를 대기하는 프로세스들의 리스트.
: 여러개 존재.
# 준비완료 큐와 다양한 입출력 장치 큐
: 스케쥴링큐와 준비완료 큐는 한개씩 밖에 존재할수 없는데 반해, 장치 큐는 여러개가 존재할수 있다.
# 큐잉 도표(Queueing diagram)
: 프로세스 스케줄링의 공통적인 표현 방식
- 사각형 : 하나의 큐 (ready큐와 장치 큐들의 집합)
- 원 : 큐를 서비스 하는 자원
- 화살표 : 프로세스 흐름
<원리>
1) 새로운 프로세스가 처음에 ready 큐에 위치
2) CPU 할당(dispatch) 받을때까지 대기
3) 할당 받아 실행. => 3가지 사건중 하나 발생
(입출력 요청 / 새로운 자식 프로세스 생성 / 인터럽트 결과로 인해 CPU서 제거후 다시 ready큐로 위치)
[스케줄러(Schedulers)]
: 큐에 있는 프로세스들 선택 절차 수행
- 단기 스케줄러(Short-term scheduler) : CPU 스케줄러
: ready Queue에 대기하는 거중 다음으로 어떤걸 CPU로 실행할지 선택하는 역할.
- 장기 스케줄러(Long-term scheduler) : Job 스케줄러
: 즉시 실행되지 않을꺼라 디스크에 저장되어 대기중인 프로세스들중 선택해 실행 위해 메모리에 적재하는 역할.
: 시스템 전체 부하 조절(controls the degree of multiprogramming)
1) 입출력 중심 프로세스(I/O-bound process) : 연산보다 입출력 실행에 더 많은 시간을 소요하는 프로세스
2) CPU 중심 프로세스(CPU-bound process) : 입출력보다 연산에 더 많은 시간을 소요하는 프로세스
* 장기스케줄러는 입출력 중심과 CPU중심 프로세스들의 적절한 프로세스 혼합(process mix)를 선택해야함.
- 중기 스케줄러(Medium-term scheduler)
: 스와핑(swapping)
: 정식 프로세스들을 실행하다 부하가 발생하면,
wait나 ready상태의 프로세스들을 대용량 메모리(disk)로 보냈다가, 차후 불러와 중단지점부터 실행 재개
=> 부하조절목적. 다중 프로그래밍의 완성도를 높임
[문맥 교환(Context Switch)]
: CPU가 다른 프로세스로 바꿀때, 실행중이던 프로세스의 상태를 저장하고, 새로 가져올 프로세스의 상태를 로드하는것.
- 문맥 교환중에는 다른 유용한 실행이 불가능하니 최대한 짧게 수행되어야한다(하드웨어 성능)
======
[2-2정리]
- 프로세스 스케줄러
- 스케줄링 큐 3가지
- 스케줄러 3가지
- 문맥교환
======
'기타 > [운영체제]' 카테고리의 다른 글
4-1장. 스레드 (0) | 2019.04.05 |
---|---|
3-3장. 프로세스에 대한 연산 (0) | 2019.03.29 |
3-1장. 프로세스 개념 (0) | 2019.03.27 |
[운영체제 2장 요약](작성중) (0) | 2019.03.27 |
2-10장. 시스템 부트 (0) | 2019.03.24 |