1. Motivation
- 대부분의 최신 애플리케이션은 멀티 스레드
- 스레드는 애플리케이션 안에서 실행된다.
- 프로세스 생성은 중량이 큰 반면 스레드 생성은 경량
- Multiple tasks with the application 을 각 스레드로 구현가능
- 코드 단순화, 효율성 향상
- 커널은 일반적으로 멀티 스레드
2. Overview
- Process : 실행 중인 프로그램 (아이디 공유 O)
- Thread : 프로그램이 두 개 이상의 동시 실행 작업으로 분할되는 방법 (아이디 공유 X)
- process보다 작은 단위
- 프로세스 내의 자원을 공유 -> 각 스레드는 프로세스의 주소 공간에서 실행된다.
- Thread구성 : Thread ID, program counter, register set, stack, etc.
Multithreaded Process
Process vs. Thread
3. Thread Control Block (TCB)
Thread Control Block (TCB) : 스레드에 대한 정보를 담고 있는 자료 구조, 커널 내부에서 스레드 관리에 사용
(* PCB : 프로세스에 대한 모든 정보를 집합해놓은곳 )
Examples of information in TCB
- Thread id (스레드 아이디)
- State of the thread (running, ready, waiting, start, done) (스레드 상태)
- Stack pointer (스택 포인터)
- Program counter (프로그램 카운터)
- Thread's register values (스레드의 레지스터 값)
- Pointer to the process control block (PCB) (프로세스 제어블록 포인터)
Why Thread?
- 프로세스 생성에 시간과 리소스가 많이 소요됨
- 단일 스레드 프로세스와 비교
- 확장성 : 멀티프로세서 구조에 활용
- 반응성
- 여러 프로세스와 비교
- 자원공유
- 경제적 : 프로세스 생성 속도가 스레드 생성 속도보다 약 30배 느림
4. Multicore Programming
Multicore or multiprocessor systems 과제:
- Dividing activities
- Balance
- Data splitting
- Data dependency
- Testing and debugging
Concurrency vs. Parallelism
- Concurrency : 진행 중인 두 개 이상의 작업을 동시에 지원
- Single processor / core, 동시성을 제공하는 스케줄러
- Parallelism : 시스템이 두 개 이상의 작업을 동시에 수행
Types of parallelism
- Data parallelism
- : 동일한 데이터의 하위 집합을 여러 코어에 분산시키고 각 스레드에서 동일한 작업 수행
- (일하는건 똑같은데 처리하는 데이터가 다르다. ex. TA채점)
- Task parallelism
- : 코어 간에 스레드 분산, 각 스레드가 고유한 작업 수행
- (하는 작업자체가 다르다 ex. 개발 vs 영업)
- - 하는일이 같냐 다르냐가 차이점이다.
5. Amdahl’s Law
- 컴퓨터 성능 개선에 대한 공식
- 어떤 작업에서 병렬화할 수 있는 부분의 비율이 주어졌을 때, 전체 작업 시간을 줄일 수 있는 최대 속도 향상 비율을 예측하는 데 사용
- 하나의 프로세서를 사용할 때와 여러 개의 프로세서를 사용할 때의 속도 차이를 계산하는 데 사용
( S는 직렬 부분, N은 코어)
더보기
single core에서 100시간 소요되는 작업
병렬화 가능 : 80% ( l-s)
병렬화 불가능 : 20% (s)
4core 컴퓨터에서의 실행시간은? (core수 : n)
=> 80 / 4 + 20
<소요시간>
(l-s) / n + s
<속도>
l / ((l-s) / n + s)
- 애플리케이션의 직렬 부분이 추가 코어를 사용하여 얻은 성능 향상에 지대한 영향을 미친다
- 따라서, 애플리케이션의 병렬 처리를 효과적으로 활용하려면 직렬 부분의 비중을 줄이는 것이 중요
'Study > 운영체제' 카테고리의 다른 글
4. Threads - Thread libraries (0) | 2023.04.12 |
---|---|
4. Threads - Multithreading models (0) | 2023.04.12 |
3. Processes - Example of IPC system (0) | 2023.04.11 |
3. Processes - Inter-process communication (0) | 2023.04.11 |
3. Processes - Operations on processes (0) | 2023.04.11 |