[운영체제] CPU 스케줄링

Local Gaji·2023년 6월 19일
0

운영체제

목록 보기
6/15

CPU는 프로세스들을 돌아가면서 조금씩 처리한다. 근데 어느 프로세스부터 방문해야 할까?


🎈 프로세스 우선순위

CPU를 많이 써야하는 프로세스에 자주 방문한다

운영체제는 프로세스마다 중요도에 맞는 우선순위를 부여한다.
각각의 프로세스는 CPU와 입출력 장치를 사용하는 비중이 다른데,
CPU를 더 많이 사용하는 프로세스에 CPU를 더 많이 할당하는게 효율적이다.


🎈 스케줄링 큐

모든 프로세스의 PCB를 일일이 방문하면서 우선 순위를 계산하고 비교하는건 비효율적이므로 큐에 순서대로 넣어서 관리한다.

  • 준비큐 : CPU를 이용하고싶은 프로세스들
  • 대기큐 : 입출력장치를 이용하기 위해 대기상태에 접어든 프로세스들
    • 입출력장치마다 대기큐가 있음

대기 프로세스
입출력 완료 -> 완료 인터럽트 발생 -> 대기큐에서 완료된 PCB 찾기 -> PCB를 준비상태로 변경 -> 대기큐에서 준비큐로 이동시킴


🎈 선점형 / 비선점형 스케줄링

다른 급한 프로세스가 먼저 CPU를 사용하게 해달라고 요청한다.
요청을 들어주면 선점형, 안들어주면 비선점형이다.

  • 선점형 스케줄링
    • 운영체제가 프로세스 자원을 강제로 빼앗아 다른 프로세스에 할당할 수 있는 스케줄링 방식
    • 한 프로세스의 자원 독점을 막는다
    • 문맥 교환 과정에서 오버헤드 발생 가능
  • 비선점형 스케줄링
    • 프로세스가 종료되거나 스스로 대기상태가 되기 전까지 다른 프로세스가 끼어들 수 없는 스케줄링 방식
    • 모든 프로세스가 골고루 자원을 사용할 수 없음

0개의 댓글