School/컴퓨터시스템

CPU 스케줄링

응엉잉 2022. 4. 20. 00:29

CPU 스케줄링

여러 프로세스의 상황을 고려하여 CPU와 시스템 자원의 배정을 결정

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

구분 선점형 비선점형
작업방식 실행 상태에 있는 작업을 중단시키고 새로운 작업을 실행하는 것이 가능 어떤 프로세스가 실행 상태에 들어가 CPU를 사용하게 되면 해당 작업이 완료될때까지 다른 작업 불가능
장점 프로세스가 CPU를 독점할 수 없기 때문에 빠른 응답시간을 요구하는 대화형 시스템이나 시분할 시스템에 적합 CPU 스케줄러의 작업량이 적고, 문맥 교환의 오버헤드가 적음
단점 문맥 교환의 오버헤드가 많음 기다리는 프로세스가 많아 처리율 떨어짐
사용 시분할 방식 스케줄러에 사용 일괄 작업 방식 스케줄러에 사용
중요도 높음 낮음

 

프로세스 우선순위

커널 프로세스의 우선순위가 일반 프로세스보다 높음
우선순위가 높은 프로세스가 CPU를 먼저, 더 오래 차지

다중 큐

준비 상태의 다중 큐

CPU 스케줄러는 프로세스가 준비 상태에 들어올때마다 자신의 우선순위에 해당하는 큐의 마지막에 삽입

CPU 스케줄러는 우선순위가 가장 높은 0번 큐의 맨 앞에 있는 프로세스 6에 CPU 할당, 디스패치 명령어 시행

프로세스의 우선순위를 배정하는 방식

고정 우선순위 방식 변동 우선순위 방식
- 운영체제가 프로세스에 우선순위를 부여하면 프로세스가 끝날때까지 바뀌지 않는 방식
- 프로세스가 작업하는 동안 우선순위가 변하지 않기 때문에 구현은 쉽지만, 변화하는 시스템 상황에 대비하기 어려워 작업효율이 떨어짐
- 프로세스 생성 시 부여받은 우선순위가 프로세스 작업 중간에 변하는 방식
- 구현은 어렵지만 시스템 효율성 높일 수 있음

대기 상태의 다중 큐

시스템 효율을 높이기 위해 대기상태에서는 같은 입출력을 요구한 프로세스끼리 모아둠

준비 큐 대기 큐
대기상태에서 한번에 하나의 프로세스를 꺼내어 CPU 할당 여러개의 PCB를 대기 상태에서 동시에 꺼내 준비상태로 옮김
대기큐에서 동시에 끝나는 인터럽트를 처리하기 위해 인터럽트 벡터라는 자료 구조 사용

 

 

스케줄링 알고리즘의 종류

비선점형 FCFS 스케줄링
선점형 라운드 로빈 스케줄링, 다단계 큐 스케줄링, 다단계 피드백 큐 스케줄링


스케줄링 알고리즘의 평가 기준 (참고만)
1) CPU 사용률 : 높을수록 좋음
CPU가 사용된 시간/전체 시스템의 동작시간
2) 처리량 : 클수록 좋음
단위 시간당 작업을 마친 프로세스의 수

FCFS 스케줄링

준비큐에 도착한 순서대로 CPU를 할당하는 비선점형 방식
한번 실행시 해당 프로세스가 끝나야 다음 프로세스 실행 가능
큐가 하나라 모든 프로세스의 우선순위가 동일

처리 시간이 긴 프로세스가 CPU를 차지하면 다른 프로세스는 하염없이 기다려야함 -> 시스템 효율이 떨어짐
현재 작업중인 프로세스가 입출력 작업을 요청하게 되면 해당 시간동안은 CPU가 작업하지 않기 때문에 작업 효율이 떨어짐

라운드 로빈 스케줄링

한 프로세스가 할당받은 시간(타임 슬라이스)동안 작업
-> 작업을 완료하지 못하면 준비큐의 맨 뒤로 가서 자기 차례를 기다리는 방식
프로세스들이 작업을 완료할때까지 계속 순환하며 실행
효과적으로 작동하려면 문맥 교환에 따른 추가 시간을 고려하여 타임 슬라이스를 적절히 설정해야 함

타임 슬라이스가 큰 경우 하나의 작업이 끝난 뒤 다음 작업이 시작되는것처럼 보임
-> FCFS 스케줄링과 다를게 없어보임
타임 슬라이스가 작은 경우 문맥 교환이 너무 자주 일어남
-> 문맥 교환에 걸리는 시간이 실제 작업시간보다 상대적으로 커짐
문맥교환에 너무 많은 시간을 낭비해서 실제 작업을 못함

타임 슬라이스를 되도록 작게 설정하되, 문맥 교환에 걸리는 시간을 고려하여 적당한 크기로 해야함

다단계 큐 스케줄링

우선순위에 따라 준비 큐를 여러개 사용하는 방식
프로세스는 운영체제로부터 부여받은 우선순위에 따라 해당 우선순위의 큐에 삽입
우선순위는 고정형 우선순위를 사용
상단 큐에 있는 모든 프로세스의 작업이 끝나야 다음 우선순위 큐의 작업이 시작

다단계 피드백 큐 스케줄링

프로세스가 CPU를 한번씩 할당받아 실행될때마다 프로세스의 우선순위를 낮춤
다단계 큐에서 우선순위가 낮은 프로세스의 실행이 연기되는 문제를 완화
우선순위가 낮아져도 커널 프로세스가 일반 프로세스의 큐에 삽입되지는 않음
우선순위가 낮아질수록 CPU를 얻을 확률이 적어지기 때문에 한번 CPU를 잡을 때 많이 작업하려고 낮은 우선순위의 타임 슬라이스를 크게 함

인터럽트 처리 과정

인터럽트 발생 시 현재 실행중인 프로세스는 일시정지
재시작하기 위해 현재 프로세스 관련 정보를 임시 저장
인터럽트 컨트롤러가 실행되어 인터럽트의 처리 순서 결정
먼저 처리할 인터럽트가 결정되면 인터럽트 벡터에 등록된 인터럽트 핸들러 실행
인터럽트 벡터에 연결된 핸들러가 인터럽트 처리를 마치면 일시정지된 프로세스가 다시 실행되거나 종료

* 인터럽트 핸들러 : 인터럽트 벡터에 등록되어있음. 인터럽트 처리 담당


'School > 컴퓨터시스템' 카테고리의 다른 글

자료구조  (0) 2022.04.20
프로세스 동기화  (0) 2022.04.20
스택, 큐, 덱  (0) 2022.04.19
스레드  (0) 2022.04.19
프로세스  (0) 2022.04.18