본문 바로가기
메모/ETC

CS - 프로세스의 생명주기-스케줄링,주-보조 교환,Context Switching

by 구너드 2023. 11. 8.

스케줄링 (Scheduling)

1) Job Scheduler :

  • Job Queue의 프로그램들을 어떤 순서로 메모리에 올릴 것인지 결정.
  • 이러한 과정은 프로그램이 새로 시작될 때, 메인메모리가 가득찬 경우 등의 상황에만 발생하므로 자주 일어나지 않고 어쩌다 한번(수분 ~ 수십분) 일어남.

📌 Long Term Scheduler

프로그램이 새로 시작될 때, 메인메모리가 가득찬 경우 등의 상황에만 발생하므로 자주 일어나지 않고 어쩌다 한번(수분 ~ 수십분) 일어나며, 이처럼 긴 간격으로 동작하는 스케줄러를 Long Term Scheduler라고 함.


 

2) CPU Scheduler :

  • Ready Queue의 프로세스들을 어떤 순서로 서비스 할 것인지에 대한 스케줄러
  • 모든 스케줄링 중에서 CPU 스케줄링이 가장 중요

📌 Short Term Scheduler

  • 시공유 시스템의 경우 이러한 과정은 1초에도 수십번에서 많게는 수백번도 일어나기 때문에 이러한 스케줄러를 Short Term Scheduler라고 함

3) Device Scheduler :

  • Device Queue의 프로세스들을 어떤 순서로 I/O 장치를 이용하게 할 것인지에 대한 스케줄러
  • 이는 Disk Scheduler, Printer Scheduler, Mouse Scheduler 등 I/O, 보조기억 장치 스케줄러를 통틀어 가리키는 말

📌 I/O Bound Process VS CPU Bound Process

  • I/O Bound Process
    • 대부분의 시간을 I/O하는데 쓰는 프로세스들을 의미
  • CPU Bound Process
    • 대부분의 시간을 CPU로 연산하는데 쓰는 프로세스를 의미

성능을 위해 운영체제(Job Scheduler)는 이들을 적절하게 배합하여 I/O 장치와 CPU 모두 너무 오랫동안 쉬지 않게 해야함


주-보조 교환 (Swapping)

 

1) Swapping :

  • 서버와 같이 여러 사용자가 하나의 메모리를 공유하는 경우에 만약 한 사용자가 자리를 비우면 그 사용자가 돌아올 때 까지 해당 프로세스에 메모리를 할당할 이유가 없다.
  • 때문에 CPU Time등을 확인해서 오랫동안 동작이 없는 프로세스는 잠시 HDD로 내려놓고, 다른 프로세스를 실행하거나 기존 프로세스에 메모리를 더 할당하는 등 메모리를 더 효율적으로 활용
  • 그러다가 동작없던 프로세스 사용자가 돌아와서 작업을 수행하면 다시 HDD에서 메모리로 프로세스를 올림
  • Swap Out
    • 메모리에서 HDD로 내리는 작업
  • Swap In
    • HDD에서 다시 메모리로 올리는 작업
  • 이렇게 임시 메모리의 목적으로 사용되는 HDD 공간을 Backing Store 혹은 Swap Device라고 함

문맥 교환 (Context Switching)

1) Context Switching :

  • CPU 시간공유 시스템의 경우 일정 시간이 지나면 기존 프로세스를 준비 상태로 만들고 다른 프로세스를 수행 상태로 만들어서 실행
  • 이렇게 실행하는 프로세스를 Switch 하는 것을 통틀어서 Context Switching 이라고 함

2) Scheduler :

  • Context Switching을 전문적으로 담당하는 스케줄러는 위에서 배운 CPU 스케줄러
  • CPU 스케줄러는 Ready Queue에 대기 중인 프로세스를 어떤 순서로 실행시킬 것인지에 대한 스케줄러

3) Dispatcher :

  • 만일 프로세스 A의 코드 중 100번 라인까지 실행했고 작업 중에 10개의 데이터를 레지스터에 저장했었다면, 스위치할 때 이 정보들을 보존해야 A의 차례가 돌아왔을 때 이전에 수행하던 작업이 끊기지 않고 수행될 수 있음음
  • 때문에 프로세스 A를 수행하다가 B로 넘어가면 그러한 정보를 저장하고, 다시 A의 차례가 왔을 때, 정보를 다시 꺼내서 PC, SP, Register 등에 할당
  • 이러한 작업을 수행하는 프로그램을 Dispatcher라고 함

 

대부분의 OS는 CPU 스케쥴링 방법 중 시간공유 시스템을 사용

  • CPU 시간을 효율적으로 사용하기 위해서, 운영체제는 CPU를 사용하지 않는 프로세스나 스레드가 있다면 다른 프로세스나 스레드에게 CPU 시간을 할당.
  • CPU 시간 공유 시스템을 사용함으로써, 여러 프로세스나 스레드가 동시에 실행되는 것처럼 보일 수 있음.
  • 그러나 실제로는 CPU가 매우 빠르기 때문에 매우 짧은 시간에 여러 프로세스나 스레드를 번갈아가며 실행할 수 있음.
  • 이를 통해 CPU가 최대한 효율적으로 사용될 수 있으며, 운영체제는 더 많은 프로세스나 스레드를 동시에 실행할 수 있음.

'메모 > ETC' 카테고리의 다른 글

CS - 쓰레드 풀  (0) 2023.11.29
CS - 프로세스와 쓰레드  (0) 2023.11.21
CS - 프로세스 메모리  (0) 2023.11.03
CS - 프로세스의 생명주기-프로세스 상태,대기 큐  (0) 2023.10.31
CS - 페이지 교체 알고리즘  (0) 2023.10.27