오래 못 할 짓 하지 않기
[ 운영체제 ] 7. Thread 본문
Thread
- Process : 실행중인 프로그램
- Thread : 하나의 프로그램에서 2개 이상으로 나뉘어져 동시에 실행되는 하나의 단위
= 그냥 프로그램이라는 옷에 있는 한 가닥 실 이라는 표현이 정확할 것 같다.
스레드 특징 ) 하나의 프로세스 안에 있는 Thread끼리는 Resources를 공유한다.
Process가 공장
Thread가 일꾼이라고 생각하면 된다.
Thread Control Blcok (TCB)
: Thread에 관련된 정보를 담아둔다.
● 정보 :
- Thread id
- Thread 상태
- Stack pointer
- Prograrm counter
- Pointer to PCB ( 자기가 속해있는 프로세스의 PCB 를 가리킨다. )
근데 Thread를 쓰는 이유는?
하나의 작업을 하자고 Process를 새로 만드는 것은 시간/자원 측면에서 비효율적이다.
● Thread의 장점
1. 반응성
: Process가 막혀도(Blocked) 그 안에서 Thread가 계속 움직이기 때문에, user에 대한 반응성을 높여준다.
2. 자원 공유
: Thread는 (자신이 속한) Process에 있는 자원을 공유하기 때문에, Shared memory 혹은 Message passing보다 낫다.
3. 경제적
: Process 만드는 것보다 싸다, Context switching이 상대적으로 덜 일어나므로 overhead도 적다.
4. Scalability
: Process는 multiprocessor의 장점도 가져갈 수 있음
( Processor = Thread 로 생각하는 것 같음.)
Multicore Programming
Process가 공장
Thread가 일꾼이라고 생각했을 때
공장이 여러 개 있다.
Multicore Programming에는 2가지가 있다.
Concurrency ( 동시성 ) 와 Parrallelism ( 병렬성 ) 이 있음.
▲ Single-core ▲ Multi-core
● Concurrency
: 동시에 실행되는 것처럼 보이지만, 여러 작업을 번갈아가면서 실행
- 작업은 짧은 시간동안 실행 - 중단을 반복한다.
● Parallelism
: 여러 프로세서가 동시에 작업을 처리하는 것 ( 실제로 동시에 실행됨)
- 작업이 독립적으로 실행
- 각각의 프로세서에서 병렬로 처리된다.
● Type of Parallelism
- Data Parallelism
: Data를 여러 core를 통해 subset data를 만들고, 모두 똑같은 작업을 한다.
ex) 투표 개표 (10만 표가 있음)
core가 4개 있다고 가정했을 때, 각 core당 2.5만개씩 나눈다면 모두가 할 일은 똑같다.
동시에 가능하고, 같은 일을 한다.
- Task Parallelism
: Thread들을 각각의 코어에 넣고, 각각 Thread가 자기 할 일을 수행한다.
동시에 가능하고(=독립적), 각자 고유의 일을 한다.
ex) Task = 교실 청소
1분단 : 창문닦기
2분단 : 바닥쓸기
3분단 : 칠판닦기
...
Multithreading Models
Process가 공장
Thread가 일꾼이라고 생각하면
이건 일꾼이 많은 공장 1개이다.
우선 일꾼도 다 같은 일꾼이 아니듯이
Thread도 다 같은 Thread가 아니다.
유저모드 커널모드가 있듯이
User Thread , Kernel Thread가 있다.
(출처)
한동대학교 고윤민교수님 - OS
(참고)
https://yunchan97.tistory.com/61
'3학년 1학기 > 운영체제 (OS)' 카테고리의 다른 글
[ 운영체제 ] 9. Thread(2) (0) | 2024.04.08 |
---|---|
[ 운영체제 ] 8. Thread (0) | 2024.04.05 |
[ 운영체제 ] 6. Inter Process Communication / PIPE (0) | 2024.04.01 |
[ 운영체제 ] 5. 프로세스 - Parent,child (0) | 2024.03.25 |
[ 운영체제 ] 4. 프로세스 (0) | 2024.03.22 |