ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 💻 [OS 오퍼레이팅시스템] #5 | Process Description and Control 1 | Program, Process, Process Image, PCB , State
    CS/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을 허용하는 포인터를 포함하여 구조 정보를 포함할 수 있다.