# Process

## 프로세스란 무엇을 의미하나요?

* **컴퓨터에서 실행되고 있는 프로그램**을 `프로세스`라고 한다.
* 스케줄링의 대상이 되는 작업(task)과 같은 의미로 쓰인다.
* 프로세스 내부에는 **최소 하나의 쓰레드**를 가지고 있는데, 실제로는 쓰레드 단위로 스케줄링을 하게 된다.
* `운영 체제 프로세스`, `사용자 프로세스` 두 가지 유형의 프로세스가 있다.

\\

## 프로세스의 특징을 설명해 주세요.

* 프로세스는 각각 독립된 메모리 영역(`Code`, `Data`, `Heap`, `Stack`)을 할당 받는다.
* 기본적으로 프로세스 당 최소 한 개의 쓰레드(메인 쓰레드)를 가지고 있다.
* 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다.
* 한 프로세스가 다른 프로세스의 자원에 접근하려면 **프로세스 간의 통신(IPC, Inter-Process Communication)** 을 사용해야 한다.
  * **프로세스 간 통신의 예로는 파이프, 파일, 소켓 등을 이용한 통신 방법이 있다.**
