공부기록/동시성
7가지 동시성 모델 - 1장 서문
DGL
2022. 1. 26. 01:05
동시성 → 교사 한명이 학생들을 다뤄야함
병렬성 → 교사 한명과 조교 한명이 학생들을 다뤄야함
동시성과 병렬성이 혼동되는 이유 → 스레드와 잠금장치는 병령성을 직접 지원하지 않기 때문
동시적인 프로그램은 깁노적으로 비결정적 → 사건이 일어나는 시점, 즉 타이밍에 따라서 결과가 달라진다.
8비트 vs 32비트 컴퓨터로 32비트 문자열 → 8비트 컴퓨터로는 수열을 생성하여 해결, 32비트 컴퓨터로는 한번에 해결
현대 CPU는 파이프라이닝, 비순차 실행, 추측 실행 들의 기법을 이용하며 매우 병렬적
공유 메모리 (모든 프로세스가 공유) → 각각의 프로세스는 캐시
동시성
→ 독립성, 장애 감지 → 탄력성, 장애 허용을 가능하게 해야함( 버그가 있을 수 있고, 버그가 없으면 하드웨어 장애가 있을 수 있기 때문)
여러문제를 다루는 스레드 한개보다, 하나의 문제를 다루는 스레드를 여러개 만드는 것이 낫다.
일곱가지 모델
- 스레드와 잠금장치
- 함수형 프로그래밍
- 클로저 방식
- 액터
- 순차 프로세스 통신
- 데이터 병렬성
- 람다 아키텍처
이러한 모델은 제각각 알맞은 분야가 있으며, 다음의 질문들을 염두에 두어야함
- 이 모델은 동시성, 병렬성 문제 혹은 두개를 모두 해결하는 데 적합한가?
- 이 모델은 어떤 병렬 아키텍처를 타깃으로 삼고 있는가
- 이 모델은 탄력성을 갖춘 코드 혹은 지리적으로 분산된 코드를 작성할 때 필요한 도구를 제공하는가?
탄력성을 갖춘 코드 : 장애허용, 각 코드의 독립성
지리적으로 분산된 코드: 분산 소프투웨어. 한 데이터센터에 장애가 일어나도, 다른 곳에는 데이터센터가 남아있어서 시스템 전체의 마비를 피한다.