Process(프로세스)는 커널의 관점에서 보면
커널이 하나의 실행 주체에게 부여한 모든 자원과 권한의 묶음이라고 할 수 있다.

운영체제의 구현은 각 프로세스에게 독립된 메모리 공간을 요구한다.
또한 해당 프로세스가 실제로 실행될 때,
프로세스는 프로그램에 대한 상세 정보를 가지고 있어야 커널이 관리할 수 있기 때문에,
프로세스는 커널 메모리에 존재하는 여러 구조체들을 담고 있게 된다.

프로세스가 가지고 있는 정보들은 다음과 같다:

  1. 독립적인 가상 주소 공간 (Virtual Memory)
  2. 접근 권한과 보안 컨텍스트
  3. 실행 흐름 (Thread)
  4. 열린 파일과 I/O 상태
  5. 신호, 타이머, IPC 등

위 특징들을 종합하여 정리하면,
프로세스는 이 모든 상태를 묶어서 커널이 스케줄링(Scheduling)하고, Context Switch를 할 수 있는 단위로 만든 하나의 객체이다.

각 프로세스는 하나의 작은 운영체제라고 하는 것도 이러한 맥락에서 나온 말이라고 볼 수 있다.