새소식

인기 검색어

컴퓨터공학/운영체제

5장 CPU 스케줄링

  • -

Q1 : CPU 스케줄링의 기본 목표는 무엇인가? CPU 스케줄링 알고리즘들을 평가하는 기준 6가지만 간단히 설명하라.

 

A1 : CPU 스케줄링의 목표는 CPU를 가능한 놀지 않게 하여 CPU 활용률을 높이고, 컴퓨터 시스템이 단위 시간 당 더 많은 스레드를 처리하는 데에 있다.

 

<CPU 알고리즘 평가 기준>

1. CPU 활용율 : 컴퓨터 전체 기동 시간에 대한 CPU 사용 시간의 비율

2. 처리율 : 단위 시간 당 처리하는 스레드의 개수

3. 공평성 : 기아 스레드가 생기지 않도록, 모든 스레드에게 CPU 사용시간을 공평하게 배분

4. 응답 시간 : 사용자에 대한 응답에 걸리는 시간

5. 대기 시간 : 스레드가 준비 리스트에서 CPU를 할당 받을때까지 기다리는 시간

6. 소요 시간 :

다중프로그래밍 시스템 입장 : 프로세스가 시작되어  완전히 종료될 때까지 걸린 시간

사용자 입장 : 작업을 시작시킨 사용자가 결과를 얻기까지 걸린 시간

 

 

Q2 : CPU 스케줄링 알고리즘이 I/O 집중 프로세스를 선호하는가 CPU 집중 프로세스를 선호하는가? 그 이유는 무엇인가?

 

A2 : 다중프로그래밍 운영체제에서는 I/O 집중 프로세스를 선호하는것 같다. 스레드를 실행 중일 때에도 I/O가 발생하면 중단하고 스케줄링하여 다른 스레드를 실행하기 때문이다. 

 

 

Q3 : 스케줄링은 선점, 비선점으로 구분된다. 이를 구분하는 기준은 무엇인가? 그리고 현대의 운영체제 대부분은 이들 중 어떤 방식을 취하는가? 비선점 알고리즘을 사용할 때 좋은 점은 무엇이고, 가장 큰 문제점은 무엇이라고 생각되는가?

 

A3 : 현재 실행 중인 스레드를 강제로 중단시키는 여부에 따라 강제로 종료시키면 선점 스케줄링, 그렇지 않으면 비선점 스케줄링으로 구분한다.

현대의 운영체제는 대부분 선점 스케줄링을 사용한다. 비선점 스케줄링 보다 기아 스레드가 생길 확률이 더 적은 것이 장점이다. 선점 스케줄링은 현재 실행중인 스레드를 강제로 종료시킨 뒤 교체하기 때문에 컨텍스트 스위칭이 자주 일어난다는 문제점이 있다.

 

 

Q4 : FCFS, RR, SJF, SRTF을 간단히 설명하고, 현실적으로 가장 많이 사용되는 것은 어떤 것일까? 그리고 그 이유는 무엇이라고 생각되는가?

 

A4 : 

FCFS : 큐에 도착한 순서대로 스레드를 선택 (non-preemptive)

SJF : 예상 실행시간이 가장 짧은 스레드를 먼저 실행 (non-preemptive)

SRTF : 실행중인 스레드의 남은 실행시간보다 더 짧은 실행시간을 가진 스레드가 큐에 도착하면 현재 스레드의 실행을 중단시키고 도착한 스레드를 실행  (preemptive)

RR : 스레드들에게 공평한 실행 기회를 주기 위해 일정 시간 간격으로 번갈아 실행  (preemptive)

 

RR 일것같다. FCFS와 SJF는 비선점이라 3번에서 언급한 이유때문에 잘 사용하지 않을 것 같고 SJF와SRTF는 현실적으로 스레드의 실행시간을 파악하기 힘들기 때문에 RR을 가장 많이 사용할 것 같다.

 

 

Q5 : 커널에는 스케줄링 코드가 있다. 이 코드가 어떤 상황에서 실행되는가?

 

A5 : 시스템 호출 서비스 루틴 또는 인터럽트 서비스 루틴이 끝나는 마지막 단계에서 실행된다. 

시스템 호출 서비스 루틴 도중 발생되는 경우는 스레드가 I/O를 요청하여 블록되거나 스레드가 자발적으로 CPU를 반환할때이다.

인터럽트 서비스 루틴 도중 발생되는 경우는 스레드의 타임슬라이스가 소진되거나 더 높은 순위의 스레드가 요청한 I/O작업이 완료될 때이다.

 

 

Q6 : 디스패치(dispatch)란 무엇이며 디스패쳐(dispatcher)란 무엇인가?

 

A6 : CPU 스케줄링에 의해 선택된 스레드를 CPU가 실행하도록 하는 작업을 디스패치라고 한다.

디스패치를 하는 커널코드를 디스패쳐라고 부른다. 디스패쳐 코드는 현재 실행중인 스레드의 컨텍스트를 저장한 뒤 스케줄링에 의해 선택된 스레드의 컨텍스트로 스위칭한다.

 


Q7 : 멀티 코어 시스템에서는 단일 코어의 스케줄링 알고리즘을 사용하게 되면 발생하는 2가지 문제점을 설명하라.

 

A7 : 첫번째로 컨텍스트 스위칭의 오버헤드가 증가한다. 한 코어에서 실행중인 스레드를 스케줄링하여 그 전에 실행했던 코어가 아닌 새로운 코어에 스레드를 할당하면 다시 스레드의 코드와 데이터를 적재해야한다. 

두번째로 코어별 부하 불균형 문제가 생길 수 있다. CPU 코어마다 스케줄링에 의해 적고, 많은 스레드를 실행하다 보면 코어 사이에 불균형이 초래 될 수 있다. 그렇게 되면 코어의 활용율과 함께 시스템 처리율이 떨어진다.

 


Q8 : CPU affinity란 무엇인가? 이것은 사용자가 결정하는가? 운영체제가 결정하는가? 학생의 생각을 말해보라.

 

A8 : CPU affinity (코어 친화성)은 프로세스나 스레드가 스케줄링시 실행된적이 있는 코어에다가 재할당하는것이다. 멀티코어를 지원하는 운영체제에서는 코어마다 스레드 큐를 두고 친화성을 결정한다. 하드웨어 자원에 관한 관리는 운영체제가 담당하는 것이 맞는것 같다.

 

 

Q9 : 현재 자신의 Windows 컴퓨터(없는 사람은 다른 사람의 어떤 컴퓨터도 됨)에서 chrome프로세스의 코어 친화성이 어떻게 설정되어 있는지를 그림 5-15와 같이 캡쳐하여 보여라.

 

A9 :

 

 

Q10 : 다음 스레드의 집합을 생각해보자. 실행 시간의 단위가 밀리초(ms)이다. 스레드들은 모두 0 시간에 도착해서 T1, T2, T3, T4, T5 순서로 큐에 대기 중이라고 하자.

  도착시간 실행시간(ms) 우선순위(숫자가 클수록 높은 순위)
T1 0 2 2
T2 0 3 1
T3 0 8 4
T4 0 1 2
T5 0 4 3

(1) FCFS, SJF, Non-preemptive Priority 스케줄링, RR(타임 슬라이스 2ms) 각각의 스케줄링 일어나는 과정을 차트로 그려라.

(2) 각 알고리즘의 평균대기시간을 계산하라.

 

'컴퓨터공학 > 운영체제' 카테고리의 다른 글

7장 교착상태  (0) 2023.05.28
6장 스레드 동기화  (0) 2023.05.28
4장 스레드와 멀티태스킹  (0) 2022.01.10
3장 프로세스와 프로세스 관리  (0) 2022.01.03
2장 컴퓨터 시스템과 운영체제 - 후반부  (0) 2021.12.29
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.