이 장에서는 운영체제가 제공하는 핵심 개념 중 하나인 프로세스(process)에 대해 논의한다.
일반적으로 프로세스는 실행 중인 프로그램으로 정의한다. 프로그램은 디스크 상에 존재하며 실행을 위한 명령어와 정적 데이터의 묶음으로, 이 명령어와 데이터 묶음을 읽고 실행하여 프로그램에 생명을 부여하는 것이 운영체제이다.
프로세스의 구성 요소를 이해하기 위해서 하드웨어 상태를 이해해야 한다. 프로그램이 실행되는 동안 하드웨어 상태를 읽거나 갱신할 수 있다.
그중 가장 중요한 구성요소는 메모리이다. 명령어와 프로그램이 읽고 쓰는 데이터는 모두 메모리에 저장된다.
레지스터도 중요한 구성요소이다. 프로그램 카운터(PC)는 프로그램의 어떤 명령어가 실행중인지를 알려준다. 스택 포인터, 프레임 포인터는 함수의 변수와 리턴 주소를 저장하는 스택을 관리할 때 사용하는 레지스터이다.
프로그램은 영구 저장장치에 접근하기도 한다. 입출력 정보는 프로세스가 현재 열어놓은 파일 목록을 가지고 있다.
다음 챕터에서 자세히 다룰 예정이기 때문에 기본적인 기능에 대해서만 살펴보자

malloc(), free())main() 에서부터 프로그램을 시작. 운영체제는 CPU를 새로 생성된 프로세스에게 넘기게 되고 프로글매 실행이 시작된다.S
프로세스의 상태는 운영체제의 스케줄링 정책에 따라 결정된다.
운영체제에는 다양한 자료 구조들이 존재한다. 운영체제는 프로세스 리스트를 통해 다수의 프로세스들을 관리한다. 또한 프로세스의 관리를 위한 정보를 저장하는 자료 구조는 프로세스 제어 블록(PCB)라고 부른다.
운영체제도 일종의 프로그램으로 다른 프로그램의 다양한 정보를 유지하기 위한 자료구조를 가지고 있다.
프로세스의 상태를 파악하기 위한 프로세스 리스트, 어느 프로세스가 실행중인지 확인하기 위한 자료구조 등.

실제 운영체제는 더 복잡하긴 하지만 비슷한 프로세스 구조를 가진다. 운영체제는 프로세스가 중단되었을 때 레지스터 값을 따로 저장하고 이를 복원하여 프로세스의 실행을 재개한다 (Context Switch).