CS - 프로세스 생명 주기..ing(2)

최수민·2023년 8월 25일
0

정리

목록 보기
1/3

대기 큐 (Waiting Queue)

  • 상태 변화시 여러 프로그램들이 상태가 왔다갔다 많이 발생하는데 cpu나 이런 것들은 한계가 있습니다. 그래서 상태 변화가 이루어지기 위해서는 중간중간에 존재하는것이 대기 큐입니다. 대기 큐는 크게 세가지가 있는데 Job Queue, Ready Queue, Device Queue가 있습니다.

Job Queue

  • 하드디스크에 있는 프로그램들이 메모리에 올라올 때, cpu가 다른 작업중이거나 메모리가 공간이 부족할 경우 올라오기 전에 어느정도 기다려야하는데 이 잠시 기다리는 곳을 Job Queue라고 합니다.

Ready Queue

  • 메인메모리에 올라왔다고 하더라도 바로 cpu의 서비스를 받는것은 아니기때문에 다른 프로그램이 수행중이면 기다리거나 시공유시스템의 경우 기존 프로세스가 시간초과되면 실행됩니다.
    이렇게 프로세스들이 실행을 위해 대기하는 곳을 Ready Queue라고 합니다.

    * 시공유 시스템 - 프로그램마다 시간을 나눠서 제한을 둬서 작업하는 경우

Device Queue

  • IO장치(프린터,키보드 등)을 이용하려면 기존 I/O작업이 끝나기를 기다렸다가 밀려있던 모든 작업이 끝나면 비로서 사용할수 있는데, 프린터는 프린터큐, 키보드는 키보드큐 등 각자 대기 큐를 가지고 있습니다. 이러한 I/O장치들의 큐들을 통틀어서 Device Queue라고 합니다.


스케줄링 (Scheduling)

  • 위 각각의 큐에대해 시케줄링이 어떻게 되는지 살펴보려합니다.

Job Scheduler

  • job queue의 프로그램들을 어떤 순서로 메모리에 올릴건지 결정하는데 이러한 과정은 프로그램이 새로 시작될 때나 메인메모리가 가득찬 경우 등의 상황에만 발생하므로 자주 일어나진 않습니다. (수분~수십분에 한번 정도.)

  • Long Term Scheduler
    어쩌다 한번(수분 ~ 수십분) 일어날때, 이처럼 긴 간격으로 동작하는 스케줄러를 Long Term Scheduler라고 합니다.

CPU Scheduler

  • Ready Queue의 프로세스들을 어떤 순서로 서비스 할 것인지에 대한 스케줄러입니다.

  • 모든 스케줄링 중에서 CPU 스케줄링이 가장 중요합니다.

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

Device Scheduler

  • Device Queue의 프로세스들을 어떤 순서로 I/O 장치를 이용하게 할 것인지에 대한 스케줄러입니다.

  • Disk Scheduler, Printer Scheduler, Mouse Scheduler 등 I/O, 보조기억 장치 스케줄러를 통틀어 가리키는 말입니다.



주-보조 교환 (Swapping)

  • 서버와 같이 여러 사용자가 하나의 메모리를 공유하는 경우에 만약 한 사용자가 자리를 비우면 그 사용자가 돌아올 때 까지 해당 프로세스에 메모리를 할당할 이유가 없습니다. 그래서 PCB(Process Control Block)의 CPU Time등을 확인해서 오랫동안 동작이 없는 프로세스는 잠시 HDD로 내려놓고(unload), 다른 프로세스를 실행하거나 기존 프로세스에 메모리를 더 할당하는 등 메모리를 더 효율적으로 활용합니다.

  • 그러다가 동작없던 프로세스 사용자가 돌아와서 작업을 수행하면 다시 HDD에서 메모리로 프로세스를 올립니다.

  • Swap Out : 메모리에서 HDD로 내리는 작업

  • Swap In : HDD에서 다시 메모리로 올리는 작업

  • 이렇게 임시 메모리의 목적으로 사용되는 HDD 공간을 Backing Store 혹은 Swap Device라고 합니다.


  • Midium Term Scheduler
    Swapping 역시 여러 프로세스들이 HDD로 내려가고 다시 메모리로 올라오고 하기 때문에 어떤 순서로 프로세스를 먼저 내리고 올릴지 결정해야합니다. 이러한 스케줄링 작업은 Short Term Scheduling 보다는 적게 일어나지만 Long Term Scheduling 보다는 자주 일어납니다 그래서 이러한 스케줄링 작업(Swapping Scheduling)을 Midium Term Scheduling이라고 합니다.

문맥 교환 (Context Switching)

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

Scheduler

  • 이를 전문적으로 담당하는 스케줄러가 있고 cpu스케줄러입니다.

  • 이 cpu스케줄러는 ready queue에 대기중인 프로세스를 어떤 순서로 실행시킬지에 대한 스케줄러입니다.

  • cpu스케줄러는 시간공유 시스템을 기반으로 많이 사용됩니다.

Dispatcher

  • 이 프로세스를 사용하라고 지정해주는것을 dispatcher라고 합니다.

  • 프로세스 A를 수행하다가 B로 넘어가면 그러한 정보를 저장하고, 다시 A의 차례가 왔을 때, 정보를 다시 꺼내서 PC, SP, Register 등에 할당합니다.

  • 즉 a라는 프로세스를 수행하다가 b로 넘어가면 a의 정보들을 한곳에 저장해놓고 있다가 b가 완료되고 a 차례가 됬을때 저장해놓은 정보들을 다시 꺼내서 수행을 하는겁니다.


❓ 대부분의 OS는 CPU 스케쥴링 방법 중 시간공유 시스템을 사용할까요?
  • 네, 대부분의 운영체제는 CPU 시간을 여러 프로세스나 스레드에 공평하게 분배하는 CPU 시간 공유 시스템을 사용합니다.
  • CPU 시간을 효율적으로 사용하기 위해서, 운영체제는 CPU를 사용하지 않는 프로세스나 스레드가 있다면 다른 프로세스나 스레드에게 CPU 시간을 할당합니다.
  • CPU 시간 공유 시스템을 사용함으로써, 여러 프로세스나 스레드가 동시에 실행되는 것처럼 보일 수 있습니다.
  • 그러나 실제로는 CPU가 매우 빠르기 때문에 매우 짧은 시간에 여러 프로세스나 스레드를 번갈아가며 실행할 수 있습니다.
    이때 번갈아가며 수행하는것이 context switching입니다.
  • 이를 통해 CPU가 최대한 효율적으로 사용될 수 있으며, 운영체제는 더 많은 프로세스나 스레드를 동시에 실행할 수 있습니다.

0개의 댓글