3-2장. 프로세스 스케줄링

기타/[운영체제]

2019. 3. 29. 16:34

[운영체제 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