-
💻 [OS 오퍼레이팅시스템] #5 | Process Description and Control 1 | Program, Process, Process Image, PCB , StateCS/OS 2022. 4. 15. 18:20
💻 프로그램과 프로세스
- 프로그램 vs 프로세스
프로그램 : disk에 저장된 passive(실행X). binary sequence로 단순 (코드+데이터) 프로그램
프로세스 : active(실행중). execution sequence. stack 필요(스택 OS가 관리)
프로그램 -> 프로세스 : 프로그램은 실행파일이 메모리에 로드되면 프로세스가 되며, 하나의 프로그램은 여러개의 프로세스가 될 수 있다. (다중 사용자가 같은 프로그램 사용, 하나의 프로그램 여러번 실행 가능하니까)
프로세스의 핵심적 요소 : program code(text) + data
💻 Process
- 프로그램 vs 프로세스
실행 중 또는 실행 가능한 프로그램
프로세서(처리기)에서 할당되고 실행될 수 있는 요소
명령의 실행 흐름, 현재 상태, 시스템 자원과 관련된 집합을 특징 지을 수 있는 유닛
Job, task, process는 일반적으로 OS에서 같은 용어이지만 도메인에 따라 달라진다.
+) Mach kernel : process를 2개로 추상화 (1.task : 자원할당부분 2.thread : 실행단위부분)
* malloc() : 사용할 메모리 공간 확보하는 함수로 성공하면 메모리 주소 반환, 실패하면 NULL반환. 동적할당. Heap영역.
- Execution Sequence & Stack
실행의 흐름(execution sequence)을 잡기 위해 필요. 런타임에 allocated, deallocated 됨.
Stack : LIFO(last-in-first-out) list
Call Stack : stack in OS. stack frames으로 구성 execution stack, control stack, run-time stack...
* stack frame : activation records(frame)이라고도 불림. stack frame의 집합이 call stack
- Stack 구현
Stack Pointer : 스택의 현재 top을 저장하는 포인터 -> 저장할 레지스터(하드웨어) 지원 필요
Stack Base(Higher Addr.) ≤ SP ≤ Stack Limit (스택영역 보호, 스택은 높은 주소에서 낮은 주소로 저장)
프로세서가 call(호출)하면 스택에 return address를 저장(다시 돌아와야해서), parameters(인자) 저장, Return parameters(리턴 값) 저장
💻 PCB (Process Control Block)
- Process Control Block
OS에서 가장 중요한 데이터 구조로, 프로세스별로 각각 필요하다.
: OS에 의해 필요한 프로세스에 대한 정보를 담고 있다.
: OS가 multiple processes를 지원할 수 있도록 하고 multiprocessing를 제공할 수 있게한다. fork()하면 PCB생성
: OS에 의해 control될 때, 프로세스 정보, 상태 바뀌면 PCB도 바뀐다.
* PCB : Process Identification(식별자 정보) + Processor State Information(CPU관련 state, 레지스터 정보. PC, PSW, SP, SP) + Process Control Information(running, ready와 같은 프로세스 state)
프로세스 종료하면 PCB도 종료.
💻 Process Image
- Process Image
프로세스 관리에 필요한 정보들의 묶음. (PCB + Text + Data + Stack)
user 레벨 context (메모리) : Text(code), Data, Stack (유저프로그램을 실행하기 위한 기본요소)
system 레벨 context : PCB
+) Hardware context (register) : PC, SP, PSW + 일반 목적 레지스터. 프로그램이 수행하면서 state를 관리해야 하는데, 보통 저장소로는 PCB 안의 일부를 사용하고 있다. ( PCB안에 이미 있어서 process image라고는 안함 )
프로세스를 제어하고 관리하기 위해 OS가 반드시 알아야 할 정보
: 1. 프로세스의 위치(user level의 위치-> text, data, stack)
: 2. 프로세스의 속성(process ID, process state -> PCB)
OS는 process image를 각 프로세스의 description으로 유지
: 프로세스가 실행되는 address space + PCB
💻 Process States
- Two-State Process Model
프로세서에 의해 실행되거나 아니거나 둘 중 하나.
1. Not Running : 비수행상태. Dispatch되면 Running으로 감.
2. Running : 수행상태.
Running으로 올 수 있는 프로세스 수 N : CPU의 처리기 개수 M 만큼 M<<N
+) Uniprocessor일 경우 어느 시점에서든 Running상태인 프로세스는 하나여야한다.
너무 단순하고 이론적이다. I/O request와 Timeout 구분 안하는 문제가 있다.
- Five-State Process Model
각 이벤트마다 하나씩 blocked queues 여러개 가지는 거 가능 (Multiple blocked queues)
Running에서 Timeout되면 Ready로, I/O request 또는 System call로 Blocked로 상태 변화
- Suspended Processes
현재 메모리에 있지 않고, 디스크(보조 기억 장치)에 있다. swap out된 상태
Swapping : 메인 메모리에서 디스크로 프로세스를 옮김
blocked processes를 디스크의 suspended queue로 swap 한다.
* suspended queue : main memory에서 디스크로 잠시 나가진 프로세스들이 존재하는 공간
<두 가지 state 핵심>
1. Blocked/Suspend : 이벤트를 기다리고 있는 보조기억장치에 있는 프로세스
2. Ready/Suspend : 메인메모리에 로드되면(CPU 주어지면) 바로 실행가능한 상태이지만 보조기억장치에 있는 프로세스
- Seven-State Process Model
5-State + Suspended state 2개
* Running -> Ready/Suspend : 높은 우선순위 blocked 프로세스가 unblocked하면 OS가 그 프로세스 선점 -> 낮은 우선순위 suspend
- Process List Structures
PCB는 PCB의 linking을 허용하는 포인터를 포함하여 구조 정보를 포함할 수 있다.
'CS > OS' 카테고리의 다른 글