관리 메뉴

hye-_

프로세스의 상태변화 알아보기 본문

CS/운영체제

프로세스의 상태변화 알아보기

hyehh 2023. 3. 15. 17:50
728x90
반응형
SMALL

프로세스의 상태변화 알아보기

1. 프로세스 크게 나누면 : 실행 프로세스, 비실행 프로세스

2. 실행상태를 세분화하면 : 준비, 대기, 실행

3. 프로세스의 구체적인 상태 변화 : 프로세스의 5가지 상태, 4가지의 전이 과정 


 

1. 프로세스 크게 나누면 

프로세스는 크게 실행과 비실행 프로세스로 나눌 수 있다.

 

PCB안에 프로세스 상태정보가 있다. 상태정보는 비실행, 실행으로 나뉜다.

 

-디스패치가 일어나는 과정-

 

프로세스가 생성이 되면

CPU를 바로사용하면 좋겠지만, 다른 프로세스가 CPU를 사용하고 있다면 기다려야 된다.

 

기다리고 있으면 비실행 상태 

수행이 되고 있지 않은 상태이다. 

 

실행되던 프로세스가 종료가 되면

CPU를 사용하는 자리가 비어있게 된다.

그러면 비실행 상태인 프로세스가 들어가서 실행을 하게 된다.

 

비실행 상태에서 실행상태로 바뀌게 된다.

이 과정을 디스패치 과정이라고 한다.


-인터럽트가 일어나는 과정-

 

실행을 잘하고 있었는데 어떤 동작에 의해서

자신의 할 일을 다 못하고 다시 비실행상태로 돌아가는 경우가 있다.

 

이런 경우를 인터럽트라고 한다.

실행 중 예기치 않은 사건으로 인해 돌아가는 과정을 이야기하는 것이다.


인터럽트 걸려서 다시 비실행되었다가 디스패치되어 다시 실행될 수 있다.

모든 할 일을 다 끝내면 종료 상태가 된다. 


 

2. 실행상태를 세분화하면

실행 상태 프로세스는 실행, 대기, 준비로 세분화할 수 있다.

실행 상태

1. 명령어가 수행되고 있는 상태 

2. CPU안에서 동작되고 있는 상태

3. 프로세스가 CPU를 점유하고 있는 상태

 

준비 상태

CPU를 사용하려고 준비 중인 상태

 

대기 상태로 가는 과정 

1. P1이 실행하고 있는데

2. 프린터를 하겠다고 중간에 입출력 관련신호가 왔다.

3. 그러면 P1은 자기가 하던 일을 멈추고 CPU를 줘야 한다.

4. P1은 다시 준비상태로 되돌아가는 것이 아닌 대기상태로 빠지게 된다.

5. 입출력 이벤트가 끝나게 되면 대기상태에 있던 P1은 준비상태로 간다.

6. P1은 준비상태에서 CPU를 사용할 수 있게 될 때 실행상태로 넘어간다.

 


프로세스 상태변화는 누가 무엇을 이용해서 관리할까?

프로세스의 상태 변화는 운영체제가 프로세서 스케줄러 이용하여 관리를 한다.

 

프로세서 스케줄러에는 여러 종류의 스케줄러가 존재한다. 

스케줄러 안에는 각자의 역할을 담당할 수 있는 또 다른 스케줄러가 존재한다.

1. 작업 스케줄러

2. 프로세스 스케줄러

.. 등등


작업 스케줄러는 어떤 역할을 하나?

지금 CPU를 쓰고자 하는 프로세스들을 선정하고, CPU를 쓸 수 있도록 하기 위한 준비 리스트에 삽입시켜준다.

 자세히 이야기하자면,

  스풀러가 디스크에 저장한 작업 중 실행할 작업 선정하고

  준비 리스트에 삽입하여 다중 프로그래밍의 정도 결정 하게 된다.

 

 

프로세스 스케줄러는 어떤 역할을 하나?

선정한 작업의 상태를 변화시키며 프로세스의 생성에서 종료까지 수행을 담당한다.

 


3. 프로세스의 구체적인 상태 변화

프로세스의 구체적인 상태변화

그림을 보며 스케줄러 확인해 보기-프로세스의 생성과 준비상태를 관장하는 스케줄러는?

작업 스케줄러 :  생성되고 CPU 필요한 애들 뽑아서 선정하고 준비되었다는 리스트에 넣어줌


프로세스 상태변화 경우의 수 1 (Dispatch)

1. 프로세스가 생성이 된다.

2. 프로세스는 준비상태로 가야 한다. 

3. 프로세스가 준비상태에서 실행상태로 간다. (디스패치라고 한다.)

4. 프로세스가 실행상태에서 다 완료되면 종료상태로 간다.

 

프로세스 상태변화 경우의 수 2 (Dispatch, Timer Runout)

1. 프로세스가 생성이 된다.

2. 프로세스는 준비상태로 가야 한다. 

3. 프로세스가 준비상태에서 실행상태로 간다. (디스패치라고 한다.)

4. 프로세스가 실행상태에서 실행을 하는데 작업시간이 15초가 걸린다.

    그런데 CPU는 모든 프로세스들에게 딱 3초 동안만 수행할 수 있는 설정이 되어있다면

5. 프로세스는 3초동안만 수행하고 시간종료로 준비상태로 돌아간다. Timer Runout에 걸린 것이다.

 

프로세스 상태변화 경우의 수 3 (Dispatch, Block, Wakeup)

1. 프로세스가 생성이 된다.

2. 프로세스는 준비상태로 가야 한다. 

3. 프로세스가 준비상태에서 실행상태로 간다. (디스패치라고 한다.)

4. 프로세스가 실행상태에서 이벤트나 입출력 신호가 발생되었다.

5. 프로세스는 대기상태로 간다. 이 과정을 Block이라고 한다

6. 이벤트나 입출력이 완료되었다는 신호를 받으면 프로세스는 준비상태로 간다. 이 과정을 Wakeup이라고 한다.

 


프로세스의 5가지 상태

생성, 준비, 대기, 실행, 종료 

 

이러한 상태들 사이에 4가지의 전이 과정

Dispatch, Timer Runout, Block, Wakeup

 

소프트웨어를 수행할 때 내부적으로 프로세스들은 이러한 과정을 거쳐서 수행되고 있다.


생성상태

1. 사용자가 요청한 작업이 커널에 등록됨

2. PCB가 할당되어 새로운 프로세스가 만들어지는 상태

 

 

준비상태

1. 프로세스가 모든 필요한 자원을  할당받고,

   하드웨어 자원인 프로세서(CPU..)를 할당받기 위해서 기다리고 있는 상태이다.

2. 즉시 실행 가능한 상태 


 

실행상태

1. 프로세서에 의해 실행되고 있는 상태 

2. 프로세스가 원하는 모든 자원을 소유한 상태 

 

실행상태의 행위

선점, 블럭

 

선점(Preemption)

실행 중인 프로세스가 프로세서 시간 할당량 (time quantum, time slice) 종료되었거나,

우선순위 등으로 인하여 자신에게 할당된 프로세서를 반납해야 하는 경우 준비 상태로의 전이되는 

Timer Runout라고 하는데, 여기서 다른 프로세스가 쓰고 있는 것을 뺏은 행위를 선점했다. 라고 한다.

 

블럭(Block/Sleep)

프로세스가 실행 중 자원을 요청하거나 기타 다른 이유로 system call을 하는 경우 대기 상태로 전이되는

Block과정이라고하고, 이것을 블럭행위라고 한다.


대기상태

1. 프로세스가 프로세서 외의 특정 자원을 요청하고 이를 할당받을 때까지 기다리고 있는 상태

2. 커널 내의 자원 할당 Routine에서 관리한다.

3. 자원의 요청은 System Call을 통해 이루어진다.

 

종료상태

1. 프로세스가 종료되는 상태로 코드와 사용했던 데이터를 메모리에서 삭제하고 프로세스 제어 블럭을 폐기하는 단계 

2. 프로세서 외 특정자원을 요청하고, 이를 할당받을 때까지 기다리고 있는 상태이다.

    프로세서를 다 썼기 때문에 프로세서 외 다른 자원을 요청하는 것이다.


참고사이트 - 메가존아이티평생교육원 | 운영체제 | 김지영

728x90
반응형
LIST

'CS > 운영체제' 카테고리의 다른 글

스레드는 병렬 수행을 한다. 그 이점은?  (0) 2023.03.15
스레드의 개념  (0) 2023.03.15
프로세스의 3가지 종류  (0) 2023.03.15
작업과 프로세스의 개념 비교  (0) 2023.03.15
운영체제의 미래, 인공지능 OS  (1) 2023.03.01