프로세스는 컴퓨터에서 연속적으로 실행되고 있는 프로그램이다.

종종 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 쓰인다. 여러 개의 프로세서를 사용하는 것을 멀티프로세싱이라고 하며 같은 시간에 여러 개의 프로그램을 띄우는 시분할 방식을 멀티태스킹이라고 한다. 프로세스 관리는 운영 체제의 중요한 부분이 되었다.

이를 처리하는 것이 프로세서이며, 프로세서는 하드웨어(CPU, GPU)이다.

프로세스의 특징

프로세스는 각각 독립된 메모리 영역과 주소 공간을 운영체제로부터 할당 받는다.

  • code: 프로그램 코드
  • data: 전역 변수
  • stack: 임시 데이터
  • heap: 프로세스가 실행되는 도중 동적으로 메모리가 할당되는 데이터

프로세스는 각각 독립된 영역이기에 다른 프로세스의 자원에 접근하려면 IPC를 사용해야 한다.

Data & BSS

초기화 된 데이터는 data 영역에 저장되고, 초기화 되지 않은 데이터는 BSS (Block Stated Symbol) 영역에 저장된다.
그 이유는 아래와 같다.

OS가 프로그램을 메모리에 적재할 때, Data 영역은 하드디스크에 저장된 실행 파일에서 실제 값을 무겁게 읽어와서 메모리에 덮어씁니다. 반면, BSS 영역은 디스크를 읽을 필요 없이 OS가 메모리에 빈 공간만 먼저 할당한 뒤 자체적으로 0으로 채워버립니다(Zero-initialized).

프로세스의 상태

  • 생성(new or create) : 프로세스가 생성되기 위해 준비 된 상태로 아직 보조 메모리에 프로그램 형태로 존재한다. (PCB 생성 시점)
  • 준비(ready) : 프로세스가 CPU를 사용하고 있지는 않지만 언제든지 사용할 수 있는 상태로, CPU가 할당되기를 기다리고 있다. (순서는 CPU 스케줄링 알고리즘에 따라 결정)
  • 실행(running) : 프로세스가 CPU를 차지하여 명령어들이 실행되고 있다.
  • 대기(waiting) : 보류(block)라고 부르기도 한다. 프로세스가 입출력 완료, 시그널 수신 등 어떤 사건을 기다리고 있는 상태를 말한다.
  • 종료(terminated) : 프로세스의 실행이 종료되었다.

https://www.geeksforgeeks.org/operating-systems/states-of-a-process-in-operating-systems/

출처 및 참고자료

https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4
https://velog.io/@soreelove0809/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-vs-%EC%93%B0%EB%A0%88%EB%93%9C