프로세스는 수행중인 프로그램이다. 운영체제를 이해하는데 가장 중요하다.
프로세스: 운영체제를 이해하기 위한 가장 기본적인 개념. 멀티프로그래밍의 기본 단위이다.
멀티 프로그래밍: 두개 이상의 프로그램이 도는 것.
프로세스 하나와 스레드 하나는 구분이 안된다. 프로세스가 실행되는 순서는 운영체제에서 스케줄링을 통해 정할 수 있다.
프로세스는 action이 일어나고 있음을 알려준다.
예를 들어 볶음밥 만드는 프로그램을 수행한다고 하면 실제로 진행 중일 때 볶음밥 만들기 프로세스라고 말할 수 있다. 다만 볶음밥을 만드는 것은 visible 하지만 프로그램의 수행은 invisible하다. 따라서 데이터의 시간에 대한 변화(stat, 상태 또는 snapshot)로써 그들을 관리함으로써 프로세스를 관리한다.
snapshot마다 변화를 볼 수 있으므로 관리가 가능한 것이다. 보이지 않지만 관리가 이루어져야한다.
program counter(PC)가 필요하다. 위치가 저장되어 있어서 프로그램의 어디를 실행하는지 알 수 있다. 다음에 해야할게 어디인지 저장하는 곳은 stack pointer(SP)이다.
예를 들어서 프로그램 실행이 A, B 순서로 되어 있다. 만약 프로그램 A를 실행하다가 A에서 함수를 호출하면 B의 위치를 SP에 저장하고 PC에 위치를 넣는다. CPU안에는 중요한 정보를 저장하는 register가 있고 snapshot안에 들어간다.
프로그램 카운터, 스택 포인터, 데이터, 레지스터를 모두 합치면 Program Counter Block(PCB)이 된다.
프로세스는 수행되면서 자신의 상태가 바뀐다. 이 상태는 연속적이지 않다. 상태 변화를 일으키는 이벤트로는 interrupt by timer, dispatch, I/O wait, I/O complete가 있다.
프로세스의 상태로는 5가지가 있다.
프로세스의 상태 전이도
상태 변이에는 4가지가 있는데 자의, 타의로 나눌 수있다.