
| 개념 | 설명 | 차이점 |
|---|---|---|
| MultiPrograming | 여러 프로그램을 동시에 실행하며, CPU가 프로그램을 번갈아 가며 실행한다. | CPU가 여러 프로그램을 차례로 실행하지만 동시에 실행되지 않음. (주로 I/O 작업 대기 중에 다른 작업 수행) |
| Multitasking (다중 작업) | 다중 프로그래밍을 기반으로, 작업 간 빠른 전환을 통해 CPU의 활용도를 높임. | 작업 전환이 자주 일어나며, CPU 스케줄링을 통해 작업을 관리함. (실시간으로 여러 작업을 처리하는 느낌) |
| Multithreading (멀티스레딩) | 하나의 프로세스 내에서 여러 스레드를 생성하여 동시에 실행함. | 하나의 프로세스에서 여러 작업을 병렬로 처리할 수 있도록 분할. (작업이 더 세분화됨) |
: 멀티 프로그래밍은 P#2부분이 싱글 프로그램이라면 원래 I/O waiting시간이지만 이 시간동안 다음 작업을 미리 수행하면서 효율성을 올린것이다.
: 멀티 태스킹은 각 프로세스를 매우 짧게 쪼개서 돌아가면서 작업을 수행하게 된다.
Process는 실행중인 프로그램을 의미한다. 이는 메모리에 로드되어 실행되고 있는 코드와 데이터를 포함하는 것이다.
- job 이라는 용어는 전통적으로 process와 같은 의미이다.
- 프로세스는 실행 코드와 그 코드가 사용하는 데이터로 구성된다.
운영 체제가 프로세스를 관리하고, 실행 상태를 저장하는 데이터 구조
: 커널영역에 저장이 되며, 프로세스의 모든 상태 정보를 관리하는 핵심 데이터 구조임
PCB는 크게 3가지 범주의 정보를 포함한다.
① 프로세스 식별 정보 (Identification Information)
Process ID (PID): 프로세스를 고유하게 식별하는 번호
Parent Process ID (PPID): 부모 프로세스의 ID (해당 프로세스를 생성한 프로세스)
User ID (UID): 프로세스를 실행한 사용자 계정 정보
② 실행 상태 정보 (Execution Context)
Process State: 현재 프로세스 상태 (Ready, Running, Waiting 등)
Program Counter (PC): 다음에 실행할 명령어의 주소
CPU Registers: 프로세스가 사용하는 CPU 레지스터 값 (스택 포인터, 플래그 레지스터 등)
CPU Scheduling Information: 우선순위, 스케줄링 큐 정보 등
③ 자원 관리 정보 (Resource Management)
Memory Management Information: 프로세스가 사용하는 메모리 위치, 페이지 테이블, 세그먼트 테이블 등
I/O Status Information: 프로세스가 사용하는 입출력 장치 상태
Accounting Information: CPU 사용량, 실행 시간, 시스템 리소스 사용량
PCB는 각 프로세스마다 독립적이다.
CPU가 다른 프로세스로 전환할 때, 시스템은 반드시 이전 프로세스의 상태를 저장하고, 새로운 프로세스의 저장된 상태를 컨텍스트 스위칭(Context Switch)을 통해 로드한다.
프로세스의 컨텍스트는 PCB(Process Control Block)에 저장된다.
context switch time 과정에서 발생하는 CPU시간 소모는 실제 작업을 수행하지 않는 순수한 오버헤드다(비효율적 시간 소모)
<문맥 전환 속도에 영향을 주는 요소>
1. 메모리 속도 -> 빠를 수록 전환이 빠름.
2. 레지스터 개수 -> 많을 수록 저장할 데이터가 많아져 느려짐.
3. 특수 문맥 전환 명령어 -> 하드웨어가 지원하면 전환이 더 빠름.
4. 하드웨어 지원 → CPU가 여러 개의 레지스터 세트를 제공하면 레지스터를 복사하지 않아도 되어 속도가 향상됨.
운영 체제에서 CPU를 어떤 프로세스에게 할당할지 결정하는 역할을 수행.
= Dispatcher
Job Queue (작업 큐)
Ready Queue
Device Queue

New: 프로세스가 생성된 초기 상태 (메모리 할당 전).
Ready: CPU 할당을 기다리는 상태 (실행 가능, 메모리 할당 됨).
Running: CPU에서 실제로 실행 중인 상태.
Waiting (or Blocked): I/O 작업 완료 등 이벤트를 기다리는 상태.
Terminated: 프로세스 실행이 종료된 상태.

새로운 프로세스를 메모리(Ready Queue)에 로드할지 결정
Ready Queue에 있는 프로세스 중 다음에 실행할 프로세스를 선택.
- Swap Out : 프로세스 일부를 메모리에서 디스크로 잠시 이동시킨다. (메모리 공간을 비우기 위해서)
- Swap In : 나중에 그 프로세스를 디스크에서 메모리로 다시 불러온다.
