
모든 프로세스는 운영체제로부터 자원을 할당받는다. 프로세스마다 필요하는 자원이 각자 다르지만 모든 프로세스가 공통으로 사용하는 자원이 있다면 그건 CPU !!
프로세스에게 CPU를 어떤식으로 할당해야 가장 효율적일까? 요청한 순서대로 나눠주는 것은 좋은 방식이 아니다. 프로세스마다 우선순위가 다르기 때문이다.
상황에 맞게, 중요도에 맞게 프로세스가 CPU를 이용할 수 있도록 운영체제는 각 프로세스의 PCB에 우선순위를 명시하고 그를 기준으로 먼저 처리할 프로세스를 결정한다.
ps -el 명령어를 통해 확인이 가능하다.
nice명령을 통해 우선순위를 조정할 수 있다.CPU를 사용할 다음 프로세스를 찾기위해 모든 PCB를 뒤져서 우선순위가 높은 프로세스를 찾는 것은 매우 비효율적이다.
그래서 운영체제는 프로세스들을 줄을 세워 관리한다. ⇒ 스케줄링 큐로 구현

프로세스 스케줄링은 CPU와 같은 자원을 효율적으로 사용하고, 프로세스의 공정한 실행을 보장하기 위해 필요하다
선점 스케줄링은 현재 실행 중인 프로세스를 중단하고, 더 높은 우선순위의 프로세스에 CPU를 할당하는 방식이다. 실시간 시스템과 같이 응답 속도가 중요한 환경에서 주로 사용된다.
비선점 스케줄링은 프로세스가 자발적으로 종료하거나 입출력 요청이 있을 때만 CPU를 다른 프로세스에 할당하는 방식이다. 배치 작업 등 긴급성이 낮은 시스템에 적합하다.
👇🏻 위의 CPU 스케줄링 알고리즘을 시각화해서 보고 싶다면 아래 링크에서 확인해보자
OS CPU SCHEDULING ALGORITHM VISUALISER

💡 기아현상(상태)이란 뭘까?
기아 현상(Starvation)은 운영체제의 스케줄링 과정에서 우선순위가 낮은 프로세스가 무한정 대기하게 되는 문제를 의미한다. 특히 시스템 부하가 많을 때 발생하기 쉬운데 이로 인해 낮은 우선순위의 프로세스가 CPU를 계속 배정받지 못하고 대기하는 상황이 지속될 수 있다.해결 방안 → 에이징(Aging) 기법
- 에이징(Aging)은 오랫동안 대기 중인 프로세스의 우선순위를 점진적으로 높이는 기법으로, 기아 현상을 해결하는 주요 방법.
- 이 기법을 사용하면 초기 우선순위가 낮았던 프로세스도 시간이 지남에 따라 우선순위가 높아져 결국 CPU 할당을 받을 수 있다.
- 일정한 시간마다 대기 중인 프로세스의 우선순위를 한 단계씩 올려줘서 특정 프로세스가 무한정 대기하지 않도록 한다.