4-2.[os] 스케줄링 시고려 사항
선점형 스케줄링과 비선점형 스케줄링
- 선점 - 빼앗을 수 있음
- 비선점 - 빼앗을 수 없음
선점형 스케줄링(preemptive scheduling): 어떤 프로세스가 CPU를 할당받아 실행 중이더라도 운영체제가 CPU를 강제로 빼앗을 수 있는 스케줄링 방식
비선점형 스케줄링(non-preemptive scheduling): 어떤 프로세스가 CPU를 점유하면 다른 프로세스가 이를 빼앗을 수 없는 스케줄링 방식이다
선점형 스케줄링
운영체제가 필요하다고 판단하면 실행 상태에 있는 프로세스의 작업을 중단시키고 새로운 작업을 시작할 수 있다.
ex) 인터럽트 - 현재 실행 중인 작업을 중단하고 커널을 깨워서 인터럽트를 처리, 완료되면 원래의 작업으로 돌아감
단점:
- 문맥 교환 - 낭비가 생김
- 하나의 프로세스가 CPU를 독점할 수 없기 때문에 빠른 응답시간을 요구하는 대화형 시스템이나 시분할 시스템에 적합
- 대부분의 저수준 스케줄링
비선점형 스케줄링
- 어떤 프로세스가 실행 상태에 들어가 CPU를 사용하면 그 프로세스가 종료되거나 자발적으로 대기 상테에 들어가기 전까지는 계속 실행됨
- 문맥교환에 의한 낭비가 적음
- 단점:
- 사용 시간이 긴 프로세스 때문에 CPU 사용 시간이 짧은 여러 프로세스가 오랫동안 기다리게 되어 전체 시스템의 처리율이 떨어짐
- 과거의 일괄 작업 시스템에서 사용
선점형과 비선점형이 혼재하는 경우: 비선점형의 중요도를 낫게 설정
프로세스 우선순위
- 우선순위: 프로세스의 중요도가 다르다
- 커널 프로세스 > 일반 프로세스
더 빨리 자주 실행된다
일반 프로세스 우선순위 조절 가능
- 관리자는 우선순위를 높일 수있고, 일반계정은 낮추는 것만 가능
- 우선순위를 조절하면 해당 프로세스 뿐만 아니라 다른 프로세스 실행 속도에도 영향을 미침
비디오 플레이어 우선 순위를 너무 높이면 다른 작업이 원활하게 이루어지지 않는다
우선순위가 높은 프로세스가 CPU를 먼저, 더 오래 차지함
CPU 집중 프로세스와 입출력 집중 프로세스
- 준비 상태: CPU를 할당받기 위해 기다리는 상태
- 실행 상태: CPU를 사용하여 작업을 하는 상태
- 대기 상태: 입출력을 요청하여 완료되기까지 기다리는 상태
실제 작업이 일어나는 것 - 실행 상태, 대기 상태
CPU 버스트(CPU burst): CPU를 할당받아 실행하는 작업
- 입출력 버스트(I/O burst): 입출력 작업
- CPU 집중 프로세스: 수학 연산과 같이 CPU를 많이 사용하는 프로세스, CPU 버스트가 많은 프로세스
입출력 집중 프로세스: 저장장치에서 데이터를 복사하는 일과 같이 입출력을 많이 사용하는 프로세스, 입출력 버스트가 많은 프로세스
입출력 집중 프로세스를 먼저 실행!
- 입출력 요구에 의해 대기 상태로 옮겨지기 때문에 다른 프로세스가 CPU 사용 가능, 효율적
- CPU 집중 프로세스가 먼저 실행되면
사이클 훔치기(cycle stealing): 입출력 집중 프로세스가 CPU 집중 프로세스보다 실행 상태에 먼저 들어가는 경우
전면 프로세스와 후면 프로세스
전면 프로세스:
- GUI를 사용하는 운영체제에서 화면의 맨 앞에 놓인 프로세스
- 현재 입출력을 사용하는 프로세스
- = 상호작용 프로세스: 사용자와 상호작용이 가능
후면 프로세스:
- 사용자와 상호작용이 없는 프로세스
- = 일관 작업 프로세스: 압축 프로그램처럼 사용자의 입력이 없이 작동
전면 프로세스: 웹 브라우저
- 사용자의 요구에 즉각 반응해야함
- 운영체제로부터 키보드와 화면에 대한 허가를 받음 후면 프로세스: 한글
우선순위 ↑
- 커널 프로세스
- 전면 프로세스
- 대화형 프로세스
- 입출력 집중 프로세스
우선순위 ↓
- 일반 프로세스
- 후면 프로세스
- 일괄 작업 프로세스
- CPU 집중 프로세스