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 |