개발일지
[OS]PCB; Process Control Block 본문
PCB 는 운영체제에서 프로스세에 대한 메타데이터를 저장한 "데이터"를 말한다. 번역하면 프로세스 제어 블록.
프로세스가 생성될 때 운영체제는 PCB를 생성한다.
프로그램이 실행되면 프로세스가 생성되고 프로세스 주소 값들에 스택, 힙 등의 구조를 기반으로 메모리가 할당된다.
프로세스 메모리 할당 구조는 아래 따로 정리해놓았으니 참고하세용
프로세스의 메모리 구조
운영체제는 프로세스에 적절한 메모리를 할당하는데 다음 구조를 기반으로 할당한다. 스택 Stack 은 지역변수, 매개변수, 함수가 저장되고 컴파일 시에 크기가 결정되며 "동적"인 특징을 갖는다.
kang96.tistory.com
만들어진 프로세스의 메타데이터*들이 PCB 에 저장되어 관리된다. 이는 프로세스의 중요한 정보를 포함하고 있기 때문에 일반 사용자가 접근하지 못하도록 커널 스택의 가장 앞부분에서 관리된다.
* 여기서 메타데이터란 데이터에 관한 구조화된 데이터이자 데이터를 설명하는 작은 데이터, 대량의 정보 가운데서 찾고 있는 정보를 효율적으로 찾아내 이용하기 위한 일정한 규칙에 따라 콘텐츠에 부여되는 데이터다.
그렇다면 PCB 는 어떤 정보로 이루어져있을까??
- 프로세스 스케쥴링 상태 : 준비, 일시중단 프로세스가 CPU에 대한 소유권을 얻은 후 또는 이후 경과된 시간과 같은 스케줄링 정보
- 프로세스 ID: 프로세스 ID, 해당 프로세스의 자식 프로세스 ID
- 프로세스 권한 : 컴퓨터 자원 또는 입출력 디바이스에 대한 권한 정보
- 프로그램 카운터 : 프로세스에서 실행해야 할 다음 명령어의 주소에 대한 포인터
- CPU 레지스터: 프로세스를 실행하기 위해 저장해야 할 레지스터에 대한 정보
- CPU 스케줄링 정보: CPU 스케줄러에 의해 중단된 시간 등에 대한 정보
- 계정정보: 프로세스 실핼에 사용된 CPU 사용량, 실행한 유저의 정보
- 입출력 상태 정보 : 프로세스에 할당된 입출력 디바이스 목록
Context Switching 컨텍스트 스위칭 ; 문맥교환
: PCB 를 교환하는 과정을 말한다. 한 프로세스에 할당된 시간이 끝나거나 인터럽트에 의해 발생한다.
컴퓨터는 많은 프로그램을 동시에 실행하는 것처럼 보이지만 어떤 시점에서 실행되고 있는 프로세스는 단 한 개이며, 많은 프로세스가 동시에 구동되는 것처럼 보이는 것은 다른 프로세스와의 컨텍스트 스위칭이 아주 빠른 속도로 실행되고 있기 때문!!
현재 컴퓨터는 멀티코어의 CPU 를 가지고 있기 때문에 한 시점에 한 개의 프로그램이라는 말은 틀린 설명이지만 컨텍스트 스위칭을 설명할 때에는 싱글코어 기준으로 이야기한다!!!!!
한 개의 프로세스 P0이 실행하다 멈추고 프로세스 P0의 PCB를 저장하고 다시 프로세스 P1을 로드하여 실행한다.
그리고 다시 P1의 PCB 를 저장하고 프로세스 P0의 PCB 를 로드한다.
컨텍스트 스위칭이 일어날 때 idle time 유휴시간이 발생한다! P0이 실행하다가 유휴상태가 될 때 P1은 바로 실행하지 않고 idle 시간을 좀 갖다가 실행한다. 이유는 P0의 상태를 PCB에 저장하고 P1의 상태를 PCB에서 가져와야 하기 때문이다!!!!
그래서 컨텍스트 스위칭이 자주 일어나게 되면 .. 성능저하가 발생할 수 밖에 없음...!!
또또 안좋은게 있는데 캐시미스 비용 발생함..
컨텍스트 스위칭이 일어날 때 프로세스가 가지고 있는 메모리 주소가 그대로 있으면 잘못된 주소 변환이 생기기 때문에 캐시 클리어 과정을 겪게 되고 이 때문에 캐시미스가 발생될 수 있음..
캐시에 대한 내용은 아래 링크 참고!
캐시란? cache
캐시 cache : 캐시는 데이터를 미리 복사해놓은 임시 저장소이자 빠른 장치와 느린 장치의 속도 차이에 따른 병목현상을 줄이기 위한 메모리를 말한다. 이릍 통해 데이터를 접근하는 시간이 오래
kang96.tistory.com
'운영체제OS' 카테고리의 다른 글
[OS] 메모리 관리 (0) | 2022.12.02 |
---|---|
[OS]CPU 스케줄링 알고리즘 (0) | 2022.12.01 |
[OS]프로세스의 메모리 구조 (0) | 2022.11.29 |
프로세스 상태 (0) | 2022.11.26 |
캐시란? cache (0) | 2022.11.24 |