프로그램은 파일이 저장장치에 저장되어있지만, 메모리에는 올라가지 않은 정적인 상태
→ 운영체제로부터 독립적인 메모리 공간을 할당 받지 않은 상태
이러한 정적인 상태의 프로그램을 실행하면, 운영체제는 작업을 위한 메모리를 할당하고 동적인 상태가 된다. 이러한 상태의 프로그램을 프로세스라고 한다.
→ 실행 중인 프로그램을 프로세스라고 생각
프로그램이 복잡해지고, 많은 일을 하게되면서 하나의 프로세스만으로 작업을 수행하기에는 많은 어려움이 발생
여러개의 프로세스를 사용하기에는 프로세스간에 할당된 메모리에 접근을 해야하기에 안정성이나 비용에 대한 코스트가 큼.
→ 하나의 프로세스 자원을 공유하는 더 작은 작업단위인 스레드를 통해 해결
CPU 입장에서의 최소 작업 단위는 스레드가 되고, 운영체제의 입장에서 최소 작업 단위는 프로세스가 된다.
프로세스는 실행 중인 프로그램, 디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 있는 것을 의미한다.
프로세스에 대한 중요한 정보를 저장하고 있는 운영체제 커널의 자료구조 (운영체제가 프로세스를 표현한 것)
운영체제는 프로세스 생성과 동시에 고유한 PCB를 생성한다.
PCB는 프로세스의 중요한 정보를 담고 있기 때문에, 일반 사용자가 접근할 수 없는 보호된 메모리 안에 남는다.
New : 프로그램이 메인 메모리에 할당된다.
Ready : 프로그램이 초기화와 같은 작업을 통해 실행을 위한 모든 준비를 마친다.
Running : CPU가 해당 프로세스를 실행한다.
Wait : 프로세스가 끝나지 않은 시점에서 I/O로 인해 다른 작업이 수행된다.
→ 다른 작업이 완료되면 해당 프로세스는 Ready 상태로 돌아가야한다.