읽기-수정-쓰기

읽기-수정-쓰기(read–modify–write)는 컴퓨터 과학에서 메모리 위치를 읽고 여기에 새 값을 쓰는 원자적 작업 클래스(예: 검사와 지정, 페치와 추가, 비교와 교환)이다. 완전히 새로운 값이나 이전 값의 일부 기능을 동시에 사용한다. 이러한 작업은 다중 스레드 응용 프로그램에서 경쟁 조건을 방지한다. 일반적으로 뮤텍스나 세마포어를 구현하는 데 사용된다. 이러한 원자적 작업은 비차단 동기화에도 많이 사용된다.

모리스 헐리히(1991)는 다음과 같이 합의 수치를 기준으로 원자 작업의 순위를 매겼다.

 ∞: 메모리 간 이동과 교환, 증가된 대기열, 비교와 교환, 페치와 콘스, 고정 바이트, 로드 링크/스토어 컨디셔널(LL/SC)"Writing Lock-Free Code: A Corrected Queue"
by Herb Sutter: "Compare-and-swap (CAS) is ... widely available ... However, some systems instead provide the equivalently powerful load-linked/store-conditional (LL/SC) instead."
 2n − 2: n-레지스터 할당
 2: 검사와 지정, 스왑, 페치와 추가, 대기열, 스택
 1: 원자적 읽기 및 원자적 쓰기

주어진 합의 번호가 필요한 작업을 아무리 많이 사용해도 합의 번호가 낮은 작업만으로 구현하는 것은 불가능하다. 읽기-수정-쓰기 명령어는 입출력 장치에서 사용될 때 예상치 못한 결과를 낳는 경우가 많다. 쓰기 작업은 읽기 작업에서 액세스되는 동일한 내부 레지스터에 영향을 미치지 않을 수 있기 때문이다.Massmind: "The read–modify–write problem"

이 용어는 원자적 읽기-수정-쓰기 시퀀스로 실제 쓰기 작업을 수행하는 RAID 레벨과도 연관되어 있다. 이러한 RAID 수준에는 RAID 4, RAID 5 및 RAID 6이 포함된다.

 같이 보기 
 선형화가능성
 쓰기 증폭

 각주 

분류:동시성 제어
분류:컴퓨터 메모리