Thread
Thread
"A Thread(of lightweight process) is a basic unit of CPU utilization"
1. Thread의 구성
- Program Counter
- Register Set
- Stack Space
2. Thread가 동료 Thread와 공유하는 부분(=task)
- code section
- data section
- OS resource
- PCB의 Program Counter와 Registers
3. 전통적인 개념의 heavyweight process는 하나의 Thread를 가지고 있는 task로 볼 수 있다.
4. 다중 스레드로 구성된 태스크 구조에서는 하나의 서버 스레드가 blocked(waiting) 상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 할 수 있다.
5. 동일한 일을 하는 수행하는 다중 스레드가 협력하여 높은 처리율(throughput)과 성능 향상을 얻을 수 있다.
6. 스레드를 사용하면 병렬성을 높일 수 있다.
흐름도
- 현재 코드의 어느 부분을 가리키고 있는지 알 수 있도록 PC가 존재
- 메모리의 register값을 thread에 넣음
- thread가 code의 어느 부분을 가리키다가 함수 호출시 함수를 호출하고 리턴하는 정보를 Stack에 저장해야 하지만 CPU 수행 단위가 여러개 있게 되면 Stack도 Thread 별도로 가지고 있어야함
- 프로세스의 공유 자원을 thread도 공유 소유,CPU 수행과 관련된 정보는 별도로 소유
Benifits of Threads
1. Responsiveness
- eg) multi-threaded web - if one thread is blocked (eg network) or, another thread continues (eg diplay)
2. Resource Sharing
- n threads can share binary code, data, resource of the process
3. Efficiency
- create & CPU switching thread (rather than a process)
- In the case of Solaris(type of UNIX), the two overheads are 30 times and 5 times, respectively.
4. Utilization of MP(Multi-Processor) Architectures
- each thread may be running in parallel on a different processor
'OS(운영체제)' 카테고리의 다른 글
Process Management 2 (0) | 2023.07.29 |
---|---|
Process Management 1 (0) | 2023.07.29 |
Process 1 (0) | 2023.07.29 |
System Structure & Program Execution (2) (0) | 2023.07.22 |
System Structure & Program Execution (1) (0) | 2023.07.22 |