특별한 하드웨어 지침 없이 코드를 어떻게 테스트하고 동작을 설정합니까?
-
01-07-2019 - |
문제
내가 찾은 대부분의 구현에는 이를 수행하기 위한 하드웨어 지침이 필요합니다.그러나 이것이 필수인지는 의심스럽습니다(만약 그렇다면 이유를 알 수 없습니다...).
해결책
원하는 경우 상호 배제 잠금을 얻기 위해 테스트 및 설정 지침이 필요하지 않습니다.Dijkstra는 1965년에 내가 알고 있는 최초의 상호 배제 알고리즘을 설명했습니다.논문 제목은 "동시 프로그래밍 제어 문제 해결"이었습니다. Google에서 가까운 사본을 검색해 보세요.원래 알고리즘은 하드웨어의 특별한 지원이 전혀 필요하지 않았지만 CPU에 원자적 명령을 제공하면 성능이 크게 향상됩니다.
테스트 및 설정, 원자 스왑, 로드 링크 + 저장 조건은 모두 CPU가 제공하는 일반적인 기본 요소입니다.모두 상호 배제를 구현하는 데 사용될 수 있으며, 그런 다음 원하는 잠금 의미 체계를 구현하는 데 사용할 수 있습니다.
다른 팁
크로스아치 방식을 원하고 gcc를 사용하고 있다면 gcc의 원자 내장 기능을 사용할 수 있습니다.
http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html
이를 호출하면 현재 빌드 아키텍처에 대한 하드웨어별 기계 명령이 생성됩니다.이를 지원하지 않는 경우 컴파일이 실패합니다.(제 생각에는...)
제휴하지 않습니다 StackOverflow