PCB(Process Control Block, 프로세스 제어 블록): 운영체제에서 프로세스에 대한 메타데이터를 저장한 '데이터'를 말한다.
프로세스가 생성 -> 운영체제는 해당 PCB를 생성
메타뎅터
: 데이터에 관한 구조화된 데이터이자 데이터를 설명하는 작은 데이터, 대량의 정보 가운데에서 찾고 있는 정보를 효율적으로 찾아내서 이용하기 위해 일정한 규칙에 따라 콘텐츠에 대해 부여되는 데이터이다.
프로세스 스케줄링 상태
: '준비', '일시중단' 등 프로세스가 CPU에 대한 소유권을 얻은이후의 상태
프로세스 ID
: 프로세스 ID, 해당 프로세스의 자식 프로세스 ID
프로세스 권한
: 컴퓨터 자원 또는 I/O 디바이스에 대한 권한 정보
프로그램 카운터
: 프로세스에서 실행해야 할 다음 명령어의 주소에 대한 포인터
CPU 레지스터
: 프로세스를 실행하기 위해 저장해야 할 레지스터에 대한 정보
CPU 스케줄링 정보
: CPU 스케줄러에 의해 중단된 시간 등에 대한 정보
계정 정보
: 프로세스 실행에 사용된 CPU 사용량, 실행한 유저의 정보
I/O 상태 정보
: 프로세스에 할당된 I/O 디바이스 목록
컨텍스트 스위칭(context switching): PCB를 기반으로 프로세스의 상태를 저장하고 로드시키는 과정을 말한다.
컴퓨터가 많은 프로그램을 동시에 실행하는 것처럼 보이지만 어떠한 시점에서 실행되고 있는 프로세스는 단 한 개이다.
많은 프로세스가 동시에 구동되고 있는 것처럼 보이는 이유는 다른 프로세스와의 컨텍스트 스위칭이 아주 빠른 속도로 실행되기 때문이다.
(현대 컴퓨터는 멀티코어의 CPU를 가지기 때문에 한 시점에 한 개의 프로그램이라는 설명을 틀린 것 이지만, 컨테스트 스위칭을 설명할 때는 싱글 코어를 기준으로 설명함)
한 개의 프로세스 A가 실행하다 멈춤
프로세스 A의 PCB를 저장
다시 프로세스 B를 로드하여 실행
다시 프로세스 B의 PCB를 저장
프로세스 A의 PCB를 로드
컨텍스트 스위칭이 일어날 때 유휴 시간(idle time)이 발생하는 것을 알 수 있음
이뿐만 아니라 캐시 미스도 일어나게 됨
캐시미스
: 컨텍스트 스위칭이 일어날 때 프로세스가 가지고 있는 메모리 주소가 그대로 있으면 잘못된 주소 변환이 생기므로 캐시클리어 과정을 겪게 되고 이 때문에 캐시미스가 발생한다.
(프로세스는 자기만의 메모리 주소 공간을 가지는데 전 프로세스의 캐시 데이터가 남아있으면 잘못된 데이터에 접근하거나 충돌이 발생할 수 있기 떄문에 캐시클리어를 하게 되는데 캐시를 비우게 되면 다시 메인 메모리(RAM)에서 데이터를 읽어와야 하게 되니까 추가적인 지연이 발생해 성능 저하가 일어날 수 있다)
스레드에서의 컨텍스트 스위칭
: 컨텍스트 스위칭은 스레드에서도 일어난다.
스레드는 스택 영역을 제외한 모든 메모리를 공유하기 때문에 스레드 컨텍스트 스위칭의 경우 비용이 더 적고 시간도 적게 걸린다.