일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ai/bigdata
- 다시보기
- 리트코드
- 투포인터
- OS
- 1차면접
- BOJ
- Java
- 정렬
- 운영체제
- 마곡속눈썹펌
- 알고리즘
- 카카오
- 직무면접
- 코딩테스트
- level2
- 삼성 SW역량테스트 기출
- 딥러닝
- leetcode
- 등촌동속눈썹펌
- 삼성SW역량테스트
- 등촌동속눈썹연장
- 백준
- 추석트래픽
- 포스코
- 수학
- 마곡속눈썹연장
- 프로그래머스
- 시뮬레이션
- 삼성
- Today
- Total
기록하는 습관을 들이자
[ 운영체제 정리 ] 6장 CPU 스케줄링 - 운영체제와 정보기술의 원리 본문
※ 해당 포스팅은 이화여대 반효경 교수님 저서 [운영체제와 정보기술의 원리] 책 내용을 기반으로 작성되었습니다.
CPU는 프로그램의 기계어 명령을 실제로 수행하는 컴퓨터 내의 중앙처리장치이다.
기계어 명령은 크게 CPU 내에서 수행되는 명령, 메모리 접근을 필요로 하는 명령, 입출력을 동반하는 명령으로 나눌 수 있다.
- CPU 내에서 수행되는 명령의 예: ADD 명령(레지스터 값들 더함) - 속도 빠름
- 메모리 접근을 수행하는 명령의 예: LOAD, STORE 명령(메모리에 있는 데이터를 읽고 쓴다) - CPU 내 명령보다는 시간이 소요되지만 비교적 빠른 시간에 수행 가능
- 입출력을 동반하는 명령: 특권 명령 - 운영체제가 대행 by 시스템 콜
이처럼, 사용자 프로그램이 실행되는 과정은 CPU 작업과 I/O 작업의 반복으로 구성된다. 첫 째는 사용자 프로그램이 CPU를 직접 가지고 빠른 명령을 수행하는 일련의 단계이고, 둘째는 I/O 요청이 발생해 커널에 의해 입출력 작업을 진행하는 비교적 느린 단계전자를 CPU 버스트(burst)라고 하고, 후자를 I/O 버스트(burst)라고 부른다.
각 프로그램마다 CPU 버스트와 I/O 버스트가 차지하는 비율이 균일하지는 않다. 어떤 프로세스는 I/O 버스트가 빈번하고, 어떤 프로세스는 CPU 버스트가 빈번하게 일어난다.
- I/O 바운드 프로세스: I/O 요청이 빈번해 CPU 버스트가 짧게 나타나는 프로세스 ex> 사용자와 interactive한 대화형 프로그램
- CPU 바운드 프로세스: 입출력 작업을 거의 수행하지 않아 CPU 버스트가 길게 나타나는 프로세스
우리가 사용하는 시분할 시스템에서는 이와 같이 CPU 버스트가 균일하지 않은 다양한 프로그램들이 공존하므로 효율적인 CPU 스케줄링 기법이 반드시 필요한 것이다!!
컴퓨터 시스템 내에서 수행되는 프로세스들의 CPU 버스트를 분석해보면 대부분의 경우 짧은 CPU 버스트를 가지며, 극히 일부분만 긴 CPU 버스트를 가진다. 따라서 CPU 스케줄링을 할 때 CPU 버스트가 짧은 프로세스에게 우선적으로 CPU를 사용할 수 있도록 하면 I/O 바운드 프로세스들이 CPU를 잠깐만 사용한 후 곧바로 I/O 작업을 수행할 수 있으므로 I/O 장치의 이용률이 높아진다
1. CPU 스케줄러
CPU 스케줄러는 준비 상태에 있는 프로세스들 중 어떠한 프로세스에게 CPU를 할당할지 결정하는 운영체제의 코드이다.
CPU 스케줄링 방식에는 비선점형(nonpreemptive) 방식과 선점형(preemptive) 방식이 있다.
- 비선점형 방식: CPU를 획득한 프로세스가 스스로 CPU를 반납하기 전까진 CPU를 빼앗지 않는 방법
- 선점형 방식: 프로세스가 CPU를 계속 사용하기를 원하더라도 강제로 빼앗을 수 있는 스케줄링 방식
2. 디스패처
CPU 스케줄러가 어떤 프로세스에게 CPU를 할당해야 할지 결정하고나면 선택된 프로세스에게 실제로 CPU를 이양하는 작업이 필요하다. 이 때, 문맥교환(context switch)이 일어나게 되는데 디스패처(dispatcher)가 이를 수행해준다.
디스패처는 현재 수행 중이던 프로세스의 문맥(context)을 그 프로세스의 PCB에 저장하고, 새롭게 선택된 프로세스의 문맥을 PCB로부터 복원한 후 그 프로세스에게 CPU를 넘기는 과정을 수행한다.
디스패치 지연시간(dispatch latency)?디스패처가 하나의 프로세스를 정지시키고 다른 프로세스에게 CPU를 전달하기까지 걸리는 시간 = 일종의 문맥교환 오버헤드
3. 스케줄링의 성능 평가
스케줄링 기법의 성능을 평가하기 위한 지표로 다양한 것들이 있다.
- 시스템 관점의 지표: CPU 이용률, 처리량(throughput)
- 사용자 관점의 지표: 소요시간, 대기시간, 응답시간
CPU 이용률(CPU Utilization): 전체 시간 중에서 CPU가 일을 한 시간의 비율. CPU가 idle한 상태에 머무르는 시간을 최대로 줄이는 것이 스케줄링의 목표!처리량(throughput): 주어진 시간 동안 준비 큐에서 기다리고 있는 프로세스 중 몇 개를 끝마쳤는지소요시간(turnaround time): 프로세스가 CPU를 요청한 시점부터 자신이 원하는 만큼 CPU를 다 쓰고 CPU 버스트가 끝날 때까지 걸린 시간대기시간(waiting time): CPU 버스트 기간 중 프로세스가 준비 큐에서 CPU를 얻기 위해 기다린 시간의 합응답시간(response time): 프로세스가 준비 큐에 들어온 후 첫 번째 CPU를 획득하기까지 기다린 시간
4. 스케줄링 알고리즘
1) 선입선출(FCFS: First Come First Served) - 비선점형: CPU를 먼저 요청한 프로세스에게 CPU를 먼저 할당하고, 그 프로세스가 자발적으로 CPU를 반납할 때까지 빼앗지 않는다. CPU 버스트가 긴 프로세스가 먼저 도착한 경우 비효율적인 결과를 초래한다.
2) 최단작업 우선 스케줄링(SJF, SRTF: Short Job First, Short Remaining Time First) - 비선점형, 선점형: CPU 버스트가 가장 짧은 프로세스에게 가장 먼저 CPU를 할당하는 방식이다. SJF 스케줄링 알고리즘은 평균 대기시간을 가장 짧게 하는 최적 알고리즘으로 알려져 있다.
SJF 스케줄링 알고리즘은 비선점형 방식으로 일단 CPU를 획득하면 그 프로세스가 CPU를 자진 반납하기 전까진 CPU를 빼앗지 않는 방식이다.SRTF 스케줄링 알고리즘은 선점형 방식으로 준비 큐에서 CPU 버스트가 가장 짧은 프로세스에게 CPU를 할당했다 하더라도, CPU 버스트가 더 짧은 프로세스가 도착할 경우 CPU를 빼앗아 더 짧은 프로세스에게 부여하는 방식을 말한다.
3) 우선순위 스케줄링: 준비 큐에서 기다리는 프로세스들 중 우선순위가 가장 높은 프로세스에게 제일 먼저 CPU를 할당하는 방식
4) 라운드 로빈 스케줄링: 시분할 시스템의 성질을 가장 잘 활용한 새로운 의미의 스케줄링 방식. 각 프로세스가 CPU를 연속적으로 사용할 수 있는 시간이 특정 시간으로 제한되며, 이 시간이 경과하면 해당 프로세스로부터 CPU를 회숳 준비 큐에 줄 서 있는 다른 프로세스에게 CPU를 할당한다.
'운영체제' 카테고리의 다른 글
[ 운영체제 정리 ] 7장 메모리 관리 - 운영체제와 정보기술의 원리 (0) | 2020.09.04 |
---|---|
[ 운영체제 정리 ] 5장 프로세스 관리 - 운영체제와 정보기술의 원리 (0) | 2020.09.04 |
[ 운영체제 정리 ] 4장 프로그램의 구조와 실행 - 운영체제와 정보기술의 원리 (0) | 2020.09.04 |
[ 운영체제 정리 ] 3장 컴퓨터 시스템의 동작 원리 - 운영체제와 정보기술의 원리 (0) | 2020.09.03 |
[ 운영체제 정리 ] 2장 운영체제 개요 - 운영체제와 정보기술의 원리 (0) | 2020.09.03 |