📌 스레드

프로세스를 구성하는 실행의 흐름 단위다.
하나의 프로세스는 여러 개의 스레드를 생성하여 병렬 또는 동시 실행을 수행 할 수 있다.

 

1️⃣ 스레드의 개념

스레드는 운영체제에서 최소 실행 단위로 간주되고, '프로세스'내에서 실행되는 서브 작업( Subtask )이다.

모든 쓰레드는 동일한 메모리 공간(= 주소공간)을 공유한다.

 

2️⃣ 스레드의 유형

  1. 커널 스레드( Kernel Thread )
    • 운영 체제가 직접 관리하는 스레드
    • 커널이 스케줄링을 담당하며, 시스템 호출을 통해 생성 및 관리한다.
    • 커널 모드에서 실행되므로 성능 오버헤드가 발생할 수 있다.
  2. 사용자 스레드( User Thread )
    • 사용자 수준에서 관리되는 스레드
    • 커널의 개입 없이 사용자 프로그램이 직접 스레드를 생성 및 관리한다.
    • 커널이 관여하지 않아서 문맥 전환 비용이 낮다
    • 하지만 커널이 단일 스레드로 인식해서 한 스레드가 블록되면 전체 프로그램이 멈출 수 있다.

3️⃣ 스레드의 장점과 단점

 ✅ 장점

  • 프로세스보다 가볍고, 프로세스 문맥 전환에 비해 스레드 문맥 전환이 비용이 적다.
  • 동일한 프로세스 내에서 메모리 및 자원을 공유하여 효율적인 데이터 교환이 가능하다.

 ❌ 단점

  • 여러 스레드가 동일한 자원에 접근하면 데이터 충돌이 발생할 수 있다.
  • 과도한 스레드 생성 시 문맥 전환 비용이 증가하여 성능이 저하 될 수 있다.

📌스레드 자원

1️⃣ 스레드가 공유하는 자원

앞서 언급한대로 스레드는 같은 프로세스에 속하기 때문에 메모리 공간과 일부 시스템 자원을 공유한다.

  1. 코드( Code ) 영역
  2. 데이터( Data ) 영역
  3. 힙( Heap ) 영역
  4. 파일 디스크립터

위 4가지를 프로세스 내에서 스레드들이 모두 공유한다.

2️⃣ 스레드가 독립적으로 가지는 자원

  1. 레지스터
  2. 스택

정리

자원 공유 여부 설명
코드 영역 ✅ 공유 모든 스레드가 같은 명령어 실행 가능
데이터 영역 ✅ 공유 전역 변수, static 변수
힙 영역 ✅ 공유 malloc(), new 로 할당한 동적 메모리
파일 디스크립터 ✅ 공유 파일, 소켓, 파이프 공유
레지스터 ❌ 독립 프로그램 카운터, 스택 포인터 등
스택 ❌ 독립 지역 변수, 함수 호출 정보

'CS > 혼공컴운' 카테고리의 다른 글

[CS] 동기화  (0) 2025.02.12
[CS] CPU 스케줄링  (0) 2025.02.11
[CS] 프로세스 계층 구조  (0) 2025.02.11
[CS] 프로세스 상태  (0) 2025.02.11
[CS] 프로세스의 메모리 영역  (0) 2025.02.10

+ Recent posts