티스토리 뷰

프로세스의 상태를 변화시키는 스케줄러를 공부하다 보니 프로세스 상태까지 다시 보게 되었다. 한번 본다고 끝이 아니라 보다 보면 헷갈리는 게 계속 나오는듯하다!

 

 

 

스케줄러(Scheduler)란?

:어떤 프로세스에게 자원을 할당할지를 결정하는 운영체제 커널의 모듈을 지칭한다. 스케줄러에 따라 프로세스 상태가 바뀌게 된다.

프로세스 상태 변화

$프로세스 상태 살펴보기!

더보기

new : 프로세스 생성중

  • 프로세스를 생성하고 있는 단계로 커널 공간에 PCB가 만들어진 상태

ready : 프로세스가 CPU를 기다리는 상태

  • 프로세스가 메모리에 적재된 상태로 실행하는데 필요한 자원을 모두 얻은 상태
  • 아직 CPU를 받지는 않았지만 CPU를 할당 받으면 바로 실행 가능한 상태
  • ready상태를 가지는 여러개의 프로세스들이 존재할 수 있음

running : 프로세스가 CPU를 할당받아 명령어를 수행 중인 상태

  • 일반적으로 CPU가 하나이기 때문에, 여러 프로세스가 동시에 실행되도 실제로 실행중인 프로세스는 매 시점 하나 뿐임

blocked : 프로세스가 CPU를 할당 받아도 당장 실행할 수 없는 상태

  • 현재 프로세스가 I/O작업 등을 을 처리중 상태를 의미

terminated : 프로세스의 실행 종료

  • 프로세스의 실행이 완료되고 할당된 CPU를 반납, 커널공간내의 PCB는 남아 있음

suspended : 프로세스의 중지 상태

  • suspended 상태의 프로세스는 메모리를 강제로 뺏긴 상태로 특정한 이유로 프로세스의 수행이 정지된 상태를 의미하며, 외부에서 다시 재개시키지 않는 이상 다시 활성화 될 수 없음.중기 스케줄러에 의해 디스크로 스왑 아웃된 프로세스의 상태가 대표적인 suspended상태라 할 수 있음. suspended ready와 suspended  blocked가 있음

1. suspended ready : ready 상태에 있던 프로세스가 디스크로 swap out

2. suspended blocked : block 상태에 있던 프로세스가 디스크로 swap out

※ blocked ?

프로세스 A가 CPU를 할당받고(running상태) 명령어를 실행하다 I/O 작업을 해야 하는 경우, 디스크 I/O 작업은 CPU 처리 속도에 비해 오래 걸리는 작업이기 때문에 디스크 I/O 작업 동안은 CPU를 점유하고 있어도 다음 명령어를 수행하지 못하게 됨 -> CPU 낭비

때문에 디스크 I/O 작업을 하는 프로세스는 CPU를 반납하고 장치 큐에 가서 줄을 서게 된다(blocked 상태). 이후 디스크 컨트롤러에 의해 서비스를 받아 일을 수행하면(마그네틱 원판에서 원하는 데이터를 로컬 버퍼로 읽어오고 나면) 디스크 컨트롤러가 CPU에게 일을 끝났음을 알린다(인터럽트). 이후 프로세스 A는 장비 큐에서 빼내어 준비 큐로 넣어주고 프로세스 A가 한 일(로컬 버퍼에 저장)은 메모리에 올라가게 된다.

※ blocked와 suspended의 차이

blocked : 잠시 중지되어있다(blocked) 끝나면 다시 ready상태로 돌아옴

suspended : 잠시 중지되어 있다(suspendedn) 누군가가 재개시켜줘야 다시 ready상태로 돌아옴.

 

참고사이트 : kosaf04pyh.tistory.com/190

 

스케줄러가 스케줄링하려는 프로세스가 담긴 프로세스 큐 3가지

  1. Job Queue : 현재 시스템 내의 모든 프로세스가 담긴 큐
  2. Ready Queue : 현재 메모리 내에 적재되어 있으며 CPU를 할당받아 실행되기를 기다리는 프로세스가 담긴 큐
  3. Device Queue : Device I/O 처리를 기다리는 프로세스가 담긴 큐

각각의 큐에서 프로세스를 넣고 빼주는 일을 하는 스케줄러 3가지

1. 장기 스케줄러(Long-term Scheduler == Job Scheduler)

: 작업 스케줄러라고도 부르며 어떤 프로세스를 ready queue로 옮길지를 결정한다. (new → ready)

→메모리는 한정되어 있는데 한꺼번에 많은 프로세스가 메모리로 올라올 경우 대용량 메모리(일반적으로 디스크)에 임시로 저장되는데 여기서 어떤 프로세스에 메모리를 할당하여 ready queue로 옮기는 것을 결정하는 스케줄러이다.

  • 수 초, 분 단위로 비교적 가끔 호출되므로 속도가 느린 것이 허용됨
  • 메모리-디스크 사이의 스케줄링을 담당
  • 프로세스에 메모리(각종 자원)를 할당(admit)
  • 메모리에 동시에 올라가 있는(실행 중인) 프로세스의 수를 조절함

** 시분할 시스템(time sharing system)에서는 대부분 이 장기 스케줄러가 사용되지 않음**

→이유:과거에는 적은 양의 메로리를 많은 프로세스들에게 할당하면 프로세스당 메모리 보유량이 적어져 장기 스케줄러가 이를 조절하는 역할을 했지만 현대의 운영체제에서는 프로세스가 시작되면 장기 스케줄러 없이 바로 그 프로세스에 메모리를 할당해 준비 큐에 넣어주게 된다.

 

$시분할 시스템(time sharing system)이란?

더보기

$시분할 시스템(time sharing system)이란?

: 여러 명의 사용자가 사용하는 시스템에서 컴퓨터가 사용자들의 프로그램을 번갈아가며 처리해줌으로써 각 사용자에게 독립된 컴퓨터를 사용하는 느낌을 주는 것으로, 라운드 로빈(Round Robin) 방식이라고도 합니다.

  • 여러 사용자가 각자의 단말장치를 통하여 동시에 운영체제와 대화하면서 각자의 프로그램을 실행한다.
  • 하나의 CPU는 같은 시점에서 여러 개의 작업을 동시에 수행할 수 없기 때문에, CPU의 전체 사용시간을 작은 작업 시간량으로 쪼개어 그 시간량 동안만 번갈아가면서 CPU를 할당하여 각 작업을 처리한다.
  • 다중프로그래밍 방식과 결합하여 모든 작업이 동시에 진행되는 것처럼 대화식 처리가 가능해짐
  • 시스템의 전체 효율은 좋아지나 개인별 사용자 입장에서는 반응 속도가 느려질 수 있음
  • 각 작업에 대한 응답 시간을 최소한으로 줄이는 것을 목적으로 하며, 하드웨어를 보다 능률적으로 사용할 수 있음.

2. 단기 스케줄러(Short-term Scheduler == CPU Scheduler)

: CPU스케줄러라고도 하며 준비상태의 프로세스 중에서 어떤 것을 실행 상태로 바꿀지를 결정하는 스케줄러이다.

(ready → running→waiting→ready)

→시분할 시스템에서는 타임 인터럽트로 인해 스케줄러가 호출됨.

  • CPU-메모리 간의 스케줄링을 담당
  • 프로세스에 스케줄링 알고리즘에 따라 CPU를 할당(scheduler dispatch)

3. 중기 스케줄러(Medium-term Scheduler == Swapper)

:현 시스템에서 메모리에 너무 많은 프로그램이 동시에 올라가는 것을 조절하는 스케줄러이다. (ready → suspended)

  • 메모리에 적재된 프로세스의 수를 조절함.
  • 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄 (swapping)
  • blocked 상태는 다른 I/O 작업을 기다리는 상태이기 때문에 스스로 ready state로 돌아갈 수 있지만 suspended상태는 외부적인 이유로 suspending 되었기 때문에 스스로 돌아갈 수 없다.

$스왑 아웃(Swap out)이란?

더보기

$스왑 아웃(Swap out)이란?

: 메모리에 많은 수의 프로세스가 올라와 프로세스당 할당된 메모리 양이 적어서 작업 수행에 문제가 생기고 이로 인해 디스크 I/O가 자주 발생하게 되는데 이는 시스템의 성능을 저하시킴.

→이를 해결하기 위해

메모리에 올라와 있는 프로세스 중 일부 프로세스의 메모리를 통째로 빼앗아 그 내용을 디스크의 스왑 영역에 저장하게 된다. 이와 같은 행위를 스왑 아웃(swap out)이라고 한다.

(예를 들어 10개의 프로세스가 메모리에 올라와있는데 11번째 프로세스가 실행됨. 올릴 공간은 없고 올라와있는 어떤 프로세스는 계속 이벤트를 기다림. 메모리 낭비가 됨 →그렇다면 기다리는 프로세스를 내리고 11번째 프로세스를 올리면 어떨까 내리는 행위가 바로 스왑 아웃이 됨.)

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함