본문 바로가기
Computer Science/Operating System

[운영체제OS]6. CPU 스케줄링-1

by ggyongi 2021. 3. 2.
반응형

********************************

##이 글은 제가 공부하고 있는 책을 요약해놓은 것이므로 본문 내용만 봐선 이해가 어려울 수 있습니다.

 

목차

1. CPU 스케줄러

2. 디스패처

3. 스케줄링의 성능 평가

********************************

 

CPU: 중앙처리장치. 프로그램 카운터(PC)라는 이름의 레지스터가 현재 CPU에서 수행할 코드의 메모리 주소값을 가지고 있게됨.

기계어 명령 3가지: CPU내에서 수행되는 명령/메모리 접근을 수행하는 명령/입출력을 동반하는 명령

CPU 내에서 수행되는 명령: 예로는 Add명령, 수행속도 매우 빠름

메모리 접근을 수행하는 명령: Load명령과 Store명령, 위 명령보단 느리지만 비교적 속도 빠름.

위의 두 명령은 일반명령에 해당.

입출력을 동반하는 명령: 키보드입력 또는 디스크에 파일로 저장하는 작업. 오랜 시간 소요. 특권명령.

 

프로그램 수행의 두가지 조합: CPU 버스트/ IO 버스트

CPU 버스트(burst): 사용자 프로그램이 CPU를 직접 가지고 빠른 명령을 수행하는 단계

I/O 버스트(burst): I/O 요청이 발생해 커널에 의해 입출력 작업을 진행하는 비교적 느린 단계

각 프로그램마다 CPU버스트와 I/O버스트가 차지하는 비율이 균일하지 않다. 

프로세스를 크게 I/O 바운드 프로세스CPU 바운드 프로세스로 나누어볼 수 있다.

I/O 바운드 프로세스(I/O bound process): I/O요청이 빈번해 CPU 버스트가 짧게 나타나는 프로세스. 주로 대화형 프로세스가 해당됨. 짧은 CPU버스트를 많이 가지고 있음.

CPU 바운드 프로세스(CPU bound process): I/O작업을 거의 수행하지 않아 CPU 버스트가 길게 나타나는 프로세스. 주로 계산 위주의 프로그램이 해당됨. 긴 CPU버스트로 구성.

시분할 시스템에서는 이와같이 CPU버스트가 균일하지 않은 다양한 프로그램이 공존하므로 효율적인 CPU스케줄링 기법이 반드시 필요. 대부분 프로세스는 다수의 짧은 CPU 버스트와 소수의 긴 CPU버스트로 구성됨. 즉, CPU를 한번에 오래 사용하기보다는 잠깐 사용하고 I/O작업을 수행하는 프로세스들이 많다. CPU 버스트가 짧은 프로세스는 대부분 대화형 작업이고 빠른 응답이 중요하기 때문에 CPU스케줄링을 할 때 CPU버스트가 짧은 프로세스에게 우선적으로 CPU를 부여함. 바꿔말하면 I/O바운드 프로세스의 우선순위를 높여준다. 이 경우 CPU를 잠깐 사용한 후 곧바로 I/O작업을 수행할 수 있으므로 I/O장치의 이용률이 높아진다. 

 

1. CPU 스케줄러

CPU 스케줄링이 필요한 경우

- 실행 상태에 있던 프로세스가 I/O 요청 등에 의해 봉쇄 상태로 바뀌는 경우

- 실행 상태에 있던 프로세스가 타이머 인터럽트 발생에 의해 준비 상태로 바뀌는 경우

- I/O 요청으로 봉쇄 상태에 있던 프로세스의 I/O 작업이 완료되어 인터럽트가 발생하고 그 결과 이 프로세스의 상태가 준비상태로 바뀌는 경우

- CPU에서 실행 상태에 있는 프로세스가 종료되는 경우

 

비선점형 방식: CPU를 획득한 프로세스가 스스로 CPU를 반납하기 전까지는 CPU를 빼앗기지 않는 방법.

선점형 방식: 프로세스로부터 강제로 빼앗을 수 있는 스케줄링 방법. 타이머 인터럽트가 대표적.

위의 4가지 경우중 1과 4가 비선점형, 2와 3이 선점형 스케줄링 방식.

 

2. 디스패처

디스패처: CPU 스케줄러가 선택한 프로세스에게 실제로 CPU를 이양하는 작업이 필요한데, 이 작업을 수행할 수 있도록 환경설정을 하는 운영체제의 코드. 프로세스의 문맥을 그 프로세스의 PCB에 저장하고 새롭게 선택된 프로세스의 문맥을 PCB로부터 복원한 후 그 프로세스에게 CPU를 넘기는 과정을 수행. 시스템모드를 사용자모드로 전환하여 사용자프로그램에게 CPU의 제어권을 넘김. 사용자 프로그램은 복원된 문맥 중 프로그램 카운터로부터 현재수행할 주소를 찾음.

디스패처 지연시간: 디스패처가 하나의 프로세스를 정지시키고 다른 프로세스에게 CPU를 전달하기까지 걸리는 시간. 대부분은 문맥교환과 오버헤드.

 

3. 스케줄링의 성능 평가 

시스템 관점의 지표 : CPU 이용률과 처리량

사용자 관점의 지표: 소요시간, 대기시간, 응답시간

CPU 이용률: 전체 시간 중 CPU가 일을 한 시간의 비율. CPU는 고비용자원이라 CPU 이용률은 시스템 성능과 밀접.

처리량: 주어진 시간동안 준비 큐에서 기다리고 있는 프로세스 중 몇개를 마쳤는지(CPU버스트를 완료한 프로세스 개수).

더많은 프로세스들이 CPU작업을 완료하기 위해서는 CPU버스트가 짧은 프로세스를 우선으로 하는 것이 유리.

소요시간: 프로세스가 CPU를 요청한 시점부터 자신이 원하는 만큼 CPU를 다 쓰고 CPU 버스트가 끝날 때까지 시간. 이는 해당 CPU 버스트가 완료될 때까지 소요된 시간으로, 프로그램이 시작해 종료하는 데까지 걸리는 시간이 아님을 주의.

CPU버스트는 여러개 있을 수 있고 하나의 프로세스라 하더라도 소요시간은 CPU버스트 수만큼 각각 별도로 측정.

대기시간: CPU 버스트 기간 중 프로세스가 준비 큐에서 CPU를 얻기 위해 기다린 시간의 합.

응답시간: 프로세스가 준비 큐에 들어온 후 첫번째 CPU를 획득하기까지 기다린 시간. 대화형 시스템에 적합한 척도.

 

 

 

 

 

 

 

 

 

 

 

 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글