4.CPU스케줄링
운영체제에서 cpu와 시스템 자원을 배덩하고 결정하는 일을 cpu스케줄러가 담당한다.
고수준 스케줄링
시스템 내 전체 작업 수 조절
장기 스케줄링,작업 스케줄링, 승인 스케줄링 이라고도 한다.
생성->준비(메모리)->실행
->준비보류(swap)
중간수준 스케줄링
보류(메모리->swap)와 활성화(swap->메모리)로 전체 시스템의 활성화된 프로세스 수를 조절하여 과부하를 막는다,
저수준 스케줄링이 원만하게 이루어지도록 완충하는 역할을 한다.
저수준 스케줄링
어떤 프로세스에 cpu를 할당할지, 대기 상태로 보낼지 등 결정
짧은 시간에 일어나 단기 스케줄링이라고도 한다.
- 선점형 스케줄링
- 비선점형 스케줄링:끝나야 다음이 실행된다.
- CPU집중 프로세스: CPU 차지가 많아 프로세스 작업이 더딤.
- 입출력 집중 프로세스:CPU 차지가 더 적어 프로세스 작업이 원활.
- 전면 프로세스(foreground): 사용자와 상호작용이 가능해 상호작용 프로세스라고도 함. 사용자와의 응답성을 높여줘야 하기 때문에 우선순위가 더 높다.
- 후면 프로세스(daemon): 사용자 입력 없이 작동하여 일괄 작업 프로세스라고도 함.
준비 상태의 다중 큐
단순 우선순위로 CPU가 할당되어 무한 연기가 발생할 수 있다.
반전 우선 순위가 필요한 이유이다.(우선순위 역전_priority inversion)
고정 우선순위 방식(바뀌지않는),변동 우선순위 방식의 결정 방식들이 있다.
반전 우선순위는 변동 우선순위에 해당된다.
대기 상태의 다중 큐
시스템 효율높이기 위해 대기 상태에서 같은 입출력을 요구하는 프로세스끼리 모아놓음.(입출력이 끝났을떄 인터럽트 발생->준비상태로 함께 묶여 맞는 우선순위에 할당된다.)
스케줄링 알고리즘 선택기준
비선정형 알고리즘-FCFS스케줄링(도착한 순서),SJF 스케줄링(큐에 여러 작업들 중 최단 작업 먼저 실행), HRN스케줄링
선점형 알고리즘- 라운드 로빈 스케줄링,SRT스케줄링(뺏기고 남은 프로세스 시간이 적은 것부터),다단계 큐 스케줄링(다중 큐 응용)
둘다 가능-우선순위 스케줄링
SJF스케줄링은 작업 시간이 길다는 이유만으로 뒤로 계속 밀리는 상황이 발생할 수 있다 = 기아 현상
에이징(나이 먹기) 로 프로세스가 양보할 수 있는 상한선을(나이) 정해 기아 현상을 완화 한다.
라운드 로빈 스케줄링
한 프로세스가 할당 받은 시간(타임 슬라이스) 동안 작업을 하다가 작업을 완료하지 못하면 준비큐 맨뒤로가 차례를 기다리는 방식. 프로세스들이 작업을 완료할 때까지 계속 순환하면서 실행.
SRT : 남은 시간 비교의 문맥교환이 필요하므로 SJF 스케줄링에는 없는 작업이 추가가 된다.(주기적계산필요)
운영체제가 프로세스의 종료 시간을 예측하기 어렵고 기아 현상이 일어나기 때문에 잘 사용하지 않는다.
다단계 큐
다단계 피드백 큐
폴링(Polling): CPU가 모든 입출력에 관여하는데 장치관리자에 데이터가 있는지 계속 관리해 메모리에 넣으려는 작업->직접 주기적 확인하는 방식을 말한다.
인터럽트: 폴링과 반대로 입출력이 완료되면 이벤트를 발생시켜 CPU에게 알리는 것.->CPU가 다른 자기 일을 할 수 있게 된다.
인터럽트 핸들모드(이중모드)
커널모드: 운영체제와 관련된 커널 프로세스가 실행되는 상태(시스템 호출 실행이 포함됨.)
사용자모드
이중모드:자원을 보호