Threads

define 30·2021년 10월 28일
0
post-thumbnail
post-custom-banner

Parallel Program
동시에 여러개를 처리함.

한 번에 여러개를 처리할 때 더 효과적으로 할 수 있는 방법은?

Threads
-> 프로그램 (Process)의 실행단위. 하나의 프로세스는 여러개의 쓰레드로 구성이 가능하다.

이렇게 쓰레드는 하나의 프로세스 안에 존재하며, 그 process의 address space를 공유한다.
(자유롭게 메모리에다가 read/write 가능.)

우리는 스케줄을 쓰레드 단위로 할 수 있다.

이런 식으로 &buff 를 사용하여 간단히 resource들을 옮길 수 있다.

Process -> address space / resources ...
Thread -> sequential execution

(Thread는 Scheduling의 unit이 된다. )

Process는 그냥 컨테이너가 되고, running,blocked,ready... 등은 Thread가 수행한다.

Thread 사용의 장점:
managing overhaed 감소. PCB를 만들지 않고 쓰레드를 공유하여 managing을 감소시킬 수 있다.

Process vs Threads


POSIX Threads


User-level mode / Kernel mode

User-level mode -> function call

  • small and fast
  • system call X
    Kernel mode -> system call

Synchronization

멀티 쓰레드 / 멀티 프로세스 의 경우
협동작업이 중요하다. (execution이 조종되어야 함.)

  • Race condition

Non-deterministic output.

협동을 하지 않았기 때문에 생기는 문제.
Shared resource를 사용할때 (특히 write) Synchronization을 해줘야 함.

쓰레드 관점에서 Resources Shared -> Global/Dynamic object가 해당한다.

해결책: Critical Region 설정.
If, Critical Region
A, B
shared resourse access -> A
NOT B

CSP requirements
1. mutual exclusion
한 번에 하나만!
2. 기다리는 쓰레드 중 순서를 정해줘야 하는데, 무한정으로 기다리는 starvation 조심
3. T 때문에 S가 Critical section에 못 들어가면 안됨.
4. CPU의 speed나 number를 가정해서 제한하면 안됨.

post-custom-banner

0개의 댓글