Post

[OS 운영체제] 프로세스(Process)란?


프로세스 (Process) 란?


프로세스실행 중인 프로그램이다. 수많은 요소들로 구성된 개체로도 생각될 수 있다.

프로세스의 두 필수적인 요소는 프로그램 코드 및 그 코드와 연계된 데이터의 집합이다.

프로세서(CPU)가 프로그램 코드를 수행한다고 가정하면, 그 수행중인 개체가 프로세스이다.



프로세스의 5가지 상태 (Five-State Process Model)


image-20210112224216964


1. New(생성)

프로세스가 생성된 상태지만, 운영체제에 의해 수행 가능한 프로세스 풀로의 진입이 아직 허용되지 않은 프로세스

메모리 공간 할당, 프로세스 제어 블록(PCB) 생성 등 다양한 초기화 작업이 이루어짐


2. Ready(준비)

CPU를 사용할 수 있는 기회가 주어지면 수행될 준비가 되어있는 프로세스

준비 상태의 프로세스는 준비 큐(Ready Queue)에서 대기하며, 스케줄러가 프로세스를 선택하여 CPU를 할당할 때까지 기다림


3. Running(수행)

현재 CPU를 사용하여 실행 중인 프로세스

프로세스의 명령어가 순차적으로 실행되며, 운영체제는 프로세스의 수행 상태를 지속적으로 모니터링 함


4. Blocked(블록/대기)

특정 이벤트(I/O 작업 완료 등)가 발생할 때까지 수행될 수 없는 프로세스

프로세스는 블록 큐(Blocked Queue)에 들어가며, 이벤트가 발생하여 입출력 작업이 완료되면 다시 준비 상태로 전환되며, 이 상태에서는 CPU를 사용하지 않으며, 자원을 효율적으로 관리하기 위해 필요한 상태임


5. Exit(종료)

프로세스 수행이 중지되거나, 어떤 이유로 중단되었기 때문에 프로세스 풀에서 방출된 프로세스

프로세스가 정상적으로 실행을 완료했거나, 오류 또는 강제 종료로 인해 실행이 중지된 상태로, 운영체제가 프로세스의 자원을 해제하고, 프로세스 제어 블록을 삭제함


디스패처 (Dispatcher) 란?


디스패처프로세서(CPU)한 프로세스로부터 다른 프로세스로 교체해주는 프로그램이다.

쉽게 말해, 프로그램이 실행되다 중단되고, 다음 프로그램을 실행하게 해주는 프로그램이라 볼 수 있다.

위 사진의 Ready → Running 단계에서 , 스케줄러 또는 디스패처가 준비 상태에 있는 프로세스 중 하나를 선택해 실행하게 한다.



PCB (Process Control Block) 란?


프로세스 제어 블록(PCB)은 운영체제가 프로세스를 관리하기 위해 필요한 정보들을 담고있는 자료구조이다.

PCB의 주요 역할은, 수행 프로세스를 인터럽트한 후 나중에 그 인터럽트가 발생되지 않은 것처럼 프로세스 수행을 재개할 수 있도록 충분한 정보를 유지하는 것이다.

즉, 이런 프로세스 정보를 담은 블럭들이 있어 스위칭이 되어도 기억하고 이어서 실행을 할 수 있다.

PCB는 다음과 같은 정보를 담고 있다.


1. 프로세스 식별자 (Process ID)

각 프로세스를 다른 모든 프로세스로부터 구별하게 해주는 유일한 식별자

Winodws

image-20240717112900081


Linux

image-20240717113028193

각 프로세스를 구분하기 위해 고유한 식별 번호, 즉 프로세스 ID(PID)를 부여함


2. 프로세스 상태 (Process State)

프로세스의 생성(New), 준비(Ready), 실행(Running), 대기(Blocked), 종료(Exit) 등의 상태

이러한 상태는 프로세스의 생명 주기를 나타냄


3. 프로그램 카운터 (Program Counter)

프로그램에서 다음에 수행될 명령어의 주소

현재 명령어가 끝난 후 다음 명령어를 어디서 가져와야 할지를 알려주는 역할


4. 레지스터 저장 영역

누산기, CPU 레지스터, 범용 레지스터 등의 정보

CPU가 빠르게 접근할 수 있는 임시 저장소로, 프로세스가 중단되었다가 다시 실행될 때 이전 상태를 복원하기 위해 이 값을 저장함


5. 프로세서 스케줄링 정보

프로세스의 우선순위, 스케줄링과 관련된 정보를 저장

이 정보를 바탕으로 어떤 프로세스에 CPU를 할당할지 결정함


6. 메모리 포인터

프로세스와 관련된 프로그램 코드 및 데이터, 다른 프로세스들과 함께 공유되는 메모리 영역을 가리키는 포인터

프로세스가 사용하는 프로그램 코드, 데이터, 스택 영역 등을 가리킴


7. 메모리 관리 정보

프로세스 주소 공간 정보 저장

프로세스의 메모리 할당 정보를 관리하며, 여기에는 페이지 테이블, 세그먼트 테이블, 베이스와 리미트 레지스터 등이 포함됨


8. 입출력 상태 정보

프로세스의 입출력 요청과 관련된 정보를 저장

미해결 입출력 요청, 프로세스에 할당된 입출력 장치, 사용 중인 파일 리스트 등이 포함됨


9. 계정 정보

프로세스의 계정과 관련된 정보를 저장

프로세서(CPU) 사용 시간, 실제 사용 시간, 계정 번호, 시간 제한 등이 포함됨


This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.