프로세스는 디스크에 있는 프로그램이 메인 메모리에 올라와 있는 상태로 실행중인 프로그램을 말한다.
프로세스는 CPU가 일을 처리할 때 사용하는 단위로 task와 동의어이다.
프로그램은 일반적으로 하드디스크에 저장되어 아무 일도 하지 않는 상태이다.
프로세스는 실행하면서 stack pointer, data, text, register 등이 끊임없이 변한다.
프로세스는 job, task 등으로 불리기도 한다.
현대에서 사용되는 멀티 태스킹 시스템에서 프로세스는 다른 프로세스들과 CPU를 공유하기 위해 여러가지 상태를 가진다.
위 그림은 프로세스 상태 전이도의 모습이다.
new에서부터 프로세스가 어떤 작업에 의해 상태가 변화하는지를 보여준다.
running에서 ready로 변할 때는 time sharing system에서 해당 프로세스가 CPU 시간을 모두 소진하였을 때 인터럽트에 의해 강제로 ready 상태로 변하고 CPU는 다른 프로세스를 실행시킨다.
모든 프로세스들은 PCB를 가지고 있다.
PCB는 프로세스에 관한 모든 정보를 가지고 있는 데이터 구조이다.
PCB가 가지고 있는 프로세스의 정보들은 다음과 같다.
프로세스는 수행하면서 상태가 여러번 변하는데 이에 따라 서비스를 받아야할 곳이 다르다.
프로세스는 일반적으로 여러개가 한번에 수행되므로 그에 따른 순서가 있어야한다.
이런 순서를 대기하는 장소를 큐(Queue)라고 부른다.
이런 여러가지 큐가 존재하고 각 큐 내부에 저장된 실제 데이터는 각 프로세스의 PCB가 저장되어 있다.
이런 순서를 기다리는 공간이 있다면, 그 순서를 정해주는 알고리즘이 있는데 이 알고리즘을 스케줄링(Scheduling)이라고 한다.
https://velog.io/@codemcd/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-5.-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EA%B4%80%EB%A6%AC
https://been2.tistory.com/20?category=798940