상세 컨텐츠

본문 제목

Thread (쓰레드)

운영체제

by 소사탕 2021. 2. 17. 11:18

본문

728x90
반응형

Thread 개념

응용프로그램
API/라이브러리, 플랫폼, 쉘, 컴파일러
OS
HW
  • 1 응용프로그래머
    • C언어 파이썬  자바
  • 2 시스템 프로그래머
    • API 사용법
    • OS (윈도우는 소스가 달라서 이해가 안되는게 있을수도 있다.)
  • 3 하드웨어 개발자

Thread (스레드)

  • Light Weight Process 라고도 함
  • 프로세스
    • 프로세스 간에는 각 프로세스의 데이터 접근이 불가
  •  스레드
    • 하나의 프로세스에 여러개의 스레드 생성 가능
    • 스레드들은 동시에 실행 가능
    • 프로세스 안에 있으므로, 프로세스의 데이터를 모두 접근 가능
  • Thread는 각기 실행이 가능한 stack 존재

Process VS Thread

 

 

Thread 는 스택에 각각의 영역을 가지고 있는 함수이다

* 각 Thread에 존재하는 stack point 와 pc 를 가지고 있다.  (SP , PC)

* HEAP , BSS , DATA , CODE 를 공유한다 (프로세스와 다른점)

* IPC를 사용하지않고도 공유하고 있다 .

 

 

Multi Thread (멀티 스레드)

  • 소프트웨어 병행 작업 처리를 위해 Multi Thread를 사용함

 

멀티 프로세싱과 Thread

  • 멀티 태스킹과 멀티 프로세싱

출처: http://donghoson.tistory.com/15

  • 최근 CPU는 멀티 코어를 가지므로, Thread를 여러 개 만들어, 멀티 코어를 활용도를 높임
  • 멀티 태스킹
    • 하나의 CPU에 여러 프로세스
  • 멀티 프로세싱 (병렬식)
    • 하나의 프로세스에 여러개에 CPU를 사용 (Thread를 여러개 만든다.)
    • 여러개의 프로세스를 조금씩나눠서 여러개 CPU에 실행 

 

  1. 하나의 프로세스 하나의 Thread
  2. 하나의 프로세스 여러개의 Thread
  3. 여러개의 프로세스 하나의 Thread
  4. 여러개의 프로세스 여러개의 Thread (요즘 방식 ... 윈도우 리눅스 맥 )

Thread 장점 

1. 사용자에 대한 응답성 향상

 

 

 

2. 자원 공유 효율

  • IPC 기법과 같이 프로세스간 자원 공유를 위해 번거로운 작업이 필요 없음
  • 프로세스 안에 있으므로, 프로세스의 데이터를 모두 접근 가능

 

 

 

 

 

 

 

 

 

 

 

3. 작업이 분리되어 코드가 간결

  • 사실 작성하기 나름

Thread 단점

  • 스레드 중 한 스레드만 문제가 있어도, 전체 프로세스가 영향을 받음
  • 멀티 프로세스

  • 멀티 Thread

  • 스레드를 많이 생성하면, Context Switching이 많이 일어나, 성능 저하
  • 리눅스 OS에서는 Thread를 Process와 같이 다룸
    • Thread를 많이 생성하면, 모든 스레드를 스케쥴링해야 하므로, Context Switching이 빈번할 수 밖
      에 없음

Thread vs Process

  • 프로세스는 독립적, 스레드는 프로세스의 서브셋
  • 프로세스는 각각 독립적인 자원을 가짐, 스레드는 프로세스 자원 공유
  • 프로세스는 자신만의 주소영역을 가짐, 스레드는 주소영역 공유
  • 프로세스간에는 IPC 기법으로 통신해야 함, 스레드는 필요 없음

PThread

  • POSIX 스레드(POSIX Threads, 약어: PThread)
  • Thread 관련 표준 API

 

정리

  • Thread 개념 정리
    • 프로세스와 달리 스레드간 자원 공유
    • 스레드 장점CPU 활용도를 높이고
      성능 개선 가능
      응답성 향상
      자원 공유 효율 (IPC를 안써도 됨)
    • 스레드 단점
      하나의 스레드 문제가, 프로세스 전반에 영향을 미침
      여러 스레드 생성시 성능 저하 가능
728x90
반응형

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

Thread (쓰레드)  (0) 2021.02.17
Thread (쓰레드)  (0) 2021.02.17
프로세스와 컨텍스트 스위칭  (0) 2021.02.15
선점형과 비선점형 스케쥴러  (0) 2021.02.14
5. 멀티 프로그래밍  (0) 2021.02.13

관련글 더보기

댓글 영역