thread management

Jeong seulho·2023년 1월 22일
0

운영체제

목록 보기
6/35

📌프로세스와 스레드의 관계

프로세스가 하는 일은 2가지로
1. 자원을 할당받기
2. 제어하기
이 2가지 중 제어만을 담당하기 위해 분리한 것 = 스레드
하나의 프로세스 안에 복수의 스레드가 있다

또한 하나의 프로세스의 여러 스레드들은 같은 주소 공간을 공유한다.

📌스레드란?

  • Light Weight Process(LWP) : 자원과 제어중 제어만을 담당하는 가벼운 프로세스
  • 프로세스 활용, 실행의 기본 단위
  • 구성요소
    • thread ID
    • Register set(PC, SP 등)
    • stack(local data등)
  • 제어요소를 스레드마다 보유
  • 데이터 및 자원, 메모리를 같은 프로세스의 여러 스레드끼리 공유
  • 전통적인 프로세스(이전 까지 설명한 프로세스는) 단일 스레드 프로세스를 기준으로 한 것

📌스레드의 장점

  • 사용자 응답성 : 일부 스레드의 처리가 지연되어도 다른 스레드는 작업 처리 가능
  • 자원 공유 : 자원을 공유하면 커널의 개입을 피하여 효율성 증가
    • 커널의 개입이 많으면 비효율적임(context switching 최소화)
  • 경제성
  • 멀티 프로세서 : 병렬처리 가능

📌스레드의 구현

📖 사용자 수준 스레드(n:1 모델)

  • 사용자 영역의 스레드 라이브러리로 구현된다
    • 스레드의 생성, 스케줄링 등
    • java thread api, win32 threads 등
  • 커널의 스레드가 여러개인지 모른다
  • 커널의 관리를 받지 않아서 부하가 적고 이식성이 높음
  • 단, 하나의 스레드가 block상태가 되면 모든 스레드가 대기

📖 커널 수준 스레드(1:1 모델)

  • 커널, OS에서 직접 관리하는 스레드
  • 커널에서 스레드의 관리하여 부하가 크다
  • 커널이 각 스레드를 개별적 관리하여 병행 수행가능(다른 스레드가 block되어도 다른 스레드는 수행)

📖 혼합형 스레드(n:m 모델)

  • n개의 사용자 수준 스레드, m개의 커널 스레드(n > m)
  • 사용자가 원하는 만큼의 스레드 사용 가능
  • 병행 처리 가능

📮출처 : https://www.youtube.com/watch?v=hzXVQIlSSos&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN

0개의 댓글