0. 스케줄링의 목적

- CPU나 자원을 효율적으로 사용하기 위함

- 멀티 프로그래밍에서 CPU 효율을 극대화 하기 위함

 

 

 

1. 스케줄러 종류

- 장기 스케줄러 ( Long Term )

- 단기 스케줄러 ( Short Term )

- 중기 스케줄러 ( Medium Term )

 

 

 

2. 장기 스케줄러 

- 디스크와 메모리 사이의 스케줄링을 관리

- 디스크에 비해 메모리 크기는 한정되어 있음으로 수행해야할 일(pool)에서 선택적으로 프로세스에 메모리를 할당하여

  Ready Queue로 보내는 역할

- 즉, 실행을 위해 메모리에 적재한다.

- I/O가 자주 필요한 프로세스들은 I/O 시간이 오래 걸리므로 이러한 프로세스들만 많이 올라가면 CPU가 비효율적으로

  사용됨

- CPU 사용이 많은 프로세스들만 올라가면 사용자는 불편함을 느낄 수 있음

- 적절히 섞어서 올려주는 것이 장기 스케줄러의 역할

 

 

3. 단기 스케줄러

- 메모리와 CPU사이의 스케줄링을 관리

- Ready Queue에서 어떤 프로세스를 Running 할 지 결정

- 10개의 프로세스가 장기 스케줄러에 의해 Ready Queue로 올라왔다고 가정하자

- CPU는 이 중 하나의 프로세스를 선택해서 실행해야 하는데 그것을 스케줄링 해주는 것이 단기 스케줄러

  (CPU 스케줄러라고도한다.)

- CPU 자원을 효율적으로 사용하기 위함이다.

- 사용자에게 여러개의 프로세스를 동시실행되고 있는 것 처럼 보이게 하기위해 아주 짧은 시간으로 쪼개서 스케줄링

- 또는 A프로세스를 실행하다가 I/O를 해야하면 이를 기다리는 시간동안 B프로세스를 올려서 작업한다.

- 매우 짧은 시간단위로 수행되므로 단기 스케줄러라고 한다.

 

 

4. 중기 스케줄러

- 너무 많은 프로세스가 메모리에 올라와있을 경우 이를 다시 디스크로 보낸다.

- CPU를 사용하려는 프로세스들 사이에서 중재하여 일시 보류, 재활성화를 수행한다. (swapper라고도 한다.)

- 일정시간 이상 CPU에서 수행되지 않았거나, 우선순위를 기준으로 판단하여 내려보낸다.

 

 

1. Context Switching 이란?

- 멀티 프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있을 때, 

  운영체제의 스케줄링에 따라 인터럽트 요청이 발생해서 다음 프로세스가 실행되어야 할 때

  각 프로세스 들은 메모리를 공유하지 않기 때문에, 기존의 프로세스의 상태(레지스터 값)을 저장하고 

  다음 프로세스의 상태(레지스터 값)을 교체하는 작업을 Context Switching( 문맥 교환 ) 이라고 한다.

 

- OS에서 Context는 CPU가 프로세스를 실행하기 위한 그 프로세스의 정보들을 말한다.

  이 Context는 프로세스의 PCB(Process Control Block)에 저장된다.

  Context Switching이 발생하면 CPU는 해당 프로세스의 PCB 정보를 받아와서 이전의 작업을 이어 수행한다.

 

- ** PCB는 Process State, Process Counter ( 다음 실행할 명령어의 위치 (주소 값) ), registers 등으로 구성 

 

- Context Switching 이 발생할 경우 시간 소요가 많이 된다.

( 실행 중이던 프로세스의 PCB를 저장하고,  실행할 프로세스의 PCB를 불러오고, 캐쉬를 초기화 하고.......등) 

 

- 주체는 Operating System (운영 체제) 이다.

 

 

2. Interrupt 발생 시 Context Switching 

- 해당 프로세스에 할당된 CPU 사용시간이 만료되어 다른 프로세스를 처리해야 할 때 Interrupt 발생

 

- 입출력 요청 등의 사항으로 현재 프로세스 처리를 멈춰야 할 때 Interrupt 발생

 

- 등등......

+ Recent posts