프로그램 : 저장장치에 저장되어 있는 정적인 상태
프로세스 : 실행을 위해 메모리에 올라온 동적 상태
큐 방식으로 프로세스 처리
<aside>
💡 시분할 시스템
여러명의 사용자가 사용하는 시스템에서 컴퓨터가 사용자들의 프로그램을 번갈아가며 처리해줌으로써 각 사용자에게 독립된 컴퓨터를 사용하는 느낌을 주는것으로, 라운드 로빈 방식이라고도 한다.
-
하나의 CPU는 같은 시점에서 여러개의 작업을 동시에 수행할 수 없기 때문에, CPU의 전체 사용시간을 작은 작업 시간량으로 쪼개어 그 시간량 동안만 번갈아가면서 CPU를 할당하여 각 작업을 처리한다.
-
각 작업에 대한 응답 시간을 최소한으로 줄이는 것을 목적으로 하며, 하드웨어를 보다 능률적으로 사용할 수 있다.
</aside>
- 시분할 방식 : 하나(또는 둘 이상)의 처리기를 이용해 같은 시간에 여러개의 프로세스를 실행 → 멀티태스킹
- 요리사 1명이 시간을 적당히 배분하여 여러가지 요리를 동시에 하는 방식
- 요리사는 주문 목록에 있는 주문서 중 하나를 가져다가 요리함
- 모든 요리가 제공되면 주문 목록에서 삭제
- 프로세스와 프로그램의 관계
- 프로그램이 프로세스가 된다는 것은 운영체제로부터 프로세스 제어 블록을 얻는다는 뜻
- 프로세스가 종료된다는 것은 해당 프로세스 제어 블록이 폐기된다는 뜻
- 프로세스 = 프로그램 + 프로세스 제어 블록
- 프로그램 = 프로세스 - 프로그램 제어 블록
1. PCB(Process Control Block)
- PCB는 프로그램이 프로세스로 전환될 때 운영체제가 만드는 작업 지시서
- 어떤 프로그램이 프로세스가 되었다는 것은 운영체제로부터 프로세스 제어 블록을 받았다는 의미
- 프로세스 생성시 프로세스마다 하나씩의 독립적인 PCB가 생성
- 프로세스 생성시 만들어져서 프로세스가 실행을 완료하면 폐기함
- 해당 프로세스의 모든 추가적인 정보들이 PCB내에 저장 → 문맥정보
- 프로세스 제어 블록에 있는 대표적인 세 가지 정보
- 프로세스 구분자(PID) : 각 프로세스를 구분하는 구분자 (PID, PPID구별할것)
- 메모리 관련 정보 : 프로세스의 메모리 위치정보, 메모리 보호를 위한 경계 레지스터와 한계 레지스터
- 각종 중간값 : 프로세스가 사용했던 중간값

<aside>
💡 PID(Process ID)
운영체제에서 프로세스를 식별하기 위해 부여하는 번호.
프로세스는 실행중인 프로그램을 의미하며 메모리에 적재되어 있고 프로세스의 상태정보, PCB를 포함한 개념이다.
</aside>
<aside>
💡 PPID(Parent Process ID)
부모 프로세스는 현재 실행중인 프로세스(자식 프로세스)를 시스템 콜을 호출하여 생성한 프로세스를 의미한다.
만약 부모 프로세스가 자식 프로세스보다 일찍 종료되는 경우, 자식 프로세스는 고아 프로세스가 되어 PPID로 init process의 PID, 1을 가지게 된다.
</aside>
1) 문맥 교환(context switching)
- 현재 진행하고 있는 Task(Process, Thread)의 상태를 저장하고 다음 진행할 Task의 상태 값을 읽어 적용하는 과정
- 두 프로세스의 프로세스 제어 블록을 교환하는 작업
2) 문맥교환과 타임 슬라이스의 크기
- 타임슬라이스는 되도록 작게 설정하되 문맥 교환에 걸리는 시간을 고려하여 적당한 크기로 설정하는 것이 중요
2. 프로세스의 상태