티스토리 뷰
Process : Job, Task, Process는 보통 비슷하게 사용됨
Policy and Mechanism :

Process Management : CPU 가상화(Virtualization of CPU)
Program vs Process
Program : 실행되기 전 상태의 수동적인 상태, 실행중이 아님! 이진파일
Process : 실행되고 있는 능동적인 상태. 실행 흐름, 실행 중인 정보 + 상태 + 자원이 포함된 "실행 단위"
프로세스상태를 추적하기 위한 정보 = PCB에 들어가는 정보
- Program counter: 다음에 실행할 명령어 위치
- Registers: CPU 레지스터 값
- Process state: 실행 중 / 대기 / 준비 상태 등
- Memory management info: 메모리 배치 정보
- I/O 상태 정보: 사용하는 장치 등
- Scheduling 정보: 우선순위 등
Process Management

[ 높은 주소 ]
──────────────
| argc, argv | ← main 함수의 인자
| stack | ← 함수 호출 시 생기는 지역 변수, return 주소 등,선입후 LIFO ( Last In First Out )
| heap | ← malloc 등으로 할당되는 동적 메모리 공간, 프로그램 실행 중에 크기를 정할 수 있는 유연한 경로
| BSS (초기화 안 된 전역 변수) | int x;
| Initialized data (초기화된 전역 변수) | int y =10;
| text | ← 코드(명령어)가 저장된 영역
──────────────
[ 낮은 주소 ]
Execution Sequence
Stack
: LIFO(Last-In-First-Out) 구조 → 나중에 들어온 게 먼저 나감. 함수 호출 시마다 리턴 주소(return address)가 스택에 저장됨.
Call Stack (호출 스택)
: 프로그램에서 함수를 호출할 때마다 스택에 현재 위치(리턴 주소)를 저장하고, 함수가 끝나면 그 리턴 주소로 복귀함

Stack Pointer (SP) : 현재 스택의 가장 꼭대기(top)의 주소를 저장하는 레지스터 , 새로운 데이터(push)는 낮은 주소에 쌓이고, 제거(pop)는 높은 주소로 간다.
프로세서가 call(호출)하면 스택에 return address를 저장(다시 돌아와야해서), parameters(인자) 저장, Return parameters(리턴 값) 저장
Process Description
1. Execution Context Data : 운영체제가 여러 프로세스를 번갈아 실행할 때 필요한 개념
Execution Context란? Register Context , 실행 중인 프로세스의 CPU 상태(레지스터 값 등)을 통틀어 일컫는 말
필요한 이유 : 멈출 때는 Execution Context를 저장하고, 다시 실행할 때는 저장해 둔 Context를 복구해야 한다.
2. Process Control Block (PCB)
각 프로세스의 context를 저장하는 데이터 구조, 하나의 프로세스에 대한 모든 정보를 저장하는 구조체

프로세스를 전환할 때 OS는 Execution Context를 PCB에 저장해 두어야 한다.
3.Process Image : 운영체제가 프로세스를 어떻게 구성하고 관리하는지
Process Image의 구성요소,: PCB, 코드, 데이터, 스택
프로세스 생성 : 생성할 때 필요한 메모리, PCB, 코드, 데이터 등을 세팅해서 Process Image를 형성하는 과정
프로세스 종료: PCB, 코드, 데이터, 스택 등 할당된 모든 리소스를 해제, Process Image 제거
4.Process List : Process Switch 단계 요약
- 현재 프로세스의 레지스터 정보 저장
- 현재 실행 중인 프로세스의 PC, SP, PSW 등 레지스터 값들을 저장함.
- 저장된 정보는 PCB에 들어감.
- 현재 프로세스의 PCB 업데이트
- 상태를 예: Ready, Blocked, Exit 등으로 바꿈.
- 현재 프로세스 PCB를 적절한 큐로 이동
- 예: Ready Queue, Blocked Queue 등
- 다른 프로세스 선택 (스케줄링 호출)
- schedule() 함수가 호출되어 다음에 실행할 프로세스를 정함.
- 선택된 프로세스의 PCB 상태 업데이트
- Running으로 상태 변경.
- 선택된 프로세스의 레지스터 정보 복원
- PCB에 저장되어 있던 레지스터 정보를 CPU에 로드함.
Trace of Process
운영체제가 CPU를 어떻게 여러 프로세스에 번갈아 배정하는지를 보여주는 예시
- Process states
two state process model

Not Running : 실행중이 아님, Ready(실행 준비 완료), Blocked (또는 Waiting)( I/O 작업이 끝나기를 기다리는 중) >> 너무 포괄적임 적어도 5개의 기준이 필요함 (new, ready, running, blocked, exit)
running : 실행중임
five state process model

new : 프로세스가 막 생성됨. OS가 PCB(Process Control Block)를 만들고 이 상태로 들어온다.
ready : 실행 준비 완료된 상태 (CPU 할당만 기다림)
running : CPU를 할당받아 실제로 실행 중인 상태
blocked : 어떤 이벤트(I/O 등)를 기다리느라 실행 불가능한 상태
exit : 실행이 끝났거나, 중간에 에러로 중단된 상태

(a) 단일 Blocked Queue 구조
- Ready queue : CPU를 기다리는 프로세스들
- Blocked queue : I/O 등 이벤트를 기다리는 모든 프로세스가 한 큐에 같이 모여 있음
- >> 모든 종류의 이벤트 대기 프로세스가 섞여 있음
(b) 다중 Blocked Queue 구조
이벤트 발생 시 → 해당 이벤트 큐에 있는 프로세스들만 바로 Ready로 이동
seven state process model
OS는 메모리를 아끼기 위해 어떤 프로세스를 일시적으로 중지(Suspend) 한다, 메모리에 있지 않아서 바로 실행할 수 없음

- New: 막 생성된 상태. 아직 메모리에 올라가지 않음.
- Ready: 실행 대기 중. CPU만 배정되면 바로 실행 가능.
- Running: 현재 CPU에서 실행 중.
- Blocked: 어떤 이벤트(예: I/O 결과)를 기다리며 멈춘 상태.
- Exit: 실행 완료되거나 종료된 상태.
- Ready/Suspend: 메모리에는 없지만 실행 대기 중. 메모리에 올라오면 바로 Ready 상태 됨.
- Blocked/Suspend: 메모리에는 없고, 이벤트도 기다리는 상태.
'학교복습용 > 오퍼레이팅시스템 OS' 카테고리의 다른 글
| 오퍼레이팅시스템 5주차 / Process Description and Control (2) (0) | 2025.04.08 |
|---|---|
| 오퍼레이팅시스템 6주차 / Processor Scheduling(9단원) (0) | 2025.04.02 |
| 오퍼레이팅시스템 2주차 -(2) / Computer System Overview (0) | 2025.03.23 |
| 오퍼레이팅시스템 3주차 / Operating System Overview (1) | 2025.03.21 |
| 오퍼레이팅시스템 2주차 - (1) / Computer System Overview (0) | 2025.03.12 |
