운영체제 | 힙과 컨텍스트 스위칭

Faithful Dev·2025년 1월 25일

컴퓨터 공학

목록 보기
24/81

힙(Heap)

힙은 프로세스가 실행 중에 동적으로 메모리를 할당받는 영역이다.

  • 용도:
    • 동적 데이터 구조(예: 연결 리스트, 트리, 큐 등)를 생성하고 관리.
    • 런타임에 메모리 크기를 유동적으로 조정해야 할 때 사용.
  • 관리:
    • 메모리 할당은 보통 malloc(), new 같은 함수나 명령어로 수행된다.
    • 메모리 해제는 free(), delete 같은 명령어로 처리된다.
    • 메모리 누수(memory leak): 해제하지 않은 메모리가 계속 남아 있는 문제로, 적절한 메모리 관리가 필요하다.
  • 구조:
    • 힙은 프로그램의 스택이나 코드 영역과 독립적으로 관리되며, 크기가 동적으로 증가하거나 감소할 수 있다.
    • 힙의 상한선은 물리적 메모리 크기와 운영체제의 제약에 따라 결정된다.

프로세스 제어 블록(PCB)

PCB(Process Control Block)는 운영체제가 각 프로세스를 추적하고 관리하기 위해 사용하는 데이터 구조이다. 프로세스에 대한 모든 중요한 정보가 포함된다.

  • 구성 요소:
    1. 프로세스 ID (PID): 각 프로세스를 고유하게 식별.
    2. 프로세스 상태: 실행 중, 준비 상태, 대기 상태 등.
    3. CPU 레지스터 상태: 컨텍스트 스위칭 시 저장되는 값.
    4. 메모리 관리 정보: 페이지 테이블, 세그먼트 테이블 등.
    5. 파일 및 I/O 정보: 열려 있는 파일, 입출력 장치 핸들 등.
    6. 스케줄링 정보: 우선순위, 할당된 CPU 시간 등.
    7. 계정 정보: 사용자 ID, 그룹 ID, 리소스 사용량 등.
  • PCB의 역할:
    • 프로세스 간 컨텍스트 스위칭 시 PCB의 정보가 참조되고 업데이트된다.
    • 각 프로세스가 독립적으로 동작할 수 있도록 상태를 기록하고 관리한다.

컨텍스트 스위칭(Context Switching)

컨텍스트 스위칭은 CPU가 실행 중인 프로세스의 상태를 저장하고, 다른 프로세스의 실행 상태를 복원하는 과정이다.

  • 필요성:
    • 멀티태스킹 시스템에서 여러 프로세스를 번갈아 가며 실행.
    • CPU 자원을 효율적으로 사용하고 사용자 응답성을 높이기 위함.
  • 단계:
    1. 현재 프로세스의 상태 저장:
      • CPU 레지스터, 프로그램 카운터(PC), 스택 포인터(SP) 등의 값이 PCB에 저장.
      • PCB는 프로세스가 실행을 중단했던 시점의 정보를 보관.
    2. 다른 프로세스의 상태 로드:
      • 실행 준비가 된 다른 프로세스의 PCB를 참조.
      • PCB에 저장된 레지스터 값, 프로그램 카운터 등을 CPU에 복원.
  1. 새로운 프로세스 실행:
    • 복원된 컨텍스트를 바탕으로 프로세스가 이전 상태부터 이어서 실행.

컨텍스트 스위칭의 세부 동작

컨텍스트 스위칭은 주로 운영체제 커널 모드에서 수행되며, 다음과 같은 세부 단계로 이루어진다.

  1. 중단:
    • 현재 실행 중인 프로세스가 종료되거나, I/O 대기 상태로 전환되거나, 시간 할당이 끝날 때 발생.
    • 인터럽트 요청(예: 타이머 인터럽트)을 통해 실행이 중단.
  2. 현재 프로세스 상태 저장:
    • CPU 레지스터, 스택 포인터(SP), 프로그램 카운터(PC) 값을 PCB에 저장.
    • 필요시 프로세스 메모리 페이지의 상태도 갱신.
  3. 스케줄링:
    • 스케줄러가 다음 실행할 프로세스를 선택.
    • 선택 기준은 스케줄링 알고리즘에 따라 다름(예: FIFO, Round Robin, Priority Scheduling 등).
  4. 새로운 프로세스 상태 로드:
    • 새로 선택된 프로세스의 PCB 정보를 읽어 CPU에 로드.
    • 새 프로세스의 레지스터, PC, SP 값을 복원.
  5. 새로운 프로세스 실행:
    • 이전 프로세스의 실행 중단 지점에서 새 프로세스가 이어서 실행.
    • 컨텍스트 스위칭이 완료된 후, 사용자 모드로 복귀.
  • 오버헤드:
    • 컨텍스트 스위칭은 CPU 사이클을 사용하므로 오버헤드가 발생.
    • 전환 속도를 최적화하기 위해 하드웨어 지원(예: TLB, MMU 등)이 사용되기도 함.
profile
Turning Vision into Reality.

0개의 댓글