트랜잭션 메모리 란 무엇입니까?

소프트웨어에서 트랜잭션 메모리 체계는 데이터베이스가 사용하는 트랜잭션과 매우 유사한 트랜잭션을 사용하는 멀티 스레드 프로그래밍을위한 조치입니다. 둘 이상의 스레드가 동일한 데이터에 동시에 액세스하려고하면 프로그램의 결과가 스레드 액세스 순서에 따라 달라지는 여러 가지 바람직하지 않은 상황이 발생할 수 있습니다. 일반적으로 한 번의 주문이 필요하며 멀티 스레딩에서 잠금은 단일 스레드 만 한 번에 특정 리소스에 액세스 할 수 있도록하는 가장 쉽고 간단한 방법입니다.

트랜잭션 메모리에 대한이 접근 방식에는 멀티 스레딩의 잠금과 관련하여 여러 가지 문제가 있습니다. 어떤 종류의 예기치 않은 오류가 발생하면 잠금이 영구적이 될 수 있으며 잠금은 교착 상태 또는 우선 순위 반전과 같이 동시성에 대한 예기치 않은 문제를 일으킬 수 있습니다. 잠금이 매우 세분화 된 결과 다른 코드에는 잠금, 컨텍스트 전환 및 잠금 해제에 많은 시간을 소비하는 코드가 포함됩니다. 이는 프로그램에서 다른 중요한 작업을 수행하는 것보다 이러한 작업에 코드가 더 많은 시간을 소비 할 수 있기 때문에 중요한 문제입니다. 반대로 거친 잠금은 처리 성능 저하와 동시성 감소를 유발할 수 있습니다.

트랜잭션 메모리의 문제는 C #의 "잠금 블록", 읽기-쓰기 잠금, 쓰기 장벽 등 고급 잠금을 통해 해결됩니다. 트랜잭션 메모리와 관련하여 가장 중요한 우선 순위 중 하나는 잠금이없고 불필요한 잠금 처리 시간이없는 것입니다. . 일반적으로 공유되는 데이터 구조에 조작에서 상호 배제가 필요하지 않은 경우 잠금이없는 것으로 동의합니다. 공유되고 잠금이없는 데이터 구조는 표준 잠금 기술이 동시 시스템에있는 경우 일반적으로 관련된 문제를 피합니다.

TCC (Transactional Memory Coherence and Consistency) 모델은 공유 메모리에서 제안 된 새로운 모델입니다. 이 모델에 따르면 원자 트랜잭션은 병렬 작업, 메모리 일관성, 통신 및 메모리 참조 일관성과 같은 기본 단위입니다. TCC 모델은 표준 잠금 또는 세마포어를 사용하는 동기화를 제거하여 병렬 소프트웨어를 더 단순하게 만듭니다. TCC는 하드웨어를 통해 각 트랜잭션 발생 영역의 모든 쓰기를 하나의 패킷으로 결합하여 영구적으로 공유되는 메모리 상태로 패킷을 원자 적으로 브로드 캐스트합니다. 단순화 된 일관성 하드웨어 이외에도, 낮은 휴면 메시지를 줄이고 특정 표준 일관성 프로토콜을 완전히 제거 할 수 있습니다.

다른 언어

이 문서가 도움이 되었나요? 피드백 감사드립니다 피드백 감사드립니다

어떻게 도와 드릴까요? 어떻게 도와 드릴까요?