📗 BOOK/혼자 공부하는 컴퓨터구조+운영체제

혼자 공부하는 컴퓨터 구조+운영체제 11장 정리

미미누 2024. 7. 27. 21:22

 

CPU 스케줄링

  • 운영체제가 프로세스들에게 공정하고, 합리적으로 CPU 자원을 배분하는 것을 CPU 스케줄링이라고 한다 .

프로세스 우선순위

  • 프로세스마다 우선순위가 다르다.
  • 우선순위가 높은 프로세스란 빨리 처리해야 하는 프로세스들을 의미한다.
  • 입출력 작업이 많은 프로세스를 입출력 집중 프로세스라고 한다.
  • CPU 작업이 많은 프로세스를 CPU 집중 프로세스라고 한다.
  • 입출력 프로세스는 입출력을 위한 대기 상태에 더 많이 머문다.
  • CPU 집중 프로세스는 대기 상태보다는 실행 상태에 더 많이 머문다.
  • CPU를 이용하는 작업을 CPU 버스트라고 하고, 입출력장치를 기다리는 작업을 입출력 버스트라고 한다.
  • 운영체제는 프로세스마다 우선순위를 부여한다. 운영체제는 각 프로세스의 PCB에 우선순위를 명시하고, PCB에 적힌 우선순위를 기준으로 먼저 처리할 프로세스를 결정한다.

스케줄링 큐

  • CPU를 사용하고 싶은 프로세스들은, 메모리에 적재되고 싶은 프로세스들, 특정 입출력 장치를 사용하고 싶은 프로세스들을 모두 줄 세운다. 이 줄을 운영체제는 스케줄링 큐로 관리한다.
  • 레디 큐는 CPU를 이용하고 싶은 프로세스들이 서는 줄을 의미한다.
  • 웨이팅 큐는 입출력장치를 이용하기 위해 대기 상태에 접어든 프로세스들이 서는 줄을 의미한다.

선점형과 비선점형 스케쥴링

  • 선점형 스케쥴링(preemptive scheduling)은 프로세스가 CPU를 비롯한 자원을 사용하고 있더라도, 운영체제가 프로세스로부터 자원을 강제로 빼앗아 다른 프로세스에 할당할 수 있는 스케줄링 방식
  • 정해진 시간을 모두 소비하여 타이머 인터럽트가 발생하면, 운영체제가 해당 프로세스로부터 CPU 자원을 빼앗아 다음 프로세스에 할당하는 방식은 선점형이다.
  • 비선점형 스케줄링(non-preemptive scheduling)이란 하나의 프로세스가 자원을 사용하고 있다면, 그 프로세스가 종료되거나 스스로 대기 상태에 접어들기 전까진 다른 프로세스가 끼어들 수 없는 스케줄링 방식이다.

스케줄링 알고리즘의 종류

  • 선입 선처리 스케줄링, FCFS 스케줄링이라고 부른다. 이는 단순 레디 큐에 삽입된 순서대로 프로세스들을 처리하는 비선점형 스케줄링 방식이다.
  • CPU를 오래 사용하는 프로세스가 먼저 도착하면, 다른 프로세스는 그 프로세스가 CPU를 사용하는 동안 무작정 기다리는 데, 이런 현상을 호위 효과라고 한다.

최단 작업 우선 스케줄링

  • 레디 큐에 삽입된 프로세스들 CPU 중 이용 시간의 길이가 가장 짧은 프로세스부터 실행하는 스케줄링 방식을 최단 작업 우선 스케줄링 혹은 SLF 스케줄링이라고 한다.

라운드 로빈 스케줄링

  • 라운드 로빈 스케줄링은 선입 선처리 스케줄링에 타임 슬라이스라는 개념이 더해진 스케줄링 방식이다.
  • 타임 슬라이스란 각 프로세스가 CPU를 사용할 수 있는 정해진 시간을 의마한다.
  • 라운드 로빈 스케줄링은 정해진 타임 슬라이스만큼의 시간 동안 돌아가면 CPU를 이용하는 선점형 스케줄링이다.

최소 잔여 시간 우선 스케줄링

  • 최소 잔여 시간 우선 스케줄링 혹은 SRT 스케줄링은 최단 작업 우선 스케줄링 알고리즘과 라운드 로빈 알고리즘을 합친 스케줄링 방식이다.
  • 최소 잔여 시간 우선 스케줄링에서 프로세스들은 정해진 타임 슬라이스만큼 CPU를 사용하되, CPU를 사용할 다음 프로세스로는 남아있는 작업 시간이 가장 적은 프로세스가 선택된다.

우선 순위 스케줄링

  • 우선순위 스케줄링은 프로세스들에 우선순위를 부여하고, 가장 높은 우선순위를 가진 프로세스부터 실행하는 스케줄링 알고리즘이다.
  • 우선순위가 높은 프로세스를 우선하여 처리하는 방식이기에 우선순위가 낮은 프로세스는 연기될 수 있다. 이를 기아(starvation) 현상이라고 한다.
  • 이를 방지하기 위한 방법으로 에이징이 있다. 오랫동안 대기한 프로세스의 우선순위를 점차 높이는 방식이다.

다단계 큐 스케줄링

  • 우선순위별로 레디 큐를 여러 개 사용하는 스케줄링이다.
  • 우선순위가 가장 높은 큐에 있는 프로세스들을 먼저 처리하고, 우선순위가 가장 높은 큐가 비어있으면 그다음 우선순위 큐에 있는 프로세스들을 처리한다.

다단계 피드백 큐 스케줄링

  • 프로세스들이 큐 사이를 이동할 수 있다는 점이다.
  • 새로 준비 된 프로세스가 있다면 우선 우선순위가 가장 높은 우선순위 큐에 삽입되고, 일정 시간 동안 실행된다.
  • 프로세스가 해당 큐에서 실행이 끝나지 않는다면 다음 우선순위 큐에 삽입되어 실행된다. (CPU를 오래 사용해야 하는 프로세스는 점차 우선순위가 낮아진다.)
  • 낮은 우선순위 큐에서 너무 오래 기다리고 있는 프로세스가 있다면, 점차 우선순위가 높은 큐로 이동하는 에이징 기법을 적용하여 스타베이션 예방 가능
  • 다단계 피드백 큐 스케줄링은 구현이 복잡하지만, 가장 일반적인 CPU 스케줄링 알고리즘으로 알려짐.