[운영체제] 스레드

장현수·2023년 6월 11일
0

운영체제

목록 보기
5/11
post-thumbnail

스레드 Thread

CPU를 수행하는 단위

동일한 일을 하는 프로세스가 여러 개 있다고 하면, 별도의 주소공간을 사용하게 되어 메모리 낭비
같은 일을 하는 프로세스를 여러 개 띄울 경우 주소 공간을 하나만 사용하도록 하고, 각 프로세스마다 다른 부분의 code를 실행하도록 하는 것

각 스레드(=각 CPU 수행 단위)마다 현재 레지스터에 어떤 값을 넣고, 코드의 어느부분을 실행하는지 Program Counter에 별도로 유지

Thread의 구성(각 스레드가 독립적으로 갖고있는 것)

  • program counter
  • register set
  • stack space

Thread 간 공유하는 부분(=task)

  • code section
  • data section
  • OS resources

Thread = Lightweight process

  • 프로세스를 별도로 두는 것보다, 프로세스 내부에 스레드를 여러 개 두는 것이 더 가볍다
  • 전통적인 방식 = heavyweight process

Thread의 장점

  • 다중 스레드로 구성된 태스크 구조에서는 하나의 서버 스레드가 blocked(waiting)상태일 때 동일한 태스크 내의 다른 스레드가 running되어 응답시간이 빠르다(빠른 응답성)
  • 동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율과 성능 향상을 얻을 수 있다(자원 공유)
  • 오버헤드가 큰 작업인 프로세스 생성, context switching에 비해 한 프로세스 안에서 thread를 만들고 thread들 간 CPU switching 작업은 오버헤드가 적다.(경제성=빠르다)
  • 스레드를 사용하면 병렬성을 높일 수 있다; CPU가 여러개인 PC에서만 얻을 수 있는 장점. -> 각 스레드들이 서로 다른 CPU에서 병렬적으로 실행되어 결과를 빨리 얻을 수 있다.(멀티프로세서 환경에서 효율적)

  • 각 스레드마다 프로세스가 가지고 있는 정보 중 CPU관련 정보만 별도로 갖게 된다.

Thread의 실행

1. Kernel Threads

  • 운영체제 커널을 통해 지원된다
  • 스레드의 스케줄링을 커널에서 관리

2. User Threads

  • 라이브러리를 통해 지원된다
  • 커널의 지원을 받지 않고 사용자의 수준에서 스레드를 구현

3. Realtime Threads

profile
개같이 발전하자 개발

0개의 댓글