프로세스(Process)란?

이창윤·2022년 7월 13일
0

프로세스의 개념

실행중인 프로그램
운영체제로부터 시스템 자원을 할당 받는 작업의 단위

프로그램:

  • 컴퓨터가 특정 동작을 수행하기위해 작성된 실행가능한 명령어와 정적 데이터의 묶음
  • 파일이 저장장치에 저장되어 있지만 메모리에 할당이 되지 않은 정적인 상태
  • .exe 파일처럼 사용자가 실행하기 전의 파일들

프로그램을 실행하면 해당 파일이 메모리에 할당 되어서 정적인 상태에서 동적인 상태로 변하고, 운영체제의 CPU 제어권을 받을 수 있는 상태의 프로그램을 프로세스라고 함

프로세스의 구성

◻ Stack

  • 함수의 매개변수, 지역변수, 리턴값 등 임시적인 데이터를 저장하는 영역
  • 컴파일 타임에 크기가 결정되므로 스택 영역을 초과하면 stack overflow가 발생

◻ Heap

  • 동적으로 할당되는 데이터를 저장하는 영역
  • 사용자가 필요할 때 사용하므로 런타임에 크기가 결정

◻ Data

  • 전역변수, 정적변수 등 프로그램이 사용하는 데이터를 저장하는 영역
  • 초기화 된 데이터와 초기화되지 않은 데이터(BSS)로 구분되어있음

◻ Text(Code)

  • 프로그램의 코드가 CPU에서 수행할 수 있는 기계어 명령 형태로 변환되어 저장되는 영역
  • 컴파일 타임에 결정되고 중간에 바꿀 수 없도록 Read-Only로 되어있음

프로세스의 상태

  • New: 프로세스가 생성되는 도중의 상태
  • Ready: CPU에 의해 실행되기를 기다리고 있는 상태, 준비 큐에서 대기
  • Running: CPU가 프로세스를 실행하고 있는 상태
  • Waiting: 프로세스가 입출력 완료, 시그널 수신 등 어떤 이벤트를 기다리고 있는 상태
  • Terminated: 프로세스가 완전히 종료된 상태

프로세스의 상태 전이

1. Admit [New -> Ready]

  • 운영체제가 프로그램을 메모리로 올리는 것을 허락함: 프로세스 생성이 가능하여 승인됨
  • 메모리의 공간이 한정적이고 프로그램이 많아지면 각각의 대기시간이 길어지므로 CPU가 모든 프로세스를 부드럽게 처리하기 어렵기 때문에 운영체제의 허락을 받아야 한다

2. Dispatch [Ready -> Running]

  • 스케줄러에 의해 준비 큐에 있는 프로세스를 선택해 CPU에 할당
  • CPU가 다른 프로세스를 실행하고 있으면 기존 프로세스의 상태를 PCB에 저장하고 새로운 프로세스의 상태를 적재하는 Context Switching 수행

3. Interrupt [Running -> Ready]

  • 예외, 입출력, 이벤트 등이 발생하여 현재 실행 중인 프로세스를 잠시 멈추고 해당 작업을 먼저 처리

선점(Preemptive)스케줄링 채택 시

  • CPU를 점유중인 프로세스가 할당된 시간을 모두 사용하면 Timer Interrupt가 발생

4. Block [Running -> Waiting]

  • 프로세스가 입출력 등의 이벤트를 즉시 해결할 수 없어 필요한 자원을 할당 받기를 기다림

5. Wakeup [Waiting -> Ready]

  • Waiting 상태에서 필요한 자원을 할당 받으면 다시 Ready상태로 돌아감

6. Exit [Running -> Terminated]

  • 프로세스가 CPU를 할당받아 작업을 모두 수행함

Process Control Block (PCB)

운영체제가 프로세스의 상태 관리와 Context Switching에 필요한 정보를 저장하는 커널 내의 자료구조

PCB에 저장되어 있는 정보:

  • 포인터: 프로세스가 위치한 메모리 주소에 대한 포인터 (준비 큐에서 사용)
  • 프로세스의 상태 (Process State): ready, running 등
  • 프로세스 식별자 (PID)
  • 프로그램 카운터 (Program Counter): 프로세스가 다음에 실행할 명령어의 주소를 가리킴
  • 레지스터 정보: 이전 작업을 중단된 위치에서부터 이어서 할 수 있도록 누산기, 스택, 인덱스 레지스터 등을 저장
  • CPU 스케줄링 정보: 프로세스의 우선 순위, 최종 실행 시각, 총 CPU 점유시간, 스케줄링 큐 포인터 등
  • 메모리 관리 정보: 프로세스의 메모리 주소, 페이지 테이블, 세그먼트 테이블 등
  • 입출력 상태 정보: 프로세스에 할당된 입출력장치 목록, 열린 파일 목록 등

출처 및 참고

프로세스 알아보기 (메모리 구조, 상태 전이)
프로세스와 스레드
[ OS] 프로세스의 개념, 상태, 제어

0개의 댓글