- 공부한 날짜: 2021.11.
- 동시성(Concurrency)
-CPU 가용성 극대화를 위해 Parallelism의 단점 및 어려움을 소프트웨어(구현)레벨에서 해결하기 위한 방법
-싱글코어에 멀티스레드 패턴으로 작업을 처리함
-동시 작업에 있어서 일정량 처리 후 다음 작업으로 넘기는 방식
-즉, 제어권을 주고 받는 작업 처리 패턴, 병렬적은 아니나 유사한 처리방식
- Concurrency vs Parallelism
동시성(Concurrency) | 병렬성(Parallelism) |
논리적 | 물리적 |
논리적으로 동시 실행 패턴 | 물리적으로 동시 실행 |
싱글코어 | 멀티 코어 |
한 개의 작업을 공유 처리 | 주로 별개의 작업처리 |
디버깅 매우 어려움 | 디버깅 어려움 |
Mutex, Deadlock | OpenMP, MPI, CUDA |
- Blocking IO vs Non-Blocking IO
Blocking IO | Non-Blocking IO |
시스템 콜 요청시 -> 커널 IO 작업 완료시까지 응답대기 |
시스템 콜 요청 -> 커널 IO 작업 완료 여부 상관없이 즉시 응답 |
제어권이 IO 작업에 있음 -> 커널이 소유 -> 응답 전까지 대기(Block until response) |
제어권(IO작업) -> 유저프로세스 -> 다른 작업 수행 가능(지속) -> 주기적으로 시스템 콜 통해서 IO 작업 완료 여부 확인 |
- Async vs Sync
Async | Sync |
IO 작업 완료 여부에 대한 Noty는 커널(호출되는 함수)에서 유저 프로세스로(호출하는 함수) |
IO작업 완료 여부에 대한 Noty는 유저프로세스(호출하는함수)에서 커널(호출하는 함수)로 |
'Dev Language > Python' 카테고리의 다른 글
[파이썬_4]#14. I/O Bound - Synchronous (0) | 2021.12.08 |
---|---|
[파이썬_4] #13. CPU Bound vs IO Bound (0) | 2021.12.08 |
[파이썬_4] #11. Multiprocessing - Pipe (0) | 2021.12.07 |
[파이썬_4] #10. Multiprocessing- Queue (0) | 2021.12.07 |
[파이썬_4]#9. Multiprocessing- Sharing state (0) | 2021.12.07 |