스케줄러(장기,단기,중기)

Chan Young Jeong·2023년 2월 3일
0

운영체제

목록 보기
2/11
post-thumbnail

스케줄링?

스케줄링은 여러 프로세스가 번갈아가며 사용하는 자원을 어떤 시점에 어떤 프로세스에게 자원을 할당할 지 결정하는 것입니다. 스케줄링 방법에 따라 프로세서(CPU)를 할당받을 프로세스를 결정하므로 스케줄링은 시스템의 성능에 직/간접적인 영향을 미칩니다.
역할과 목적에 따라 장기, 단기, 중기 스케줄러로 구분됩니다.

출처

장기 스케줄러(Ready 큐에 어떤 걸 넣을까?)

장기 스케줄러는 어느 작업부터 시스템 내의 자원들을 실제로 사용할 수 있도록 할지를 결정합니다. 디스크에 프로그램으로 있는 작업들 중 프로세스화 할 작업을 승인한다고 하여 승인 스케줄러라고도 하고 잡 스케줄러라고도 합니다.

(프로세스와 프로그램의 차이점, 프로세스의 상태에 대한 설명-> 여기 )

장기 스케줄러의 역할

아시다시피 프로세스가 되기 위해서는 메모리와 각종 시스템 자원을 할당 받아야 합니다. 그런데 옛날에는 메모리의 크기가 한정 되어 있었기 때문에 모든 작업을 메모리에 올릴 수가 없었습니다. 예를 들어 지금 수행해야할 작업이 10개인데 메모리의 크기가 작아 5개 밖에 못 올린다면, 10개 중에 메모리에 올릴 작업들을 선택해야 합니다. 이게 바로 장기 스케줄러가 하는 일입니다.
(그래서 장기스케줄러 혹은 잡 스케줄러라고도 불립니다.)

그리고 장기 스케줄러는 CPU bound process와/ IO bound process 사이의 균현을 유지해야 합니다. 프로세스들 중에는 CPU를 많이 사용하는 프로세스가 있고 , IO 작업을 많이 하는 프로세스가 있습니다. 당연히 비싼 CPU를 효율적으로 사용하기 위해서는 이 두 프로세스들을 균형적으로 선택해야 CPU가 노는 시간 없이 효율적으로 작동할 수 있습니다.

BUT

하지만 요즘에는 장기 스케줄러는 거의 없습니다. 왜냐하면 기술의 발달로 메모리의 크기도 늘어나고 가상 메모리 Management 기술 또한 발전하여 거의 메모리가 무한정(?)있는 것처럼 사용 가능하기 때문입니다. (물론, 실제로 무한은 아니지만) 그래서 요즘에는 장기 스케줄러의 역할이 필요 없어져 실행될 프로세스들은 거의 다 메모리에 올라오게 됩니다.

단기 스케줄러(누구한테 CPU를 할당할까?)

단기 스케줄러는 미리 정해져 있는 스케줄링 알고리즘에 따라 레디 큐에 있는 프로세스들 중 CPU를 할당할 프로세스를 고르는 역할을 합니다.

cf) Dispathcer : 단기 스케줄러가 선택한 프로세스를 CPU에 로드하는 역할을 한다.
프로세스의 레지스터를 적재하고(문맥교환), 운영체제 모드(Kernel Mode)에서 사용자 상태(User Mode)로 전환시켜주며 프로세스가 다시 시작할 때 사용자 프로그램이 올바른 위치를 찾을 수 있도록 한다.

중기 스케줄러(뭘 뺄까?)

CPU를 할당 받을 프로세스가 많을 경우 프로세스를 suspend 시킨후 메모리에서 디스크로 swap out한다. 메모리에 너무 많은 프로그램이 동시에 올라가는 것을 조절하는 스케줄러이다.

너무 많은 프로세스가 가상 메모리에 적재되면 하드디스크 입출력이 과다해져 시스템이 거의 멈추는 현상이 발생하는데 이를 Trashing 이라고 한다. 여기서 해결방법은 중기 스케줄러가 일부 프로세스를 메모리에서 몰아내고(Swap out), 시간이 흘러 메모리에 여유가 생기면 다시 적재(Swap in)하는 것이다. 그래서 중기 스케줄러를 다른 말로 스와퍼(Swapper)라고도 한다.

0개의 댓글