OS | Thread

DoItDev·2021년 9월 27일
0
post-thumbnail

Thread

  • 프로세스의 특정한 수행 경로
  • 프로세스가 할당 받은 자원을 이용하는 실행의 단위

Note:

  • 프로그램(프로세스)의 실행 단위 이며 하나의 프로세스에 여러개의 쓰레드를 구성 가능
  • 하나의 프로세슬 구성하는 쓰레드들은 프로세스에 할당된 메모리, 자원 등을 공유
  • 프로세스와 같이 실행, 준비, 대기 등의 샐행 상태를 갖는다.
  • 실행상태가 변할 때 쓰레드 문맥교환을 수행
  • 쓰레드 별로 자신만에 stack 과 레지스터를 가진다.
  • 한순간에 하나의 쓰레드 만 발생

화면 캡처 2021-09-27 100513


특징

  • 프로세스 내에 각각 stack 만 따로 할당을 받고 code,data,heap 영역을 공유
  • 한 프로세스 내에서 동작되는 여러 실행의 흐름, 프로세스 내에 쓰레드 끼리 공유 하면서 실행
  • 같은 프로세스 안에 있는 여러 쓰레드들은 같은 공간의 heap 메모리를 공유, 프로세스는 다른 프로세의 메모리에 접근 불가
  • 각각의 쓰레드는 별도의 레지스터와 스택을 갖고 있지만, heap 메모리는 서로 읽고 상용이 가능
  • 한 쓰레드가 프로세스 자원을 변경하면, 다른 쓰레드 또한 그 변경 결과를 즉시 볼 수 있다.

장점

  • 프로세스 보다 생성 및 종료 시간, 쓰레드 간의 전환 시간이 짧다.
  • 프로세스의 메모리, 자원등을 공유하므로 커널의 도움없이 상호 간의 통신이 가능하다.

프로세스 vs 쓰레드

프로세스는 운영체제로부터 자원을 할당 받는 작업의 단위
쓰레드는 프로세쓰가 할당 받은 자원을 이용하는 실행 단위

profile
Back-End Engineer

0개의 댓글