저는 2 대의 컴퓨터가 32 비트 PCI 버스를 통해 동일한 메모리에 액세스하는 다중 컴퓨터 환경에서 작업하고 있습니다.다중 컴퓨터 메모리에서 원 자성 보유 읽기/쓰기를 수행합니까?
첫 번째 컴퓨터는 32 비트 int에만 쓰기 만합니다.
*int_pointer = number;
두 번째 컴퓨터는 32 비트 int에서만 읽습니다.
number = *int_pointer;
OS/CPU는 모두 32 비트 아키텍처입니다.
PCI 기반 컴퓨터는 Intel 기반입니다.
PCI 카드의 컴퓨터가 전원이 켜져 있습니다.
필자가 우려하는 경우는 읽기 전용 컴퓨터가 읽기 전용 컴퓨터와 동시에 변수를 변경하면 읽기 컴퓨터의 잘못된 데이터가 발생한다는 것입니다.
메모리의 동일한 위치에 읽기/쓰기의 원 자성이 여러 컴퓨터에서 유지되는지 알고 싶습니다.
그렇다면 것 다음 방지 경쟁 조건 :
number = *int_pointer;
while(*int_pointer != number) {
number = *int_pointer;
}
내가 * 모든 16ms를 발생 기록하고 무작위로 발생합니다 읽기 것을 보장 할 수 있습니다.
두 컴퓨터가 서로 다른 타이머를 사용하므로 * 시간이 흐려질 수 있습니다.
를 참조하십시오. – paxdiablo
이 PCI 버스의 메모리 컨트롤러는 무엇입니까/누가 있습니까? –
@JonathonReinhart 메모리 컨트롤러는 두 번째 컴퓨터가 상주하는 PCI 카드입니다. pax, 사실 일 수도 있지만 내가 사용하는 언어는 C입니다. – Serdalis