하루에 한 문제

프로세스 본문

CS/운영체제

프로세스

dkwjdi 2021. 5. 17. 23:13

프로그램 vs 프로세스

  • 프로그램 : 코드, 정적데이터 (디스크에 존재)
  • 프로세스 : 프로그램이 실행되기 위해 메모리에 적재된 상태

 

프로세스의 정의

실해중인 프로그램

  • 커널에 등록되고 커널의 관리하에 있는 작업
  • 각종 자원들을 요청하고 할당 받을 수 있는 개체
  • 프로세스 관리 블록(PCB)을 할당 받은 개체

 

자원의 개념

  • 커널의 관리하에 프로세스에게 할당/.반납 되는 수동적 개체

 

 

 

Process Control Block(PCB)

  • OS가 프로세스 관리에 필요한 정보 저장
  • 프로세스 생성 시, 생성된다.

PCB가 관리하는 정보

  • PID : 프로세스 고유 식별 번호
  • 스케쥴링 정보 : 프로세스 우선순위 등과 같은 스케쥴링 관련 정보
  • 프로세스 상태 : 자원 할당, 요청 정보 등
  • 메모리 관리 정보 : Page table, segment table등
  • 입출력 상태 정보 : 할당 받은 입출력 장치, 파일 등에 대한 정보 등
  • 문맥 저장 영역 : 프로세스의 레지스터 상태를 저장하는 공간 등
  • 계정 정보 : 자원 사용 시간등 관리

 

 

 

프로세스의 상태

우선 아래의 그림은 전체적인 그림이다. 전체적인 그림을 한번 보고 하나하나 살펴보자.

 

1. Created State

  • 작업을 커널에 등록
  • PCB할당 및 프로세스 생성
  • 커널 
    • 가용 메모리 공간 체크 및 프로세스 상태 전이
    • 가용메로리가 있다면 ready, 없다면 suspended ready로상태 전이

 

Ready State

  • 프로세서(CPU) 외에 다른 모든 자원을 할당 받은 상태(즉시 실행 가능 상태)
  • CPU를 할당받게 되면  running상태로 전이되는데 이를 dispatch라고 한다.

 

Running State

프로세서와 필요한 자원을 모두 할당 받은 상태

Running state -> ready state  (프로세서를 뺏김 -> 프로세서 스케줄링)

Block/sleep : Running state -> asleep state (I/O등 자원 할당 요청)

 

Blocked/Asleep State

  • 프로세서 외에 다른 자원을 기다리는 상태
  • Wake-up : Asleep state -> ready state

 

Suspended State

  • 메모리를 할당 받지 못한(빼앗긴) 상태
  • Memory images를 swap device에 보관 
  • 커널 또는 사용자에 의해서 발생

오로지 하나의 프로세스만 running 상태에 있을 수 있는 반면, 여러 개의 프로세스가 ready 상태나 asleep 상태에 있을 수 있다. 그러면 다음과 같은 프로세스도 있을 수 있다.

  • ready 상태에서 계속 CPU의 점유권을 못 가져가는 프로세스
  • asleep 상태에서 ready 상태로 못 넘어가는 프로세스

위의 두 개의 프로세스는 결과적으로 실행은 잘 되지도 않으면서 메모리에서 자리만 차지하고 있는 꼴이 된다. 이런 비효율은 없어져 줘야겠다. 즉, 다시 DISK로 swap out 해버린다. ready 상태에서 swap out하면 suspended ready 상태가 되고, asleep 상태에서 swap out하면 suspended block 상태가 되어버린다. 물론 이 두 상태에서 나중에 필요에 의해 swap in 하여 다시 메모리에 load될 수도 있다. 



 

출처

https://devuna.tistory.com/21

https://www.youtube.com/watch?v=jZuTw2tRT7w&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=5

https://operatingsystems.tistory.com/entry/OS-프로세스-관리Process-Management?category=495588

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

스케줄러 (scheduler) + Job,Ready,Device Queue란?  (0) 2021.05.18
멀티 프로세스와 멀티 스레드  (0) 2021.05.18
프로세스 간 통신 (IPC, Inter Process Communication)  (0) 2021.05.18
Thread(쓰레드)란?  (0) 2021.05.17
캐시  (0) 2021.05.17
Comments