동시성 및 메모리 모델
동시성 및 메모리 모델은 동시성 프로그램이 어떻게 구성되고 상호 작용하는 스레드가 공유 메모리를 어떻게 관찰하는지를 정의하여 올바른 병렬 소프트웨어의 기반을 이룹니다.
Definition
동시성 모델은 독립적으로 실행되는 계산이 어떻게 구성되고 통신하는지를 설명하는 반면, 메모리 모델은 동시성 스레드가 공유 메모리에 접근할 때 읽기가 어떤 값을 관찰할 수 있는지를 지정하여 프로그래머, 언어 및 하드웨어 간의 계약을 정의합니다.
Scope
이 영역은 동시성의 언어와 이론을 다룹니다: 통신 및 동기화를 위한 프로세스 계산법 및 동시성 모델, 메모리 작업의 허용된 순서를 지정하는 메모리 일관성 모델, 동기화 메커니즘 및 데이터 경쟁 없음, 그리고 세션 유형과 같은 동시성을 위한 유형 시스템. 이는 언어가 동시에 실행되고 상태를 공유하는 프로그램에 어떻게 의미를 부여하는지를 다룹니다.
Sub-topics
Core questions
- 동시성 통신 프로세스를 어떻게 모델링하고 추론할 수 있는가?
- 프로그램이 관찰할 수 있는 메모리 작업의 순서는 무엇인가?
- 데이터 경쟁으로부터의 자유는 어떻게 보장되거나 명시되는가?
- 유형은 통신을 어떻게 규율하고 동시성 오류를 방지할 수 있는가?
Key theories
- 프로세스 계산법
- 호어의 CSP와 밀너의 CCS 및 파이-계산법은 동시성, 통신 프로세스의 대수적 이론을 제공하며, 구성 및 동기화를 위한 연산자와 비시뮬레이션과 같은 행동 등가성 개념을 포함합니다.
- 순차적 일관성
- 램포트는 순차적 일관성을 각 프로세서의 프로그램 순서에 따른 작업의 일부 인터리빙으로 멀티프로세서 실행이 나타나야 한다는 요구 사항으로 정의했으며, 이는 약한 메모리 모델이 비교되는 기준점입니다.
- 메모리 일관성 모델
- Adve와 Gharachorloo는 공유 메모리 일관성 모델의 스펙트럼을 체계화하여, 완화된 순서 지정이 성능을 어떻게 가능하게 하면서 동시성 프로그램에 대한 추론을 복잡하게 만드는지 설명합니다.
Clinical relevance
멀티코어 하드웨어가 완화된 순서 지정을 관찰 가능하게 만들었기 때문에 메모리 모델은 이제 주류 언어 사양(예: C++ 및 Java)의 일부가 되었습니다. 이를 올바르게 이해하는 것은 정확하고 이식 가능한 동시성 소프트웨어에 필수적입니다. 프로세스 계산법 및 세션 유형은 메시지 전달 언어 및 프로토콜 설계에 정보를 제공합니다.
History
동시성 이론은 페트리 넷과 1970년대 호어(CSP)와 밀너(CCS)의 작업에서 발전했으며, 이후 모바일 프로세스를 위한 파이-계산법으로 이어졌습니다. 램포트는 1979년에 순차적 일관성을 정의했습니다. 완화된 하드웨어가 확산됨에 따라 2000년대에 Java 및 C++와 같은 언어를 위한 메모리 모델이 공식화되었고, 약한 메모리 의미론은 활발한 연구 분야가 되었습니다.
Debates
- 강한 대 완화된 메모리 일관성
- 설계자들은 순차적 일관성과 같은 강한 모델의 직관적인 단순성과 재정렬을 허용하는 완화된 모델의 성능을 절충하는데, 이는 추론을 복잡하게 하고 신중한 언어 수준의 의미론을 요구합니다.
Key figures
- C. A. R. Hoare
- Robin Milner
- Leslie Lamport
- Sarita Adve
Related topics
Seminal works
- hoare1978
- milner1989
- lamport1979
- adve1996
Frequently asked questions
- 메모리 모델이란 무엇인가?
- 메모리 모델은 여러 스레드가 공유 메모리에 접근할 때 읽기가 반환할 수 있는 값을 지정하는 공식적인 계약으로, 컴파일러와 하드웨어가 수행할 수 있는 재정렬과 프로그래머가 의존할 수 있는 것을 정의합니다.
- 순차적 일관성이란 무엇인가?
- 순차적 일관성은 동시성 실행이 각 스레드의 프로그램 순서를 존중하는 스레드 작업의 단일 인터리빙처럼 동작해야 한다고 요구하며, 이는 가장 직관적이지만 (종종 완화되는) 메모리 모델입니다.