CPU 스케줄러의 역할은 준비 큐에 있는 프로세스 중에서 선택된 하나의 프로세스에 CPU 코어를 할당하는 것입니다.
단기 스케쥴러 : CPU스케줄러라고도 하며 준비 상태의 프로세스 중에서 어 프로세스를 다음 번에 실행 상태로 만들 것인지를 결정합니다. 시분한 시스템에서 타이머 인터럽트가 발생하면 단기 스케줄러가 호출됩니다.
단기 스케줄러는 미리 정한 스케줄링 알고리즘에 따라 cpu를 할당 할 프로세스를 선택합니다.
중기 스케쥴러 : 메모리에 적재된 프로세스의 수를 동적으로 조절하기 위해 추가된 스케줄러 입니다.
만약 메모리에 많은 수의 프로세스가 적재되어 프로세스 당 보유하고 있는 메모리량이 극도로 적어지게 되면 CPU 수행에 당장 필요한 프로세스의 주소 공간조차도 메모리에 올려놓기 어려운 상황이 발생하게 됩니다 그렇게 되면 디스크 I/O가 수시로 발생하게 되어 시스템의 성능이 심각하게 저하될 수 있습니다. 이런 경우 메모리에 올라와 있는 프로세스 중 일부로 부터 메모리를 통째로 빼앗아 그 내용을 디스크의 스왑 영역에 저장해 둡니다. 이와 같은 행위를 스왑 아웃(swap out)이라고 합니다.
디스크로 스왑 아웃시켜야 하는 경우 봉쇄 상태에 있는 프로세스들을 첫번째로 스왑 아웃 시킵니다. 이유는 봉쇄 상태의 프로세스들은 당장 CPU를 획득할 가능성이 없기 때문 입니다.
봉쇄 상태의 프로세스들을 스왑 아웃시켜도 문제가 해결되지 않는 경우 중기 스케줄러는 타이머 인터럽트가 발생해 준비 큐로 이동하는 프로세스를 추가적으로 스왑아웃 시킵니다. 중기 스케줄러는 이러한 방식으로 장기 스케줄러와 마찬가지로 메모리에 올라와 있는 프로세스의 수를 조절하는 역할을 합니다.
중기 스케줄러의 등장으로 프로세스의 상태에는 중지(suspenden, stopped) 상태가 추가 되었으며 중지 상태의 프로세스는 메모리를 통째로 빼앗기고 디스크로 스왑 아웃된다. 중지 상태는 중지 준비 상태와 봉쇄 중지 상태가 있다.
- 중지 준비(suspenden ready) : 준비 상태의 프로세스가 중기 스케줄러에 의해 디스크로 swap out
- 봉쇄 중지(suspenden block) : 봉쇄 상태의 프로세스가 중기 스케줄러에 의해 디스크로 swap out
장기 스케쥴러 : 어떤 프로세스를 Ready 큐에 삽입할지를 결정하는 역할을 합니다.
장기 스케줄러는 수십 초 내지 수 분 단위로 가끔 호출되기 때문에 상대적으로 속도가 느린 것이 허용됩니다. 또한 장기 스케줄러는 메모리에 동시에 올라가 있는 프로세스의 수를 조절하는 역할을 합니다.
하지만 현대의 시분할 시스템에서 사용되는 운영 체제에는 일반적으로 장기 스케줄러를 두지 않는 경우가 대부분입니다. 현대의 운영체제 에서는 프로세스가 시작되면 장기 스케줄러 없이 바로 그 프로세스에 메모리를 할당해 준비 큐에 넣어주게 됩니다.
https://kosaf04pyh.tistory.com/191
- 단기 스케줄링 (Short-Term Scheduling):
- CPU의 실행을 담당하는 것으로, 프로세스가 어떤 순서로 CPU를 할당받을지를 결정합니다.
- 주로 라운드 로빈(Round Robin)이나 우선 순위(Priority) 스케줄링 알고리즘이 사용됩니다.
- 중기 스케줄링 (Medium-Term Scheduling):
- 메모리에 적재되어 있는 프로세스들 중 어떤 것이 메모리에서 제거되고, 어떤 것이 저장 장치로 이동되는지를 관리합니다.
- 주로 스왑(Swapping)이나 페이지 교체(Page Replacement) 알고리즘이 사용됩니다.
- 장기 스케줄링 (Long-Term Scheduling):
- 새로운 프로세스가 시스템에 들어오는 것을 관리합니다.
- 프로세스를 디스크에서 메모리로 적재하는 것을 담당하며, 이를 위해 디스크 스케줄링과 같은 기법이 사용될 수 있습니다.
"프로세스의 스케줄링 상태"와 "프로세스 상태"는 보통 같은 의미로 사용되며, 프로세스의 동작을 관리하고 제어하는 데 사용됩니다. 이러한 상태는 스케줄러에 의해 관리되며, 스케줄러는 각 상태에서 어떤 프로세스가 CPU를 할당받을지, 어떤 프로세스가 차단 상태에 들어갈지 등을 결정합니다.
프로세스의 상태는 프로세스가 시스템 내에서 어떤 상태에 있는지를 나타내는 것이며, 이러한 상태는 스케줄러에 의해 관리됩니다. 일반적으로 프로세스의 상태는 "대기 상태(Ready)", "실행 상태(Running)", "차단 상태(Blocked 또는 Waiting)", "종료 상태(Terminated)" 등으로 구분됩니다.
비선점 스케쥴러의 경우 2. 수행 → 준비 3. 대기 → 준비 상황은 수행되지 않는다. 왜냐하면 프로세스를 강제로 수행에서 준비 및 대기에서 준비 상황으로 보내는 것이 아닌 자발적으로 실행이 보장되기 때문이다. 선점형은 모든 상황을 수행한다.
#6 운영체제 스케줄링 알고리즘 | 선점형과 비선점형 (velog.io)
- 페이지 폴트 (Page Fault):
- 가상 메모리 시스템에서는 페이지 폴트가 발생합니다. 페이지 폴트란 필요한 페이지가 현재 메모리에 없어서 디스크로부터 해당 페이지를 가져와야 하는 상황을 의미합니다.
- 스왑 아웃 (Swapping Out):
- 운영 체제는 현재 메모리에 있는 프로세스 중 일부를 디스크로 스왑 아웃시켜 더 많은 공간을 마련할 수 있습니다.
- 스왑 아웃된 프로세스는 디스크에 저장되며, 필요할 때 스왑 인(다시 메모리로 가져오기)됩니다.
- 페이지 교체 (Page Replacement):
- 메모리가 부족한 경우 운영 체제는 어떤 페이지를 내리고 새로운 페이지를 메모리에 올릴지를 결정하는 페이지 교체 알고리즘을 사용합니다.
- 대표적인 페이지 교체 알고리즘으로는 최적 페이지 교체(Optimal Page Replacement), FIFO(First-In-First-Out), LRU(Least Recently Used) 등이 있습니다.
- 메모리 확장 요청 (Memory Expansion Request):
- 프로세스는 추가 메모리를 요청할 수 있습니다. 이 경우, 운영 체제는 다른 프로세스의 메모리를 줄이거나, 필요한 경우 스왑 아웃을 통해 추가 메모리를 확보하려고 시도할 수 있습니다.
- Out of Memory (OOM) 상태:
- 메모리가 심각하게 부족한 경우, 운영 체제는 Out of Memory 상태로 이어질 수 있습니다. 이때는 보통 시스템이나 특정 프로세스를 중단하거나 강제 종료시키는 등의 대응이 이뤄질 수 있습니다.