4-2.[os] 스케줄링 시고려 사항

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

  • 선점 - 빼앗을 수 있음
  • 비선점 - 빼앗을 수 없음

  • 선점형 스케줄링(preemptive scheduling): 어떤 프로세스가 CPU를 할당받아 실행 중이더라도 운영체제가 CPU를 강제로 빼앗을 수 있는 스케줄링 방식

  • 비선점형 스케줄링(non-preemptive scheduling): 어떤 프로세스가 CPU를 점유하면 다른 프로세스가 이를 빼앗을 수 없는 스케줄링 방식이다


선점형 스케줄링

  • 운영체제가 필요하다고 판단하면 실행 상태에 있는 프로세스의 작업을 중단시키고 새로운 작업을 시작할 수 있다.

  • ex) 인터럽트 - 현재 실행 중인 작업을 중단하고 커널을 깨워서 인터럽트를 처리, 완료되면 원래의 작업으로 돌아감

  • 단점:

    • 문맥 교환 - 낭비가 생김
  • 하나의 프로세스가 CPU를 독점할 수 없기 때문에 빠른 응답시간을 요구하는 대화형 시스템이나 시분할 시스템에 적합
  • 대부분의 저수준 스케줄링

비선점형 스케줄링

  • 어떤 프로세스가 실행 상태에 들어가 CPU를 사용하면 그 프로세스가 종료되거나 자발적으로 대기 상테에 들어가기 전까지는 계속 실행됨
  • 문맥교환에 의한 낭비가 적음
  • 단점:
    • 사용 시간이 긴 프로세스 때문에 CPU 사용 시간이 짧은 여러 프로세스가 오랫동안 기다리게 되어 전체 시스템의 처리율이 떨어짐
  • 과거의 일괄 작업 시스템에서 사용

선점형과 비선점형이 혼재하는 경우: 비선점형의 중요도를 낫게 설정

image.png


프로세스 우선순위

  • 우선순위: 프로세스의 중요도가 다르다
  • 커널 프로세스 > 일반 프로세스
  • 더 빨리 자주 실행된다

  • 일반 프로세스 우선순위 조절 가능

  • 관리자는 우선순위를 높일 수있고, 일반계정은 낮추는 것만 가능

image.png

  • 우선순위를 조절하면 해당 프로세스 뿐만 아니라 다른 프로세스 실행 속도에도 영향을 미침
  • 비디오 플레이어 우선 순위를 너무 높이면 다른 작업이 원활하게 이루어지지 않는다

  • 우선순위가 높은 프로세스가 CPU를 먼저, 더 오래 차지함


CPU 집중 프로세스와 입출력 집중 프로세스

  • 준비 상태: CPU를 할당받기 위해 기다리는 상태
  • 실행 상태: CPU를 사용하여 작업을 하는 상태
  • 대기 상태: 입출력을 요청하여 완료되기까지 기다리는 상태
  • 실제 작업이 일어나는 것 - 실행 상태, 대기 상태

  • CPU 버스트(CPU burst): CPU를 할당받아 실행하는 작업

  • 입출력 버스트(I/O burst): 입출력 작업

image.png

  • CPU 집중 프로세스: 수학 연산과 같이 CPU를 많이 사용하는 프로세스, CPU 버스트가 많은 프로세스
  • 입출력 집중 프로세스: 저장장치에서 데이터를 복사하는 일과 같이 입출력을 많이 사용하는 프로세스, 입출력 버스트가 많은 프로세스

  • 입출력 집중 프로세스를 먼저 실행!

  • 입출력 요구에 의해 대기 상태로 옮겨지기 때문에 다른 프로세스가 CPU 사용 가능, 효율적
  • CPU 집중 프로세스가 먼저 실행되면

image.png

사이클 훔치기(cycle stealing): 입출력 집중 프로세스가 CPU 집중 프로세스보다 실행 상태에 먼저 들어가는 경우


전면 프로세스와 후면 프로세스

전면 프로세스:

  • GUI를 사용하는 운영체제에서 화면의 맨 앞에 놓인 프로세스
  • 현재 입출력을 사용하는 프로세스
  • = 상호작용 프로세스: 사용자와 상호작용이 가능

후면 프로세스:

  • 사용자와 상호작용이 없는 프로세스
  • = 일관 작업 프로세스: 압축 프로그램처럼 사용자의 입력이 없이 작동

image.png

전면 프로세스: 웹 브라우저

  • 사용자의 요구에 즉각 반응해야함
  • 운영체제로부터 키보드와 화면에 대한 허가를 받음 후면 프로세스: 한글

image.png

우선순위 ↑

  • 커널 프로세스
  • 전면 프로세스
  • 대화형 프로세스
  • 입출력 집중 프로세스

우선순위 ↓

  • 일반 프로세스
  • 후면 프로세스
  • 일괄 작업 프로세스
  • CPU 집중 프로세스

Did you find this article valuable?

Support Software Engineer at Your Service by becoming a sponsor. Any amount is appreciated!