프로세스와 스레드

낚시하는 곰·2025년 4월 1일

krafton jungle

목록 보기
35/52

프로세스란?

실행 중인 프로그램의 인스턴스
즉, "프로그램 + 운영체제가 할당한 자원들의 묶음"이야.


프로세스가 하는 일 (or 프로세스의 역할)

역할설명
자원 할당 단위프로세스는 실행에 필요한 모든 자원의 컨테이너야.
가상 메모리 공간 제공스레드들은 이 공간을 공유하면서 작업해.
보안 격리서로 다른 프로세스는 메모리를 침범하지 못해 (보호 기법 기반).
파일 디스크립터 관리열려 있는 파일, 소켓 등도 프로세스 단위로 관리돼.
프로세스 제어OS는 프로세스 단위로 작업을 생성, 제거, 스케줄링 관리해.
스레드 묶음의 소유자하나의 프로세스는 여러 스레드를 포함할 수 있어.

프로세스가 가지고 있는 자원들

자원 종류예시
고유 PID프로세스를 구분하는 ID
가상 메모리 공간코드, 데이터, 힙, 스택
파일 디스크립터열려 있는 파일/네트워크
권한/보호 정보사용자, 그룹 ID 등
스레드 목록스레드 A, B, C ...

프로세스, 스레드 차이점

  • 프로세스는 실행 단위의 가장 큰 단위이고,
  • 실제 CPU에서 명령어를 실행하는 주체는 "스레드"야.
  • 즉, 프로세스는 최소한 1개의 스레드를 포함하고 있어야 실행될 수 있어!
[프로세스 A]
   └─ 스레드 A1 (실행 주체)

[프로세스 B]
   ├─ 스레드 B1
   └─ 스레드 B2

실제로 CPU가 실행하는 건 스레드 A1, B1, B2 같은 스레드


멀티스레드 프로세스의 경우

  • 프로세스 A: 3개의 스레드 (A1, A2, A3)
  • CPU 코어: 2개

실행 상황:

[코어 1] ← 스레드 A1 실행
[코어 2] ← 스레드 A2 실행
[스레드 A3] ← 대기 중 (나중에 스케줄링되어 실행됨)

프로세스 A가 실행된다 = 그 안의 스레드 중 일부가 실행되고 있다.


OS 입장에서의 프로세스

운영체제는 각 프로세스를 독립된 "작업 단위"로 보고, 다음을 보장해:

  • 격리 (Isolation): 서로의 메모리를 침범 못하게 보호
  • 보호 (Protection): 파일/자원 접근 권한 제어
  • 관리 (Management): 상태 전이, 스케줄링, 종료 등 시스템 통제

프로세스 vs 스레드 정리

항목프로세스스레드
실행 단위큰 단위작은 단위
자원독립적인 자원 소유프로세스의 자원 공유
주소 공간독립공유
컨텍스트 스위칭 비용작음
생성 비용높음낮음

결론

프로세스는 "자원의 컨테이너"이자 "보안 단위"로서, 프로그램 실행을 위한 모든 환경을 구성하고 관리하는 핵심 단위야. 그 안에서 실제 일을 수행하는 건 스레드지만, 스레드들이 제대로 일하려면 프로세스라는 공간이 반드시 필요하지.

profile
취업 준비생 낚곰입니다!! 반갑습니다!!

0개의 댓글