본문 바로가기
Computer Science/운영체제

프로세스와 프로세스의 상태

by 양찬우 2021. 5. 25.
728x90

프로세스 목록

1. 프로세스란?

  • 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리 상에서 실행되는 작업 단위
  • 컴퓨터에서 연속적으로 실행되고 있는 프로그램
  • 사용 중인 파일, 데이터, 프로세서 상태, 메모리 영역 주소 공간, 스레드 정보 전역 데이터가 저장된 메모리 부분 등 수 많은 자원을 포함하는 개념
  • 스케줄링의 대상이 되는 작업(task)

2. 프로세스의 메모리 영역

Layout of a process in memory: 프로세스의 메모리 영역

Code(Text) : 실행되는 코드

Data : 전역변수

Heap : 프로그램 런타임 중 동적 할당되는 메모리

Stack : 함수 실행 시 임시적으로 사용되는 저장공간 (지역변수, 매개변수)

3. 프로세스의 상태

Diagram of process state

커널 내에는 준비 큐, 대기 큐, 실행 큐 등의 자료구조가 있으며 커널은 이것들을 이용해 프로세스 상태를 관리한다.

  • 생성(new/create) : fork()를 받아 프로세스가 생성되는 중이다.
  • 실행(running) : 프로세스가 CPU를 차지하여 명령어들이 실행되고 있다.
  • 준비(ready) : 프로세스가 CPU를 사용하고 있지는 않지만 언제든지 사용할 수 있는 상태로, CPU가 할당되기를 기다리고 있다. 일반적으로 준비 상태의 프로세스 중 우선순위가 높은 프로세스가 CPU를 할당받는다.
  • 대기(waiting / block) : 보류(block)라고 부르기도 한다. 프로세스가 입출력 완료(I/O completion), 시그널 수신 등 어떤 사건을 기다리고 있는 상태를 말한다. 
  • 종료(terminated) : 프로세스의 실행이 종료되었다.

4. 프로세스의 상태전이

ready queue와 waiting queue

프로세스의 상태전이가 일어나면 각각의 프로세스의 PCB를 linked list로 ready queue / waiting queue로 옮기며 스케줄링이 진행된다. 

하나의 프로그램이 실행되면 그 프로그램에 대응되는 프로세스가 생성되어 준비 리스트의 끝에 들어간다. 준비 리스트 상의 다른 프로세스들이 CPU를 할당받아 준비 리스트를 떠나면, 그 프로세스는 점차 준비 리스트의 앞으로 나가게 되고 언젠가 CPU를 사용할 수 있게 된다.

a. 디스패치(dispatch)

준비 리스트의 맨 앞에 있던 프로세스가 CPU를 점유하게 되는 것, 즉 준비 상태에서 실행 상태로 바뀌는 것을 디스패치라고 하며 다음과 같이 표시한다.dispatch (processname) : ready → running

b. 보류(block)

실행 상태의 프로세스가 허가된 시간을 다 쓰기 전에 입출력 동작을 필요로 하는 경우 프로세스는 CPU를 스스로 반납하고 보류 상태로 넘어 간다. 이것을 보류라고 하며 다음과 같이 표시한다.block (processname) : running → blocked

c. 깨움(wakeup)

입출력 작업 종료 등 기다리던 사건이 일어났을 때 보류 상태에서 준비 상태로 넘어가는 과정을 깨움이라고 하며 다음과 같이 표시한다.wakeup (processname) : blocked → ready

d. 시간제한(timeout)

운영체제는 프로세스가 프로세서를 계속 독점해서 사용하지 못하게 하기 위해 clock interrupt를 두어서 프로세스가 일정 시간 동안만 (시분할 시스템의 time slice) 프로세서를 점유할 수 있게 한다timeout(processname) : running -> ready

 

 

참고용어

  • 프로그램: 하드 디스크 등의 저장 공간에 저장되어 있는 실행 코드
  • 커널: 운영체제 프로그램 중에서 가장 핵심적인 부분, 기능을 묶은 것
  • 프로세서:컴퓨터 운영을 위해 기본적인 명령어들을 처리하고 반응하기 위한 논리 회로, CPU라는 용어를 대체
  • 스레드: 어떤 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위, 프로세스가 세분화된 작은 일들

 

참고문헌

728x90

댓글