본문 바로가기

CS/운영체제

[OS] PCB, 문맥 교환(Context Switching)

728x90

운영체제와 프로세스 제어 블록(PCB)

운영체제가 메모리에 적재된 여러 프로세스를 관리하기 위해서는 프로세스를 식별할 수 있는 커널 영역의 정보가 필요합니다. 이러한 정보를 프로세스 제어 블록(Process Control Block, PCB)이라고 부릅니다.

PCB는 프로세스와 관련된 다양한 정보를 포함하는 구조체로, 새로운 프로세스가 메모리에 적재될 때 커널 영역에 만들어지며, 프로세스가 종료되면 제거됩니다.

  • 프로세스: 메모리에 적재된 실행 중인 프로그램.
  • 커널 영역: 운영체제의 핵심 부분을 담당하는 영역으로, 메모리에 적재된 부분을 커널 영역이라고 합니다.
  • 구조체: 서로 다른 자료형으로 이루어진 데이터를 하나로 묶어 사용할 수 있는 데이터 구조의 일종입니다.

 

PCB에 담긴 정보

PCB에는 프로세스를 관리하기 위한 여러 가지 정보가 포함됩니다. 일반적으로 PCB에 저장되는 정보는 운영체제마다 차이가 있지만, 다음과 같은 공통된 정보가 포함됩니다:

  1. 프로세스 ID(PID): 프로세스를 식별하는 고유한 값.
  2. 레지스터 값: 프로세스가 사용하는 CPU 레지스터들의 현재 상태.
  3. 프로세스 상태: 실행 중, 대기 중 등의 현재 프로세스 상태.
  4. CPU 스케줄링 정보: 프로세스의 우선순위 등 CPU 할당에 관련된 정보.
  5. 메모리 정보: 프로세스가 메모리 상에 어디에 위치하는지에 대한 정보.
  6. 파일 및 입출력 장치 정보: 프로세스가 사용 중인 파일과 입출력 장치 정보.

이러한 PCB들은 커널 내에서 프로세스 테이블이라는 형태로 관리됩니다. 프로세스 테이블은 실행 중인 PCB들의 모음을 의미합니다. 새롭게 프로세스가 실행될 때는 PCB가 프로세스 테이블에 추가되고, 프로세스가 종료되면 PCB는 테이블에서 제거됩니다.

 

 

문맥 교환(Context Switching)

일반적으로 메모리에 적재된 프로세스들은 한정된 시간 동안 번갈아 가며 CPU를 사용합니다.

이때 타이머 인터럽트라는 메커니즘에 의해 프로세스의 CPU 사용 시간이 제한됩니다. 프로세스가 정해진 시간 동안 CPU를 사용하고 나면, 타이머 인터럽트가 발생하여 CPU 사용이 중단되고, 프로세스는 대기 상태로 들어갑니다.

CPU를 사용하던 프로세스는 자신의 상태를 PCB에 저장하고, 다음에 CPU를 할당받으면 이전 상태를 복구해 작업을 이어서 진행합니다. 이러한 프로세스의 상태 정보를 문맥(Context)이라고 하며, 문맥을 저장하고 복구하는 과정을 문맥 교환(Context Switching)이라고 부릅니다.

 

문맥 교환이 너무 자주 발생하면 캐시 미스가 빈번해지고, 이로 인해 성능 저하가 발생할 수 있습니다. 캐시는 CPU가 데이터를 빠르게 접근하기 위해 사용하는 작은 메모리입니다. 캐시 미스가 발생하면 CPU가 다시 메모리에 접근해야 하므로 성능이 저하됩니다.

 

문맥 교환이 너무 자주 발생하면 캐시 미스로 인해 오버헤드가 커지고 성능 저하로 이어질 수 있으므로, 적절한 빈도로 문맥 교환이 이루어지도록 관리하는 것이 중요합니다.

728x90