프로세스와 스레드

jm·2022년 12월 10일
0

OS

목록 보기
4/13

프로세스 : 자원을 할당 받아서 제어하는, 프로그램 작업
스레드 : 자원과 제어를 분리해서 제어만 분리한 것, 프로세스 안에서 실행되는 흐름, 스레드는 여러개 있을 수 있음. Stack 영역을 제외하고 나머지 영역은 공유!

제어(스레드)의 요소 : 제어정보(SP, PC, 상태), 지역 데이터, 스택

스레드(Thread)

  • Light Weight Process (LWP)
  • 프로세서 활용의 기본 단위
  • 구성요소 :ThreadId, RegisterSet(PC,SP), Stack(local data)
  • 제어 요소 외 코드, 데이터 및 자원들은 프로세스 내 다른 스레드들과 공유
  • 전통적 프로세스 = 단일 스레드 프로세스
  • I/O가 발생이 되서 block 상태로 내려갔다 다시 올라감 -> 멀티 스레드를 사용해서 하나의 스레드가 지연되더라도 다른 스레드는 작업을 계속할 수 있음 (자원 공유 -> 병렬 처리)

자원은 공유하고 제어는 개별적으로 해서 병렬처리가 가능하다.

스레드의 장점

  • 사용자 응답성
    • 일부 스레드의 처리가 지연되어도, 다른 스레드는 작업을 계속 처리가능
  • 자원 공유
    • 자원을 공유해서 효율성 증가(커널의 개입을 피할 수 있음.)
  • 경제성
    • 프로세스의 생성, context switch에 비해 효율적
  • 멀티 프로세스 활용
    • 병렬처리를 통해 성능 향상

사용자 수준 스레드

  • 사용자 영역의 스레드 라이브러리로 구현됨

    • 스레드의 생성, 스케줄링 등
  • 커널은 스레드의 존재를 모름

    • 커널의 관리(개입)를 받지 않음
      • 생성 및 관리의 부하가 적음, 유연한 관리 가능
      • 이식성이 높음 (jvm만으로도 실행 가능함)
    • 커널은 프로세스 단위로 자원 할당
      • 하나의 스레드가 block 상태가 되면, 모든 스레드가 대기

커널 수준 스레드

  • OS(Kernel)가 직접 관리

  • 커널 영역에서 스레드의 생성, 관리 수행

    • context switching 등 부하(Overhead)가 큼
  • 커널이 각 스레드를 개별적으로 관리

    • 프로세스 내 스레드들이 병행 수행 가능
      • 하나의 스레드가 block되어도, 다른 스레드는 계속 작업 가능

멀티 스레드

  • 다대일(n:1) 사용자 수준, 일대일(1:1) 커널 수준,
  • 다대다(n:m)(n>m) 모델, 혼합형 스레드 모델
  • 사용자는 원하는 수만 큼 스레드 사용
  • 커널 스레드는 자신에게 할당된 하나의 사용자 스레드가 block상태가 되어도, 다른 스레드 수행 가능 -> 사용자, 커널 수준의 장점을 합침.
  • 효율적이고 유연하다

https://youtu.be/EdTtGv9w2sA [Course] Operating System (CPA310) - 운영체제 강의. HPC Lab. KOREATECH

profile
ㅎㅎ

0개의 댓글