프로세스 개요

김연준·2025년 4월 6일
post-thumbnail

💡프로세스와 PCB, 메모리 구조

운영체제를 이해하기 위해 반드시 짚고 넘어가야 할 핵심 개념이 있다.
바로 프로세스(Process) 와 이를 운영체제가 어떻게 관리하는가에 대한 이야기다.


🧠 프로세스란?

컴퓨터는 부팅과 동시에 수많은 프로세스를 실행한다.

✅ 포어그라운드 vs 백그라운드

  • 포어그라운드 프로세스: 사용자가 직접 확인 가능한 실행 중인 프로세스
  • 백그라운드 프로세스: 사용자 눈에 보이지 않는 곳에서 실행됨
    • 사용자와 직접 상호작용하는 경우도 있고,
    • 자율적으로 동작하는 경우도 있음
      → 유닉스: 데몬(Daemon), 윈도우: 서비스(Service) 라고 부름

⚙️ 운영체제의 프로세스 관리

운영체제는 프로세스의 실행 순서를 제어하고, 자원을 분배한다.
이를 위해 사용하는 구조가 바로 PCB (Process Control Block) 이다.


📋 PCB란 무엇인가?

PCB(Process Control Block) 는 프로세스에 대한 정보를 저장하는 커널의 자료 구조이다.

📌 역할

  • 각 프로세스를 식별하고 관리
  • 커널 영역에서 생성 및 소멸
  • 프로세스의 생성/종료와 함께 PCB도 생성/삭제됨

📁 PCB에 저장되는 정보 목록

  • 프로세스 ID (PID)
    고유 식별 번호 (같은 프로그램을 2번 실행하면 서로 다른 PID 부여)

  • 레지스터 값
    프로세스의 실행 상태 복원을 위한 저장 값 (문맥 저장용)

  • CPU 스케줄링 정보
    어떤 프로세스가 언제 CPU를 할당받을지 결정하는 데 필요

  • 메모리 관리 정보
    메모리 주소, 베이스/한계 레지스터, 페이지 테이블 정보 등

  • 파일/입출력 장치 목록
    프로세스가 열어둔 파일, 사용하는 장치 목록 등


🔄 문맥 교환 (Context Switching)

프로세스 실행이 전환될 때, 운영체제는 다음을 수행한다:

  1. 현재 프로세스의 정보(문맥)를 PCB에 저장
  2. 새로운 프로세스의 문맥을 복원하여 실행 이어감

⏱️ 문맥 교환은 매우 빠르게 일어나기 때문에 사용자 입장에서는 여러 프로세스가 동시에 실행되는 것처럼 보임

⚠️ 하지만 너무 잦은 문맥 교환은 오버헤드를 유발할 수 있으므로 빈도 조절이 중요하다.


🧩 프로세스의 메모리 구조

💡메모리 구조를 이해하면, 메모리 누수나 오버플로우 같은 오류를 사전에 방지할 수 있다.

운영체제는 사용자 영역에서 다음과 같이 프로세스 메모리를 구분한다:

🧱 정적 할당 영역 (Static Allocation Area)

🔹 코드 영역 (Code Segment)

  • 기계어 명령어가 저장되는 영역
  • CPU가 실행할 수 있는 실행 파일의 텍스트 코드
  • 읽기 전용 (수정 불가)

🔹 데이터 영역 (Data Segment)

  • 전역 변수, 정적 변수가 저장됨
  • 프로그램 실행 내내 유지됨
  • 실행 중 값은 변경 가능하나 영역 자체의 크기는 고정

✅ 이 두 영역은 프로그램이 실행되기 전부터 크기와 구조가 정해져 있으므로 정적 할당 영역이라 한다.


🔄 동적 할당 영역 (Dynamic Allocation Area)

🔹 힙 영역 (Heap Segment)

  • 프로그래머가 직접 동적으로 메모리 할당 (malloc, new 등)
  • 수동으로 해제하지 않으면 메모리 누수 발생 가능
  • 크기 유동적이며 실행 중 계속 변할 수 있음

🔹 스택 영역 (Stack Segment)

  • 함수 호출 시 생성되는 매개변수, 지역 변수 저장
  • 함수 종료 시 자동 소멸 (Last In First Out 구조)
  • PUSH / POP 방식으로 작동

📌 정리

  • 힙 영역: 낮은 주소 → 높은 주소로 성장
  • 스택 영역: 높은 주소 → 낮은 주소로 성장
  • 서로 반대 방향으로 커지므로, 충돌하지 않도록 주의해야 함

✅ 이 두 영역은 프로그램 실행 중 동적으로 크기가 변하므로 동적 할당 영역이라 부른다.


📌 마무리

운영체제는 단순히 프로세스를 실행하는 것이 아니라,
PCB를 통해 정보를 저장하고, 문맥을 교환하며, 메모리 구조를 세밀하게 관리한다.

이러한 구조를 이해하는 것은 시스템 성능과 안정성의 핵심을 파악하는 데 반드시 필요하다.

profile
Live a life you will remember

2개의 댓글

comment-user-thumbnail
2025년 4월 7일

운영체제 정리가 잘 되어있네요! 덕분에 잘 정리할 수 있었어요 감사합니다!

답글 달기
comment-user-thumbnail
2025년 4월 8일

운영체제를 안 들었는데 , 덕분에 운체에 대해서 공부할 수 있었어요^^ 감사합니다~

답글 달기