April 30, 2022
CPU 스케줄링
고수준 스케줄링 = 장기 스케줄링 = 작업 스케줄링 = 승인 스케줄링
중간 수준
저수준 = 단기 스케줄링
공평:모든 프로세스가 자원을 배정. 하지만 안정성과 효율성 위해 우선 순위 둔다.
선점형
비선점형
우선순위 높을수록 CPU 먼저 할당
⇒ 스케줄링시 우선순위를 입출력 집중 프로세스 > CPU 집중 프로세스 로 하면(cycle stealing) 효율 상승
프로세스가 우선순위에 따라 각 우선순위에 해당하는 큐에 들어감
방식
변동 우선 순위: 우선순위 변동 가능
동시에 여러 인터럽트가 끝날 수 있고, 그것을 처리하기 위해 인터럽트 벡터(인터럽트의 집합) 사용
대기 시간: 작업 시작 전까지 대기하는 시간
평균 대기 시간: 모든 프로세스의 대기 시간 합 / 프로세스 수
반환 시간: 프로세스 생성 및 종료 후 사용하던 자원 모두 반환 때까지 걸리는 시간
단점:현재 작업 중인 프로세스가 입출력 요청시 CPU가 작업하지 않고 쉬는 시간 많다 → 작업효율 저하
단점
단점: 타임슬라이스가 너무 크면 FCFS와 비슷, 너무 작으면 문맥교환에 시간 낭비 많음
유닉스에서는 타임슬라이스가 대략 100밀리초
CPU 사용하고 난 프로세스의 우선 순위가 낮아짐 → CPU 사용하고 난 프로세스는 원래의 큐가 아닌 우선 순위 하나 낮은 큐로 들어감
→ 우선 순위 낮은 프로세스의 실행 기회 확대
폴링과 대비되는 입출력 시스템. 입출력을 요청하고 입출력이 완료되면 이벤트를 발생시켜서 알림
동기 vs 비동기(명령어의 실행 vs 명령어와 무관) 로 나누는 관점
동기적 인터럽트 (= 사용자 인터럽트) : 프로세스가 실행 중인 명령어 때문에 발생
비동기적 인터럽트: 명령어와 무관하게 발생
인터럽트 번호 + 그 번호에 매칭된 함수(인터럽트 핸들러) 쌍
사용자 모드: 사용자 프로세스(실행 중인 프로그램)가 실행되는 상태
사용자 모드에서 커널의 기능(하드디스크 입출력, 프로세스 생성 등) 이용 위해 시스템 호출을 이용
사용자 프로세스는 시스템 호출 요청 후 대기 상태 되고, 커널 프로세스는 요청받은 작업 처리
이중 모드: 위와 같이 운영체제가 두 모드를 전환하며 일처리 하는 것