[운영체제] Process-Threads
[운영체제] Process-Threads
Motivation(동기)
애플리케이션 내에 실행되는 스레드 애플리케이션을 사용하는 여러 작업은 별도의 스레드로 구현할 수 있다.
- Update display 디스플레이 업데이트
- Fetch data 데이터 가져오기
- Spell checking 철자 검사
- Answer a network request 네트워크 요청 응답 프로세스를 새로 만드는 것은 무겁지만 쓰레드를 만드는 것은 가볍다. 코드를 간소화 하고 효율성을 높일 수 있다. 커널은 일반적으로 멀티스레드에 포함된다.
Examples
웹 브라우저
- 스레드1: 디스플레이 이미지
- 스레드2: 텍스트 제공
- 스레드3: 네트워크로 부터 데이터 불러오기 워드 프로세서
- 스레드1: 디스플레이 이미지
- 스레드2: 텍스트 제공
- 스레드3: 네트워크로 부터 데이터 불러오기 웹 서버 - 커널
Single and Multithreaded Processes(단일 및 다중 스레드 프로세스)
- code, data, files는 공유
- registers(SP,PC), stack은 분리 -> 즉, 공유되지 않는다.
Benefits(스레드 이점)
Responsiveness(반응성) -> 반응시간과 반비례하다. Easy Resource Sharing(자원 공유 용이성)
- 같은 주소 공간을 스레드가 사용한다. Economy(경제성)
- Cheaper creation(만들기에 저렴하다), context switch -> 스레드는 공유하고 있는 것들이 많아서 context switching할 것이 적다. Scalability(확장성)
- 다른 프로세스에서 스레드가 돌아가고 있다.
- e.g. 멀티 코어 환경에서 여러 스레드가 병렬적으로 실행될 수 있어 성능을 최대한 활용할 수 있다.
Parallel Execution on a Multicore System
single core
1
2
3
4
T1 - T2 - T3 - T4 - T3 - T2 - T1 - ...
--------------------------------------->
time
Multi-core
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
core 1
T1 - T3 - T1 - T3 - T1 - ...
------------------------------>
time
core 2
T2 - T4 - T2 - T4 - T2 - ...
------------------------------>
time
코어 수에 따라 달라진다.
Multicore Programming
프로그래머에게 압력을 가하는 멀티코어 시스템에는 다음과 같은 문제가 있다.
- Dividing activities (활동 나누기)
- Balance (균형)
- Data splitting (데이터 분할)
- Data dependency (데이터 종속성)
- Testing and debugging (테스트 및 디버깅)
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.