01 프로세스의 개요

1. 프로세스의 개념

개발자가 개발하는 것은 프로그램이다. 이를 실행하여 실제 동작을 수행하는 것이 프로세스이다. 프로그램은 저장장치에 저장되어 있는 정적인 상태이고, 프로세스는 실행을 위해 메모리에 올라온 동적인 상태이다.

2. 요리사 모형의 비유

3. 프로그램에서 프로세스로의 전환

프로세스는 컴퓨터 시스템의 작업 단위로 태스트(task) 라고도 부른다.

정적으로 저장되어 있는 프로그램을 프로세스로 전환하여 실제로 실행시키려면 어떤 과정을 거칠까? 일단 저장장치에 저장되어 있는 프로그램을 적당한 위치의 메모리에 할당한다. 그와 동시에 프로세스의 정보를 담고 있는 프로세스 제어 블록(PCB, Process Control Block) 이 생성된다. 프로세스 제어 블록에는 프로세스 구분자, 메모리 관련 정보, 각종 중간값 등의 정보가 포함되어 프로세스를 관리하는데 사용한다.

프로세스 제어 블록은 운영체제가 해당 프로세스를 위해 관리하는 데이터 구조이기 때문에 운영체제 영역에 만들어진다. 또한 프로세스가 종료되면 프로세스가 메모리에서 삭제되고 프로세스 제어 블록도 폐기된다.

프로그램이 메모리에 올라와 프로세스가 되는 과정

프로그램이 메모리에 올라와 프로세스가 되는 과정

운영체제도 프로그램이기 떄문에 프로세스 형태로 실행된다. 컴퓨터의 전원을 켰을 때 운영체제 프로세스를 메모리에 올리는 프로그램인 부트스트랩이 있다. 부트스트랩이 많은 운영체제 관련 프로세스를 실행한 후 일반 프로세스가 실행되므로 컴퓨터에는 일반 사용자의 사용자 프로세스와 운영체제의 커널 프로세스가 섞여서 실행된다.

4. 프로세스의 상태

일괄 작업 방식은 하나의 프로세스가 CPU 를 얻으면 프로세스가 종료될 때까지 실행되므로 프로세스의 상태는 생성, 실행, 완료이다.

시분할 방식은 할당된 시간이 끝나면 작업을 중지하고 다른 작업을 시작해야 하기 때문에 상태가 조금 더 복잡하다.

간단한 프로세스의 상태

간단한 프로세스의 상태