본문 바로가기

CS 대비/운영체제(OS)

운영체제 #8 Process Control Block (PCB)

운영체제는 컴퓨터 하드웨어를 관리하면서 프로그램을 실행하기 위해 여러가지 내부 정보를 관리해야한다.

 

Process Description

 

 

... Tables 라 불리는 내부 자료구조를 가지고 컴퓨터 내부 각종 자원들(Memory, Devices, Files) 정보를 기록한다. 프로세스에 대한 정보를 저장하는 것을 pcb라 한다.

 

PCB는 모든 각각 프로세스마다 하나씩 만든다.

 

Process Control Block (PCB)

 

사람들에게도 각 고유한 정보가 있는 것 처럼, 프로세스에도 그들 고유의 정보가 내재되어있다. PCB는 프로세스 내부 정보를 저장하는 운영체제 내부 자료구조이다 .

 

 

프로세스 고유의 정보(Identifier, State, Priority etc..) 를 저장하고 있다.

 

Identifier (프로세스 식별자) =사람들의 주민등록번호와 유사하다. 고유 숫자 정보, 정수값이다.

State (상태 정보)

Priority (프로세스의 우선 순위) -> process scheduling 시간에 추가적으로 다룰 예정

Program counter

  : 프로세스를 실행하다 중단되었을 때 cpu 내의 register 값을 메모리에 저장해야한다. Program counter 가 대표적인              register 예

Memory pointers 메모리 내의 프로세스 위치 정보, 주소값들을 저장

I/O status information 프로세스가 사용하고 있는 입출력 장치의 진행 상태

Accounting information 프로세스가 실행되는 동안에 사용한 cpu나 메인 메모리 사용량 정보 등 자원 통계 자료

 

'One PCB per process' : 각 프로세스마다 하나의 PCB를 할당한다

 

Process list ?

프로세스들을 list로 묶어 연결해놓은 것.

(운영체제는 운영체재 내 존재하는 모든 프로세스들을 double linked list(이중 연결 list)로 연결한다.)

 

ex> Linux process list

 

next_task, prev_task 와 같은 포인터 사용해 연결

linux에서 task ? = 프로세스

 

또, Ready 상태 / Running 상태의 프로세스들을 따로 묶어 run_queue 형성

 

지난 시간에 배웠던 Ready queue = run queue

 


 

PCB에 저장되는 정보들에 대해 자세히 다뤄보자.

 

Process identification

-> Identifiers 

: 어떤 프로세스를 다른 프로세스와 구분하기 위해 정수값(0~n)을 저장하는 변수

(프로세스 자신의 식별자, 자신을 생성한 부모 프로세스의 식별자, 프로세스를 현재 실행하고 있는 사용자 식별자 등 여러 식별자, 프로세스 그룹 식별자 등 다양한 식별자들이 있다.)

 

Processor State Information

-> Process state 말 그대로 상태값을 저장한다(Ready, Running etc..)

-> CPU Registers 프로세스의 진행 상황 정보를 보여주는..

 

 

Registers

 

 

Intell 프로세서 칩 내부 구조를 간단히 보인 것이다.

 

IN 정보 입력부 OUT 출력부 ALU instruction실제로 실행하는 연산부 registers 연산에 필요한 부분들이 임시로 저장되는 부분 control U 내부에서 정보 흐름을 제어하는 control unit

 

 

eip (instruction pointer) = program counter

eax, ebx(범용 레지스터, 연산에 필요한 값들 임시 저장) , cs... register 들

eflags (instruction 실행 중 프로세서 상태를 나타냄)

cr 현재 실행중인 페이지 디렉토리... 

sp현재 stack top의 주소

... 등의 레지스터 있음

 

intell 80x86 cpu 내에는 TSS 라 불리는 영역이 있다.(레지스터들을 포함하고있다)

CPU 내의 레지스터 값들을 PCB에 저장하는데, 실행을 끝마친 프로세스에 대해서 저장(SAVE)하고 방금 저장됐던 값을 새로 실행할 프로세스에 대해서 PCB에 저장한다.

 

A 프로세스에서 B 프로세스로 switch 할 때 (A 정보를 A의 PCB에 save context, B 정보를 cpu에 restore context) 함

 

이전 프로세스 수행 정보를 프로세스 레지스터에 복원할 수 있고, 연이어 계속 실행할 수 있다.

 


 

PCB에는 scheduling과 관련한 정보도 저장된다

process scheduling = cpu scheduling = job scheduling : cpu가 다음에 어떤 프로세스를 새로 시작할 것인가를 결정하는 것

 

운영체제는 각 프로세스에 대한 scheduling 정보를 저장하고있어야한다. 프로세스가 어떤 상태인지, 우선순위는 어떻게 되는지, cpu는 얼마나 사용하고있는지 통계자료에 대한 정보들..

 


 

부모 프로세스는 자식 프로세스를 여러개 만들 수 있다. 자식 프로세스는 형제 프로세스를 가지는 격.

 

포인터 용어

os - > old sibling

ys - > younger sibling

 


 

Inter-process Communication : 프로세스간 통신에 필요한 정보 저장

프로세스간 권한 정보

메모리 정보들..