PCB와 Context Switching
PCB (Process Control Block, 프로세스 제어 블록)
의미
특정 프로세스에 대한 정보를 담고 있는 자료구조
- 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳
- 프로세스의 상태 정보를 저장하는 구조체
- 운영체제는 PCB에 담긴 프로세스 정보를 이용하여 프로세스를 관리하고 제어
- 프로세스가 생성될 때 마다 고유의 PCB가 생성되어 메인 메모리에 유지되고 프로세스가 완료되면 제거
- PCB는 프로세스의 중요한 정보를 포함하고 있으므로 일반 사용자는 접근하지 못하는 보호된 메모리 영역에 존재
진행 과정
- 프로그램 실행
- 프로세스 생성
- 프로세스 주소 공간 (코드, 데이터, 스택) 생성
- 이 프로세스의 메타데이터들이 PCB에 저장
상세 구조
- Process id : 프로세스의 고유 ID
- Process state : 프로세스의 상태 (Create, Ready, Running 등등)
- Program counter : 프로세스를 위해 실행될 다음 명령어의 주소
- CPU register : CPU에서 사용한 레지스터의 값을 잃지 않기 위해 PCB에 그 값을 저장, Accumulator, General Register 등을 포함하는 CPU Register의 값
- CPU scheduling information : 프로세스의 우선순위, 최종 실행 시간, 스케줄링 큐를 가리키는 포인터 등
- Memory management information : 레지스터, 페이지 테이블, 세그먼트 테이블의 base, limit값에 대한 정보, 해당 프로세스의 주소 공간 정보
- Accounting informaion : CPU 사용 시간, 실제 사용된 시간, 시간 제한 등
- I/O status informaion : 프로세스에 할당된 I/O기기에 해당하는 정보, 프로세스에 할당된 입출력 장치 목록, 열린 파일 목록 등
메타 데이터
- 데이터에 관한 구조화된 데이터이자 데이터를 설명하는 작은 데이터
- 대량의 정보 가운데에서 찾고 있는 정보를 효율적으로 찾아내서 이용하기 위해 일정한 규칙에 따라 콘텐츠에 부여되는 데이터
- 프로세스 생성 시 만들어져서 프로세스가 실행을 완료하면 폐기
- 프로그램이 실행되면 프로세스가 생성
- 프로세스 주소 값들에 스택, 힙 등의 구조를 기반으로 메모리가 할당
- 이 프로세스들의 메타데이터들이 PCB에 저장되어 관리
- PCB는 프로세스의 중요한 정보를 포함
- 일반 사용자가 접근하지 못하도록 커널 스택의 가장 앞부분에서 관리
Context Switching (문맥교환)
의미
CPU가 현재 작업 중인 프로세스에서 다른 프로세스로 넘어갈 때 지금까지의 프로세스 상태를 저장하고, 새 프로세스의 저장된 상태를 다시 적재하는 작업
- 현재 진행하고 있는 프로세스의 상태를 PCB에 저장하고 다음 진행할 프로세스의 정보를 PCB에서 읽어 적용하는 과정
- PCB를 교환하는 과정
- 한 프로세스에 할당된 시간이 끝나거나 인터럽트에 의해 발생
필요 이유
- CPU는 한 번에 하나의 프로세스만 수행할 수 있음
- 실생활에서는 우리는 여러 개의 프로세스를 동시에 수행
- 따라서 CPU는 동시에 수행하는 처럼 보이게 하기 위해서 여러 개의 프로세스를 번갈아가며 수행
- 따라서 CPU가 프로세스를 바꿔가며 실행하기 위해서 문맥 교환이 필요하게 되었음
문맥 교환 과정
- 현재 CPU는 process P0을 수행하고 있다가 인터럽트(interrupt)가 걸리게되면 현재 수행하고 있는 것을 먼저 PCB0에 저장
- Waiting 상태로 변하게 되면 CPU는 다른 프로세스(process P1)을 Running으로 바꿔 올림
- CPU가 앞으로 수행할 프로세스(process P1)에 관한 정보로 교체
- 이번에는 CPU가 process P1을 수행하다 다시 인터럽트(interrupt)가 걸리면 현재 수행하고 있는 것을 PCB1에 저장
- Waiting 상태로 변하게 되면 CPU는 다른 프로세스(process P0)을 Running으로 바꿔 올림
- CPU가 앞으로 수행할 프로세스(process P0)에 관한 정보로 교체
발생 경우 예
- 멀티태스킹
- 실행 가능한 프로세스들이 운영체제의 스케줄러에 의해 조금씩 번갈아가며 수행되는 것
- 번갈아 가며 프로세스가 CPU를 할당받는데, 이 때 문맥교환이 이루어짐
- 인터럽트 핸들링
- 인터럽트가 발생하면 문맥교환이 이루어짐
- 사용자와 커널모드 전환
- 필수는 아니지만 운영체제에 따라서 발생
'공부 > 운영체제' 카테고리의 다른 글
[운영체제] 주소 공간과 가상 메모리(Address Space, Virtual Memory) (0) | 2024.02.24 |
---|---|
[운영체제] 시스템 콜(System Call) (0) | 2024.02.24 |
[운영체제] 인터럽트(Interrupt) (0) | 2024.02.24 |
[운영체제] CPU 스케줄링 알고리즘 (0) | 2024.02.24 |
[운영체제] 프로세스와 스레드 (0) | 2024.02.20 |