공부기록/동시성

7가지 동시성 모델 - 1장 서문

DGL 2022. 1. 26. 01:05

동시성 → 교사 한명이 학생들을 다뤄야함

병렬성 → 교사 한명과 조교 한명이 학생들을 다뤄야함

동시성과 병렬성이 혼동되는 이유 → 스레드와 잠금장치는 병령성을 직접 지원하지 않기 때문

동시적인 프로그램은 깁노적으로 비결정적 → 사건이 일어나는 시점, 즉 타이밍에 따라서 결과가 달라진다.

8비트 vs 32비트 컴퓨터로 32비트 문자열 → 8비트 컴퓨터로는 수열을 생성하여 해결, 32비트 컴퓨터로는 한번에 해결

현대 CPU는 파이프라이닝, 비순차 실행, 추측 실행 들의 기법을 이용하며 매우 병렬적

공유 메모리 (모든 프로세스가 공유) → 각각의 프로세스는 캐시

동시성

→ 독립성, 장애 감지 → 탄력성, 장애 허용을 가능하게 해야함( 버그가 있을 수 있고, 버그가 없으면 하드웨어 장애가 있을 수 있기 때문)

여러문제를 다루는 스레드 한개보다, 하나의 문제를 다루는 스레드를 여러개 만드는 것이 낫다.

일곱가지 모델

  • 스레드와 잠금장치
  • 함수형 프로그래밍
  • 클로저 방식
  • 액터
  • 순차 프로세스 통신
  • 데이터 병렬성
  • 람다 아키텍처

이러한 모델은 제각각 알맞은 분야가 있으며, 다음의 질문들을 염두에 두어야함

  • 이 모델은 동시성, 병렬성 문제 혹은 두개를 모두 해결하는 데 적합한가?
  • 이 모델은 어떤 병렬 아키텍처를 타깃으로 삼고 있는가
  • 이 모델은 탄력성을 갖춘 코드 혹은 지리적으로 분산된 코드를 작성할 때 필요한 도구를 제공하는가?

탄력성을 갖춘 코드 : 장애허용, 각 코드의 독립성

지리적으로 분산된 코드: 분산 소프투웨어. 한 데이터센터에 장애가 일어나도, 다른 곳에는 데이터센터가 남아있어서 시스템 전체의 마비를 피한다.