본문 바로가기

JAVA/Theory

CPU Scheduling [Dispatcher & Time Slice]

CPU Scheduling


시분할이라는 것은 CPU의 실행시간을 100이라 보았을 때

10으로 10개를 나누어서 10개의 쓰레드를 차례대로 교환하면서 실행하는 것을 말한다. 

현재 사용하는 대부분의 운영체제는 32bit 운영체제이고 따라서 4GB의 어드레싱 영역을 얻을 수가 있다. 

각각의 4G 영역을 2G씩 나누어서 상위 2G에는 시스템 코드, DLL, 프로세스 간 공유되는 데이터와 코드가 위치하고, 

하위 2G에는 프로그램을 실행하는 프로세스, 응용 프로그램의 바이너리 이미지(실행파일), 

응용 프로그램 공유 라이브러리(DLL)의 코드와 데이터가 위치한다


Dispatcher(H/W 인터럽트)란 CPU의 제어권을 STS(Short-Term Scheduling)에 의하여 

선택된 Process에게 넘겨주는 모듈을 말합니다.

이러한 Dispatcher의 기능은 아래의 3가지가 있습니다.

1. Context Switching

2. User Mode로 전환

3. 사용자 프로그램의 재 시작을 위해 해당주소로 이동


 스케줄러는 어떤 쓰레드를 다음에 동작시킬 것인지를 결정한 뒤(Dispatcher) 에 선택한 쓰레드를 동작시켜서 동시에 여러 가지 일을 처리하도록 한다. 즉, 운영체제 스케줄러의 최대 목표는 CPU를 최대한 활용하여 PC의 성능을 최대한 활용하는 것이다


퀀텀(Quantum)이란?

실행의 최소 단위 시간 간격을 가리키는 말로 타임 슬라이스(Time Slice)라고도 한다.

퀀텀을 길게하면 Interactive한 시스템에서는 반응이 늦어 문제가 발생할 수 있고, 

그렇다고 너무 짧게하면 Context Switching이 자주 발생해서 성능에 저하를 가져다 준다.


타임 슬라이싱(Time Slicing) CPU가 하나인 시스템에서 쓰레드는 한 번에 하나의 코드 만을 실행할 수 있다고 말한 것을 기억하는가. 그렇다면 운영체제는 새로운 쓰레드를 스케줄링하기 위해 어떻게 쓰레드에서 CPU의 제어권을 가져올 수 있는가? 운영체제도 결국 코드에 불과한데, 어떻게 해서 제어권을 가져올 수 있을까? 그 정답은 타임 슬라이싱에 있다. NT와 같은 운영체제는 컴퓨터의 하드웨어에서 일정 시간 주기로 인터럽트를 발생시키도록 타이머를 지정한다




반응형

'JAVA > Theory' 카테고리의 다른 글

CPU Scheduling [Priority & Round Robin]  (0) 2015.02.25
Context Switch  (0) 2015.02.25
Process 와 Thread  (0) 2015.02.25
JDK (JRE [API + JVM] + 개발 유틸리티 )  (0) 2015.02.06
컴파일 & 인터프리트  (0) 2015.02.06