프로세스(Process)
프로세스(Process)란 운영체제(OS)에서 실행중인 프로그램을 뜻한다.
프로그램 vs 프로세스
프로그램이 실행되면 프로세스 인스턴스가 생성되는데, 인스턴스가 생성되었다는 것은 메모리에 적재되었다는 뜻이다.
- 프로그램
- 어떠한 작업을 위해 실행할 수 있는 파일
- 보조 기억장치(하드디스크, SSD)에 존재하며 실행되기를 기다리는 명령어(코드)와 정적인 데이터 묶음
- 프로세스
- 프로그램을 실행하게 되면 CPU를 차지하면서 명령을 수행하는 주체
- 프로그램 한 개의 인스턴스가 프로세스이다.
Process Control Block (PCB)
PCB는 Process Control Block(프로세스 제어 블록)의 줄임말로, 프로세스에 관한 메타 데이터를 저장하는 자료구조이다.
프로세스들이 교체되고 실행되는 과정에서 다음 프로세스, 이전 프로세스들을 빨리 빨리 가져와야 할 때 PCB를 이용해서 다른 프로세스들의 작업을 기억하고 가져온다. PCB는 운영 체제의 커널 내에서 관리되며, 각 프로세스마다 하나의 PCB가 할당된다. PCB는 일반적으로는 사용자가 접근하지 못하는 보호된 메모리 영역에 저장되며, 일부 OS에서는 운영 체제 커널 내부 에 저장된다. 저장되는 정보는 다음과 같다.
- Pointer (포인터): 프로세스의 현재 위치를 저장하는 정보이다.
- Process State (프로세스 상태): 프로세스가 현재 어떤 상태에 있는지를 나타내는 정보. 주요 상태에는 준비(Ready), 대기(Blocked), 실행(Running) 등이 있다.
- PID (프로세스 식별자): PID는 각 프로세스에 할당된 고유한 식별자이다. 시스템 내에서 프로세스를 구분하기 위해 사용
- Program Counter (프로그램 카운터): 프로그램 카운터는 현재 실행 중인 프로세스에서 다음에 실행될 명령어의 주소를 가리키는 레지스터이다. 명령어의 실행 위치를 추적하는 데 사용된다.
- Registers (레지스터): 현재 프로세스가 사용 중인 CPU 레지스터의 상태를 저장하는 정보
- Memory Limits (메모리 제한): PCB에는 프로세스가 사용할 수 있는 메모리의 범위를 제한하는 정보가 포함된다. 메모리 제한은 프로세스가 할당받은 메모리 영역의 시작 주소와 종료 주소를 포함한다.
- List of Open Files (열린 파일 목록): 프로세스가 현재 열어놓은 파일들의 목록을 나타내는 정보
※ 참고 : 프로세스의 메모리 구조
[운영체제] 프로세스 메모리 구조
시스템은 프로그램을 실행할 때 해당 프로그램을 메모리에 로드합니다. 그 메모리 구조에 대해 알아보겠습니다!실행되고 있는 프로그램으로, 프로세스는 각 메모리 공간을 시스템으로부터 할
velog.io
프로세스는 언제 생성되고 소멸할까?
프로세스의 라이프 사이클은 다음과 같은 5단계로 나뉜다.
- 생성 (New): 메모리로 프로그램이 올라가 실행준비를 하는 상태
- 준비 (Ready): 순서에 맞춰 CPU의 할당을 기다리는 상태. 이 때, 프로세스의 우선순위 대로 CPU를 할당받는다.
- 수행 (Running): 준비된 프로세스가 CPU를 할당받아 실행 상태로 전환되어 명령을 처리하는 상태
- 대기 (Waiting): 프로세스가 잠시 어떠한 조건(ex- I/O 처리)에 의해 작업이 이뤄질 수 없는 상태로 그 조건이 해결되기를 기다리는 상태
- 종료 (Termination): 프로세스가 작업을 마치면 종료 상태로 전환된다. 운영 체제는 프로세스가 사용한 자원을 해제하고 메모리를 반환한다.
Context Switching?
멀티태스킹 운영 체제에서 여러 프로세스나 스레드가 동시에 실행될 수 있지만, 실제로는 CPU가 한 번에 하나의 작업만 처리할 수 있다. 따라서 여러 작업이 동시에 실행되는 것처럼 보이게 하기 위해 CPU는 매우 빠른 속도로 작업 간에 전환을 수행한다.
Context Switching은 CPU가 이전에 실행 중이던 프로세스 상태 및 정보를 PCB에 저장하고, 다음에 실행할 프로세스의 상태 및 정보를 PCB에서 읽어 레지스터에 옮기는 과정이다.
다음 그림에서 Context Switching은 아래와 같은 단계로 진행된다.
- Process 1이 실행되고 있다.
- I/O System Interrupt 가 발생되어 진행중이던 Process 1의 정보를 PCB 1에 저장하고 전환한다.
- PCB 2에서 Process 2 정보를 불러오고 실행한다.
- 다시 I/O System Interrupt 가 발생되어 Process 2의 정보를 PCB 2에 저장하고 PCB 1으로부터 Process 1 정보를 불러온다.
- Process 1을 실행한다.