티스토리 뷰
### Thread ###
: 프로세스가 할당받은 자원을 이용하는 실행의 단위
: thread ID, PC(program counter), register set, stack으로 구성된다.
: 여러 기능을 담당하는 module 들로 세밀하게 분할 할 수 있는 단위
=> process(프로그램 하나를 돌리는 것)에서 여러 thread가 공통 code/ data/ os resource(open files and signal)을 공유합니다.
<Threading type>
1. Singlethreading
: traditional processes에서 사용된다.
: request가 도착 할 때마다 새로운 process를 생성한다.
2. Multithreading
: 하나의 process에서 운용하는 둘 이상의 thread가 동시에 작업을 수행하는 것
: 새로운 request가 발생 했을 때 thread가 생성된다.
: 메모리 공간과 시스템 자원 소모가 줄어든다.
<Benefits in Multithreading>
1. Responsiveness(응답성)
: multithreading을 사용하면 program 일부가 차단되거나 length operation 수행하더라도 프로그램을 계속 사용할 수 있다.(여러 thread를 통해 reply를 잘 보내 줄 수 있다.)
2. Resource sharing
: 서로 다른 종류의 작업을 수행하는 thread가 process 내에서 동일 memory공간에 있는 data, code를 접근할 수 있어 추가적인 작업 없이 수행 할 수 있다.
=> multithreading은 공통 process의 자원을 내재적으로 공유합니다.
3. Economy
: thread를 생성될 때 마다 처리해야 되는 절차가 복잡하지 않다
: thread 전환은 process context 전환보다 overhead가 낮습니다.
4. Scalability(확장성)
: multithreading에서 thread들은 process에서 분산 할당 되서 병렬로 처리가 가능하다.
=> multithreading은 multicore(multiprocessor) architectures에서 병렬 계산을 이용 할 수 있습니다.
<Multicore Programming>
- multithreaded(multicore) programming
: 더 좋은 process성능을 내기 위한 계발 방법론
- Concurrency(병행 처리)
: single/multiprocessor에서 구현 할 수 있습니다.
: 시간 공유 기반 multithread 처리
-Parallelism(병렬 처리)
: multiprocessor에서만 구현할 수 있습니다.
:System은 둘 이상의 thread를 동시에 수행 할 수 있습니다.
(모든 thread를 할 수는 없다 => parallelism + concurrency)
<Parallelism과 관련 된 법칙 >
### Amdahl's Law ###
: 어떤 정교한 parallelism 알고리즘을 만든다 하더라도 이 공식을 넘기는 값은 발생 할 수 없다.
: core를 증가해도 성능향상은 process에 따라 한계가 있다.
: 통신 overhead는 고려하지 않습니다.(이상적인 상황)
: task/data 분할 및 통합에 대한 overhead를 고려하지 않습니다.(이상적인 상황)
<Type of Paralllelism>
1. Data parallelism
: 분산해야 되는 대상이 data를 대상으로 하는 것
: multiple cores에 걸친 data 배포
: 각 데이터에서 동일 한 task(thread)
2. Task parallelism
: data parallelism과 반대이며 구현 하기가 어렵다.
: 분산해야 되는 대상이 task(thread)를 대상으로 하는 것
: multiple cores에 걸친 task(thread) 배포
: 각 task(thread)은 동일/독립적 인 data에서 작동합니다.
3. Hybrid parallelism
: data parallelism + task parallelism
<User / Kernel Threads>
: user thread 랑 kernel thread 가 서로 연계하며 작업수행
=> 어떤 형태로 관계를 맺는냐에 따라 multithread의 형태가 달라진다.
1. User thread
: user space에서 존재하는 thread
: kernel 개입 없이 사용자 수준 thread librart로 구현됩니다.
(ex. Window threads, Java threads)
2. Kernel threads
: system call하고도 직접적으로 연결된다.
'운영체제 > 이론' 카테고리의 다른 글
(21) CPU scheduling (0) | 2020.09.19 |
---|---|
(20) Multithreading Models (0) | 2020.09.19 |
(18) Process Management(Process termination) (0) | 2020.09.17 |
(17) Process Management(Process creation) (0) | 2020.09.17 |
(16) Context Switching (0) | 2020.09.17 |