Computer Science/OS

프로세스(Process)

부리부리부리부리 2023. 12. 11. 21:32

 

프로세스(Process)란 운영체제(OS)에서 실행중인 프로그램을 뜻한다.

 

프로그램 vs 프로세스

 

프로그램이 실행되면 프로세스 인스턴스가 생성되는데, 인스턴스가 생성되었다는 것은 메모리에 적재되었다는 뜻이다. 

 

  • 프로그램
    • 어떠한 작업을 위해 실행할 수 있는 파일
    • 보조 기억장치(하드디스크, SSD)에 존재하며 실행되기를 기다리는 명령어(코드)와 정적인 데이터 묶음
  • 프로세스
    • 프로그램을 실행하게 되면 CPU를 차지하면서 명령을 수행하는 주체
    • 프로그램 한 개의 인스턴스가 프로세스이다.

구글 크롬 프로그램의 수많은 프로세스들

 

Process Control Block (PCB)

 

PCB는 Process Control Block(프로세스 제어 블록)의 줄임말로, 프로세스에 관한 메타 데이터를 저장하는 자료구조이다.

프로세스들이 교체되고 실행되는 과정에서 다음 프로세스, 이전 프로세스들을 빨리 빨리 가져와야 할 때 PCB를 이용해서 다른 프로세스들의 작업을 기억하고 가져온다. PCB는 운영 체제의 커널 내에서 관리되며, 각 프로세스마다 하나의 PCB가 할당된다. PCB는 일반적으로는 사용자가 접근하지 못하는 보호된 메모리 영역에 저장되며, 일부 OS에서는 운영 체제 커널 내부 에 저장된다. 저장되는 정보는 다음과 같다.

 

  1. Pointer (포인터): 프로세스의 현재 위치를 저장하는 정보이다.
  2. Process State (프로세스 상태): 프로세스가 현재 어떤 상태에 있는지를 나타내는 정보. 주요 상태에는 준비(Ready), 대기(Blocked), 실행(Running) 등이 있다.
  3. PID (프로세스 식별자): PID는 각 프로세스에 할당된 고유한 식별자이다. 시스템 내에서 프로세스를 구분하기 위해 사용
  4. Program Counter (프로그램 카운터): 프로그램 카운터는 현재 실행 중인 프로세스에서 다음에 실행될 명령어의 주소를 가리키는 레지스터이다. 명령어의 실행 위치를 추적하는 데 사용된다.
  5. Registers (레지스터): 현재 프로세스가 사용 중인 CPU 레지스터의 상태를 저장하는 정보
  6. Memory Limits (메모리 제한): PCB에는 프로세스가 사용할 수 있는 메모리의 범위를 제한하는 정보가 포함된다. 메모리 제한은 프로세스가 할당받은 메모리 영역의 시작 주소와 종료 주소를 포함한다.
  7. List of Open Files (열린 파일 목록): 프로세스가 현재 열어놓은 파일들의 목록을 나타내는 정보

 

※ 참고 : 프로세스의 메모리 구조

https://velog.io/@cchloe2311/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B5%AC%EC%A1%B0

 

[운영체제] 프로세스 메모리 구조

시스템은 프로그램을 실행할 때 해당 프로그램을 메모리에 로드합니다. 그 메모리 구조에 대해 알아보겠습니다!실행되고 있는 프로그램으로, 프로세스는 각 메모리 공간을 시스템으로부터 할

velog.io

 

프로세스는 언제 생성되고 소멸할까?

Life Cycle

프로세스의 라이프 사이클은 다음과 같은 5단계로 나뉜다.

 

  1. 생성 (New): 메모리로 프로그램이 올라가 실행준비를 하는 상태
  2. 준비 (Ready): 순서에 맞춰 CPU의 할당을 기다리는 상태. 이 때, 프로세스의 우선순위 대로 CPU를 할당받는다.
  3. 수행 (Running): 준비된 프로세스가 CPU를 할당받아 실행 상태로 전환되어 명령을 처리하는 상태
  4. 대기 (Waiting): 프로세스가 잠시 어떠한 조건(ex- I/O 처리)에 의해 작업이 이뤄질 수 없는 상태로 그 조건이 해결되기를 기다리는 상태
  5. 종료 (Termination): 프로세스가 작업을 마치면 종료 상태로 전환된다. 운영 체제는 프로세스가 사용한 자원을 해제하고 메모리를 반환한다.

Context Switching?

 

멀티태스킹 운영 체제에서 여러 프로세스나 스레드가 동시에 실행될 수 있지만, 실제로는 CPU가 한 번에 하나의 작업만 처리할 수 있다. 따라서 여러 작업이 동시에 실행되는 것처럼 보이게 하기 위해 CPU는 매우 빠른 속도로 작업 간에 전환을 수행한다.

 

Context Switching은 CPU가 이전에 실행 중이던 프로세스 상태 및 정보를 PCB에 저장하고, 다음에 실행할 프로세스의 상태 및 정보를 PCB에서 읽어 레지스터에 옮기는 과정이다. 

 

 

다음 그림에서 Context Switching은 아래와 같은 단계로 진행된다.

 

  1. Process 1이 실행되고 있다.
  2. I/O System Interrupt 가 발생되어 진행중이던 Process 1의 정보를 PCB 1에 저장하고 전환한다.
  3. PCB 2에서 Process 2 정보를 불러오고 실행한다.
  4. 다시 I/O System Interrupt 가 발생되어 Process 2의 정보를 PCB 2에 저장하고 PCB 1으로부터 Process 1 정보를 불러온다.
  5. Process 1을 실행한다.