PCB

OS/Linux 2016. 3. 2. 01:00 Posted by ­행복

Process Control Block


- 운영체제가 Process를 관리(제어)하기 위하여 Process의 상태 정보를 저장하고 있는 구조체

- PCB는 Process생성시 생성되며, 종료시까지 주기억장치에 유지됨

※ 프로세스는 시작 종료가 느리다.(PCB를 메모리 할당/해제하는데 오버헤드 발생)

※ 모든 프로세스는 1개의 PCB를 가진다.(멀티스레드는 하나의 PCB를 공유한다 -> 시작/종료의 오버헤드 감소)

task_strut라는 구조체에 정의


PCB가 유지하는 정보

□ 프로세스 상태(Process State)

   - CPU에 할당할 프로세스 결정을 위해

   - OS의 Process Scheduler에 의해 결정

   ※ 프로세스 상태 전이(Process State Transition)에 따라 값 변경됨

□ 프로세스 번호(PID)

□ 프로그램 카운터(PC) - 프로세스가 다음에 실행할 명령어의 주소

□ 레지스터

□ 프로세스의 모든 정보를 실시간으로 기록(CPU 사용시간, 메모리 정보, 할당된 자원 정보 등)



Context Switching - 1. 인터럽트나 system call 발생시 2. CPU Quantum을 모두 소모한 경우 3. I/O 입출력을 위해 CPU가 대기해야 하는 경우 4. 선점형 스케쥴러 사용중인 OS에서 우선순위가 낮아진 경우(특히, 멀티 프로그래밍 환경)

예> CPU가 위의 경우 중 한가지에 의해, Process2를 실행해야 하는 경우

Process1의 작업을 PCB1에 저장하고 Process2의 state를 PCB2로부터 reload하여 Process2의 작업을 재개(CPU에 Process2를 할당)

※ 단점 : 해당 과정에서 overhead 발생(선점형 CPU 스케줄링이므로)

(멀티 프로그래밍 환경에서 프로그램 처리보다 Context Switching이 더 자주 일어나 CPU를 효율적으로 사용하지 못할 수 있음)

'OS > Linux' 카테고리의 다른 글

cifs 마운트시 유의점  (0) 2016.08.31
리눅스 파일 시스템 구조  (0) 2016.03.02
ssh rsa key 확인 없이 로그인  (0) 2016.02.22
find명령어 -perm 옵션에서 +,-의 차이  (0) 2016.02.11
umask  (0) 2016.02.10