CH3. Process (2)

유지언·2023년 8월 22일
0

운영체제

목록 보기
3/8

Thread

A thread (or lightweight process) is a basic unit of CPU utilization

1개의 Process (Access space 1개, PCB도 1개)에 CPU 수행 단위를 여러 개 두는 것

즉, Process 내에서 공유할 수 있는 것은 최대한 공유하고 CPU 수행과 관련된 정보 (PCB-program counter, register, Access space-stack)만 공간을 나눠 별도로 두는 방식.

Thread의 구성

  • program counter
  • register set
  • stack space

Thread가 동료 thread와 공유하는 부분 (=task)

  • code section
  • data section
  • OS resource

전통적인 개념의 heavyweight process는 하나의 thread를 가지고 있는 task로 볼 수 있다.

Thread의 장점

1) Responsiveness
다중 스레드로 구성된 태스크 구조에서는 하나의 서버 스레드가 blocked(waiting) 상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 할 수 있다.
ex) multi-threaded Web - if one thread is blocked (eg. network) another thread continues (eg. display)

2) Resource Sharing
다중 스레드를 사용하면 code, data 등의 자원을 효율적으로 사용할 수 있다. 다중 스레드가 아니라 별도의 process를 생성하여 작업하면 공유할 수 있는 부분이 있음에도 각각의 process에 대하여 별도의 access space를 생성해 주어야하기 때문에 메모리가 낭비되는 측면이 있다.

3) Economy
creating & CPU switching thread (rather than a process)
Solaris의 경우 위 두 가지 overhead가 각각 30배, 5배

동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율(throughput)과 성능 향상을 얻을 수 있다.

4) Utilization of MP(multi-processer) Architectures

  • 스레드를 사용하면 병렬성을 높일 수 있다.

Thread 구현

1) Some are supported by Kernal (Kernal Threads)
운영체제가 Process안에 thread가 여러 개 있는지 안다.

2) Others are suppoerted by library (User Threads)
운영체제는 Process안에 thread가 여러 개 있는지 모른다.

Some are real-time threads

profile
신입 데이터 엔지니어

0개의 댓글