운영체제

쓰레드

으엉어엉 2024. 4. 26. 17:33
728x90

쓰레드란?

  • CPU 이용의 기본 단위
  • 프로세스 내에서 실행되는 기본 단위
  • light weight process

 
 

  • 프로세스와 쓰레드
  • 전통적인 프로세스는 하나의 쓰레드를 가지고 있다.
  • 프로세스가 여러 쓰레드를 가지면 동시에 여러개의 작업을 수행할 수 있다.
  • 특히 멀티 프로세서 시스템에서 쓰레드들을 다른 프로세서에서 실행시킬 수 있다. CPU2개면 1개는 main, 한개는 run 실행
  • 같은 프로세스에 속한 쓰레드들은 프로세스의 코드, 데이터, 열린 파일 등을 공유함
  • 각 쓰레드는 각자 레지스터 집합(switch를 계속해서) 스택을 가짐

 
단일 쓰레드: 전통적
다중 쓰레드 : 현재
 

 
 

장점

  • 빠른 응답성: 수행하다가 중단되어도 다른 부분이 계속 수행할 수 있다.
  • 자원 공유: 쓰레드는 속해있는 프로세스의 메모리 및 자원을 공유
  • 경제성: 프로세스내에서 생성되며 비용이 적게 든다.
  • 멀티프로세서의 활용: 각 쓰레드가 다른 CPU에서 수행될 수 있으므로 멀피프로세서의 여러 CPU를 활용할 수 있다.

 


 

쓰레드 구현 방식

1. 사용자 수준의 쓰레드 라이브러리 : 라이브러리에서 쓰레드를 관리하며 응용프로그렘에게 쓰레드 생성등 함수 제공
2. 커널 쓰레드: 쓰레드를 커널에서 직접한다. 운영체제가 쓰레드 생성 등의 쓰레드 관리를 위한 시스템 호출을 제공

 

다중 쓰레딩 모델

One-to-One model

  • 각 사용자 수준 쓰레드가 하나의 커널 쓰레드에 대응됨
  • 한 쓰레드가 시스템 호출을 하여 중지 상태가 되었을 때 다른 쓰레드가 실행될 수 있다.
  • 여러 쓰레드들을 다중 프로세서에서 병렬로 실행할 수 있다.
  • 각 쓰레드마다 커널 쓰레드를 만들어야 하므로 커널에 오버헤드가 된다. 커널은 생성할 수 있는 쓰레드 개수를 제한하여 오버헤드를 제한한다

 

 

Many-to-One model

  • 여러 개의 사용자 수준 쓰레드가 하나의 커널 쓰레드에 대응된다.
  • 사용자 수준의 쓰레드 라이브러리에서 쓰레드를 관리한다
  • 쓰레드가 시스템 호출을 하면, 전체 쓰레드가 중지 상태가 됨 : 멀티 프로세스 X
  • 쓰레드들을 다중 프로세서에서 병렬로 실행할 수 없다. One To One 과 차이
  • 처음 호출때만 Clone 두번째부터는 X

 

 

Many-to-Many model

 

 
 
 
 

728x90

'운영체제' 카테고리의 다른 글

프로세스 동기화  (0) 2024.06.14
CPU 스케쥴  (1) 2024.04.26
프로세스  (1) 2024.04.26
운영체제 구조  (0) 2024.04.26
하드웨어 개요  (0) 2024.04.26