HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
👻
개발 기록
/
📑
강의 정리
/
🗝️
덕수의 운영체제
/
📼
Thread management
📼

Thread management

프로세스와 스레드의 연관성

  • 프로세스는 할당받은 자원을 제어함.
  • 이 중에 제어 부분만 따로 떼어놓은 것을 스레드라 함.
  • 이 스레드는 여러 개 있음 = 하나의 프로세스 내 여러 스레드가 있을 수 있음 = 제어는 여러 개가 있음.
    • 사람 손은 두 개지만 여러 도구를 다룰 수 있는 것처럼!
 

스레드란?

notion image
  • 자원 영역과 제어 영역이 있음.
  • 스레드에는 제어정보(SP, PC, 상태 등), 지역 데이터, 스택이 있음.
    • ex) 지역 데이터는 for문의 스코프를 생각하면 됨.
  • 여기서 자원을 공유한다는 개념이 중요함.
    • 같은 프로세스의 스레드들은 동일한 주소 공간을 공유함.
  • 스레드에 대한 정의들.
    • Light Weight Process (LWP) - 프로세스는 자원과 제어를 각각 가지지만 스레드는 자원은 공유하고 제어만 하니 일반 프로세스보다 가벼움.
    • 프로세서(CPU) 활용의 기본 단위 - 스레드가 여러 개면(multi-threads 동시에 여러 CPU를 사용할 수 있음.
    • 구성요소
      • Thread ID
      • Register Set (PC program counter, SP stack point 등)
      • Stack ex) local data
    • 제어 요소 외 코드, 데이터 및 자원들은 프로세스 내 다른 스레드들과 공유.
    • 전통적 프로세스 = 단일 스레드 프로세스.
 

스레드 장점

  • 뛰어난 반응성/응답성(Responsiveness)
    • 프로세스의 일부가 blocked 상태여도 실행을 계속하는 것이 가능함. 
    • 유저 인터페이스에 있어 중요함. 특히 게임처럼 동시에 여러 개를 처리하는 환경에서 스레드가 유용함.
  • 자원 공유(Resource Sharing)
    • 자원을 공유해서 효율성이 증가함.
    • 커널의 개입을 피할 수 있음.
  • 경제성(Economy)
    • 스레드를 생성하는 것이 프로세스를 생성하는 것보다 비용이 적게 듦 (오버헤드가 적음).
    • 비용 : thread switching(스레드 전환) < context switching(컨텍스트 전환, 즉 프로세스 전환)
  • 확장성(Scalability)
    • 프로세스가 멀티 프로세서 구조의 이점을 적극적으로 활용할 수 있음. 즉, 다중 CPU 구조에서는 각각의 스레드가 다른 프로세서에서 병렬로 수행될 수 있으므로 병렬성이 증가함,
 

스레드의 구현

  • 사용자 수준 스레드 (User thread)
    • notion image
    • 사용자 영역의 스레드 라이브러리로 구현됨. ex) java thread
    • 장점
      • 커널은 스레드의 존재를 모르기 때문에 커널의 관리, 개입을 받지 않음 → 생성 및 관리의 부하가 적음, 유연한 관리 가능.
      • 이식성이 높음 - 라이브러리만 있다면 사용 가능.
    • 단점
      • 커널은 프로세스 단위로 자원을 할당함.
      • single-thread kernel의 경우 하나의 스레드가 block 상태가 되면, 모든 스레드가 대기해야 함.
  • 커널 수준 스레드 (kernel thread)
    • OS(kernel)가 직접 관리.
    • 단점
      • 커널 영역에서 스레드의 생성, 관리 수행 → context switching 등 부하(overhead)가 큼.
    • 장점
      • 커널이 각 스레드를 개별적으로 관리, 프로세스 내 스레드들이 병행 수행 가능.
      • 하나의 스레드가 block 상태여도 다른 스레드는 계속 작업 수행 가능.
       

      Multi-Threading Model

    • 다대일 (n:1) 모델
      • 사용자 수준 스레드
    • 일대일 (1:1) 모델
      • 커널 수준 스레드
    • 혼합형 (n:m) 모델
      • notion image
      • 혼합형 스레드
      • 사용자는 원하는 수만큼 스레드 사용
      • 커널 스레드는 자신에게 할당된 하나의 사용자 스레드가 block 상태가 되어도, 다른 스레드 수행 가능 (동적으로 스레드를 할당하고 병행 처리 가능)
      • 효율적이고 유연하다는 장점이 있음.
      • 실제 OS에서 사용하는 모델임.