CPU 스케줄러

• 어떤 프로세스에 CPU 자원을 할당할지 결정하는 운영체제 커널의 모듈

• 프로세스를 선택할 때에는 응답시간/처리량/효율성 등을 증대시킬 수 있는 방법을 고려해야 한다.

    ◦  응답시간 : 첫 응답이 나올 때 까지 걸리는 시간

    ◦  처리량 : 단위 시간 내에 완료시켜준 프로세스가 몇 개인지

    ◦  효율성 : 문맥교환이 적절히 일어나는지

 

 

장기 스케줄링

• 어떤 프로세스를 Ready Queue 에 삽입할지 결정하는 작업

    ◦  작업 스케줄링이라 부르기도 한다.

    ◦  디스크에서 어떤 프로그램을 가져와 커널(Ready Queue)에 등록할지 결정하는 작업

       -  디스크에서 가져온 프로그램을 커널에 등록하면 프로세스가 된다.

    ◦  새로운 프로세스 생성 단계 (new)

 

• 메모리에 동시에 올라가 있는 프로세스의 수를 조절하는 작업도 포함

• 호출 빈도수가 적기 때문에 상대적으로 속도가 느린 것이 허용된다.

 

• 요즘 운영체제에서는 잘 사용하지 않는다.

    ◦  과거에는 메모리 크기가 작아 너무 많은 프로세스가 커널에 올라오면 프로세스당 할당해줄 수 있는 메모리가 적어졌기 때문에,

         이를 해결하기 위해 장기 스케줄링이 사용되었다.

    ◦  요즘은 하드웨어가 발달해 메모리를 신경 쓸 필요가 없어졌다. 프로세스가 시작되면 장기 스케줄링을 거치지 않고 바로 메모리를

         할당받은 다음 Ready Queue 에 들어간다.


단기 스케줄링

• Ready Queue 에 있는 프로세스 중 무엇을 다음 번에 실행 상태로 만들 것인지 결정하는 작업

    ◦  CPU 스케줄링이라 부르기도 하며, 일반적으로 스케줄러라 함은 단기 스케줄러를 의미한다.

    ◦  미리 정해둔 스케줄링 알고리즘에 따라 CPU를 할당할 프로세스를 선택한다.

    ◦  프로세스 준비 단계 (new → ready)

• ms 이하의 시간 단위로 매우 빈번하게 호출되기 때문에 수행 속도가 충분히 빨라야 한다.


중기 스케줄링

• 메모리에 적재된 프로세스의 수를 관리하는 작업

    ◦  장기 스케줄러와 역할이 비슷하다.

    ◦  필요한 이유 : 메모리에 너무 많은 수의 프로세스가 적재되면 프로세스 당 보유하고 있는 메모리량이 극도로 적어지면서

                             디스크 I/O 가 수시로 발생하게 되는데, 이는 심각한 시스템 성능 저하를 초래한다.

 

• 스왑 아웃(swap out)

    ◦  메모리에 올라와 있는 일부 프로세스에서 메모리를 통째로 빼앗아 디스크의 스왑 영역에 저장하는 행위

    ◦  봉쇄 상태의 프로세스가 제일 먼저 스왑 아웃 대상이 된다.

       -  봉쇄 상태의 프로세스는 당장 CPU를 획득할 가능성이 없기 때문

    ◦  그 다음으로 타이머 인터럽트가 발생해 Ready Queue 로 이동하는 프로세스가 스왑 아웃 대상이 된다.

 

• 중기 스케줄러의 등장으로 프로세스의 상태에 Suspended 상태가 추가 되었다.

    ◦  메모리를 통째로 빼앗기고 디스크로 스왑 아웃된 상태를 의미

       -  Suspended Blocked : 봉쇄 상태에 있던 프로세스가 디스크로 스왑 아웃

       -  Suspended Ready : 준비 상태에 있던 프로세스가 디스크로 스왑 아웃

       -  Suspended Blocked 상태가 특정 조건을 만족하면 Suspended Ready 상태가 된다.


디스패처

• CPU 코어의 제어를 CPU 스케줄러가 선택한 프로세스에 주는 모듈

• 디스패치

    ◦  준비 리스트에 있던 프로세스 중 하나를 선택(스케쥴링)해 실행하는 것

    ◦  이 때 Context Switching이 일어난다.

       -  자발적 문맥 교환 : 사용 불가능한 자원(blocked 등)을 요청했으므로 프로세스가 CPU 사용을 포기

       -  비자발적 문맥 교환 : 시간 제한이 만료되었거나 우선순위가 더 높은 프로세스에 의해 CPU를 뺏김

• 프로세스 Context Switching 이 일어날 때 마다 디스패처가 호출되므로, 가능한 빠르게 수행되어야 한다.

• 디스패처가 하나의 프로세스를 정지하고 다른 프로세스의 수행을 시작하는데 까지 소요되는 시간을 디스패치 지연(Dispatch Latency)

    이라고 부른다.


참고자료

 

운영체제 - YES24

운영체제

www.yes24.com

 

[운영체제] 장기 스케줄링, 중기 스케줄링, 단기 스케줄링

처리기 스케줄링의 유형 1. 처리기 스케줄링의 목적 : 응답시간, 처리량, 효율성을 증대시키기 위해 처리기...

blog.naver.com

 

[운영체제] 프로세스 스케줄러(단기,중기,장기)

이번 시간에는 스케줄러에 대해 공부해 보겠습니다. 스케줄러란 어떤 프로세스에게 자원을 할당할지를 결정하는 운영체제 커널의 모듈을 지칭합니다. 스케줄러에는 장기, 단기, 중기 스케줄러

kosaf04pyh.tistory.com

 

'CS Knowledge > 운영체제' 카테고리의 다른 글

[OS] 인터럽트 개념과 이중모드  (0) 2022.09.16
[OS] CPU 스케줄링 알고리즘  (0) 2022.09.16
[OS] 스레드와 멀티스레드  (0) 2022.09.08
[OS] 프로세스와 Context Switching  (0) 2022.09.08
[OS] 운영체제 구조  (0) 2022.09.07