상세 컨텐츠

본문 제목

3.2 프로세스 스케줄링

Computer Science/OS Concepts

by RACC8N 2020. 4. 17. 17:25

본문

스케줄링의 필요성

- multiprogramming - CPU 이용률 극대화

- time sharing - 사용자와의 상호 작용 -> 빈번한 CPU 스위칭

 

프로세스 스케줄링 Queue

- Job queue : 모든 프로세스들의 집합

- Readyt queue : ready 상태의 프로세스들의 집합 (메모리에 위치)

- Device queue : 특정 I/O장치 사용을 대기하는 프로세스들의 집합 -> 일반적으로 Linked list 저장

 

프로세스들은 실행 동안 여러 queue들 사이에서 이동함

프로세스가 종료되면 queue에서 제거되며 할당된 자원과 PCB도 반납함

 

Ready Queue와 여러 I/O Device Queues

 

프로세스 스케줄링에 대한 Queueing

프로세스의 Queue들 간의 이동

스케줄러 : Queue간에 이동할 프로세스를 선택하는 역할을 담당

 

장기(Long-term) 스케줄러 (job scheduler)

- disk pool에서 ready queue로 이동시킬 프로세스를 선택

(disk pool : 현재 작업 대기중인 작업들의 목록  (프로세스로 등록이 됐다))

- batch systems에서 사용

 

단기(Short-term) 스케줄러 (CPU scheduler) -> 스케줄러

- 다음에 실행시킬 프로세스를 선택하여 CPU를 할당함 (현재 메모리에 적재되어있는 ready 상태의 작업중에서 선택)

 

중기(Medium-term) 스케줄러

- time-sharing system에서 추가된 중간 레벨의 스케줄링

- 메모리에서 disk로 이동시킬 프로세스를 선택 (swapping이라고 함) (당장 실행되지 않는 프로세스를 이동)

Long-Term 스케줄러

I/O bound process

- 계산보다는 I/O수행에 더많은 시간을 소비함

- 많은 수의 짧은 CPU bursts(연속적으로 CPU를 사용하는 시간)

CPU bound process

- 계산에 더 많은 시간을 소비함

- 적은 수의 매우 긴 CPU bursts

 

장기 스케줄러의 역할

- multiprogramming의 정도(degree)를 제어함

- I/O bound process와 CPU bound process들의 적절한 조합을 선택하는 것이 중요함

 

time-shared 시스템에서는 장기 스케줄러가 없거나 최소화 (사람이 터미널을 통해서 직접 적재하기 때문에)

- 물리적 제한(터미널 수)이나 인간의 스스로 조절하는 능력으로 대치됨

 

Medium-Term 스케줄러

- CPU에 대한 경쟁(contention)을 줄임 -> multiprogramming 정도 감소

- 새로 적재될 프로세스를 위한 메모리 공간 확보

 

Context Switch

 

프로세스의 CPU context

- PC, CPU registers, memory management 정보

- Process switching 전에 PCB 등의 장소에 저장해야 함

 

Context Switch (=Process switching)

- CPU가 다른 프로세스로 전환될 때에 운영체제는

 > old process의 현재 CPU상태(context)를 저장하고

 > new process의 저장된 상태(context)를 CPU에 적재한다.

 

프로세스 전환 과정

1. 현재 process의 PCB에 있는 state를 'running'에서 다른 상태로 갱신하고 PCB를 ready queue에서 갱신 상태에 적절한 queue로 이동함

2. 새로 선택된 process의 PCB에 있는 state를 'running'으로 갱신

3. 현재 process의 CPU context를 자신의 PCB에 저장

4. 새 process의 PCB에서 CPU context를 CPU로 복원함

 

Context Switch Overhead

Context-switch time은 overhead임

- switching 동안 시스템은 유용한 작업을 하지 않음

- 운영체제가 더 복잡할 수록 contxt switching 동안 더 많은 작업이 필요

Context-switch time은 하드웨어 지원에 크게 영향 받음

Process switching은 간접적인 overhead도 가짐 

- 캐쉬 무효화(cache invalidation) 등

 

모바일 시스템에서의 Multitasking

ios 4부터 제한된 형태의 multitasking 지원

- 단일 foreground 프로세스 - 화면 사용

- 다수의 background 프로세스 - 메모리에 있지만, 화면에 보이지 않음

 > 단일 작업을 수행하는 제한된 길이의 작업 (다운로드)

 > event notificaiton (메일 메시지 수신)

 > 실행시간이 긴 작업 (오디오 재생)

 

Android는 background 응용에 제한이 없음

- application은 background에서 service를 사용해야 함

service : background 프로세스 대신에 수행하는 분리된 응용 컴포넌트

- service는 사용자 인터페이스를 갖고 있지 않고, 적은 메모리를 사용하여 모바일 환경에서의 multitasking에 효율적

'Computer Science > OS Concepts' 카테고리의 다른 글

3.4 프로세스간 통신 (Interprocess Communication)  (0) 2020.04.24
3.3 프로세스 연산  (0) 2020.04.17
3.1 프로세스 개념  (0) 2020.04.17
2.10 시스템 부트  (0) 2020.04.17
2.9 운영체제 생성  (0) 2020.04.17

관련글 더보기

댓글 영역