Little Jay

[OS] Process Description and Control II(Process Description, PCB, Process Image) 본문

Univ/Operating System(OS)

[OS] Process Description and Control II(Process Description, PCB, Process Image)

Jay, Lee 2022. 7. 28. 20:46

Process Description

Process는 세 가지의 Context로 이해할 수 있다. 먼저 User Level Context가 있다. 이는 User Program의 기본적인 요소들(text, data 등)을 담고 있다. 또한 User Level에서는 Process가 실행될 때 Flow 및 복귀주소를 파악하기 위해 Stack 또한 돌아가게 된다. 따라서 User Level Context에서는 Program이 돌아가는 데에 필요한 Data, Memory의 Context라고 이해하면 될 것이다. User Data, User Code, User Stack 등이 이에 해당된다. 또한 우리는 이제 System Level Context에서 Process를 어떻게 정의해야 할 것인지 봐야한다. System Level Context에서는 OS가 Process를 관리(manage)하기 한 정보들을 의미한다. 특히 주목해야할 것은 PCB(Process Control Block)이라는 구조헤이다. PCB가 담고 있는 정보는 Process Identification(식별자 정보, PID), Process Control Information(Process Relation 정보, Process의 state, priority 등), Processer State Information(CPU의 상태, 즉 레지스터의 상태) 등이다. PCB에 대해서는 뒤에서 자세히 알아보자. 또 Hardware Context에서도 Process를 설명할 수 있는데 이는 단순히 Register에 대한 정보라고 이해하면 될 것이다. 결국의 Process들이 Process의 정보도 담고 있기 때문에 HW적 관점에서는 특수 레지스터에 대한 상태(PC, SP, PSW 등)이라고 할 수 있다. 

PCB(Process Control Block)

PCB는 OS에서 가장 자료구조이다. PCB에는 Process의 모든 정보의 집합체라고 할 수 있다. 그렇기 때문에 PCB는 Process당 하나가 생성이 된다. Kernel에서 Programming을 하기 위해서 Meta 정보를 담고 있는 것이 PCB이다. 이는 LINUX에서 task_struct로 구현이 되어있다. 위에서 PCB는 세 가지로 정보들을 담고 있다고 언급했는데, 사실 이는 하나의 범주일 뿐이다. 책에 있는 그림을 올리고 싶었지만 저작권 문제로 인해 풀어서 설명을 하겠다. Process Identification에는 Indentifier들이 들어가게 된다. Identifier에는 pid, uid 등이 들어가게 된다. Processer State Information에는 User Visible Register와 Control and Status Registers, Stack Pointers가 들어간다. User Visible Register란 우리가 일반적으로 사용하는 레지스터들의 8~32개의 레지스터를 의미한다. Control and Status Register는 Program Counter(PC), Condition Codes(ex. ZF, OF.....), Stack Pointer는 SP를 기칭한다. Process Control Information에 가장 많은 정보들이 들어가게 되는데, Process Relation을 가리키는 p_pptr, p_cptr, next_task, next_run 등이 있고, Process State인 RUN, READY, BLOCK status가 들어가게 되는데 이에 대해서는 뒤에서 자세하게 다룰 것이다. Scheduling Information은 현재 어떤 Scheduling Algorithm을 사용하는지의 Policy와 그에 따른 Priority, need_resched 등이 들어가게 되고, Memory Information에는 segment와 page에 대한 정보가 들어가게 된다. 마지막으로 File Information에는 File Descriptor가 들어가게 된다. 이렇듯 PCB에는 Process를 관리하기 위한 다양한 정보들이 들어가기에 OS에서 다루는 가장 중요한 자료구조가 된다. 

Process Image

Process Image라고 하는 것은 User Level Context와 System Level Context를 합친 것이다. 따라서 OS가 Process를 관리하기 위한 정보들의 집합이라고 표현할 수 있다. Prcoess가 어디에 위치해 있고, 어떤 속성을 가지고 있는지 OS가 알아야 Process를 관리하고, 조종할 수 있는 것이다. OS는 Process Image를 통해서 각각의 Process에 대한 Description을 이해하는 용도로 사용하고 있다. Process Image를 그려보면 아래와 같다.

Reference

William Stallings. (2018). Operating Systems: Internals and Design Principles (8th Edition): Pearson.

 

Comments