번역 테이블의 항목을 업데이트하는 단계는 무엇입니까?일부 MMU 변환 테이블 항목 변경 - 올바른 방법?
일부 메모리 보호를 위해 ARM920T의 MMU를 사용합니다. 프로세스간에 전환 할 때 다른 프로세스의 메모리를 보호하기 위해 일부 항목을 변경해야합니다. 테이블을 업데이트 한 후 (메모리에서) 전체 TLB 무효화를 실행하지만 (확실한 것은 잠긴 항목이 없음) 새로운 프로세스가 이전의 데이터에 계속 액세스 할 수 있습니다.
테이블을 가로 질러 다닐 때 (다른 프로세스 영역이 "USR 모드에서 액세스 할 수 없음"으로 설정 됨) 의미가있는 것처럼 보입니다.
편집 나는 또한 TLB 무효화 전 (모두 캐시에) 전체 캐시가 깨끗하고 무효화 할 수 있지만, 아무것도 변경되지 않습니다.
입니다. 질문은 다음과 같습니다. 번역 테이블에서 업데이트를 수행하기 위해 수행해야 할 단계는 무엇입니까? 성능은 지금 기준이 아닙니다. 그리고 내 질문에 명시된 바와 같이 : 문제는, 내가 테이블을 업데이 트하지만 변경 사항이 mmu에 의해 고려되지 않는 것 같습니다. 또한 지금은 실제 매핑을 사용하지 않는다는 것을 유의하십시오 (모든 것이 단지 평면으로 매핑됨을 의미 함). – Nobody
평면 매핑은 메모리 모델에 영향을주지 않습니다. 메모리 매핑시 플래그, TX, CB 및 기타 비트가 매핑되는 메모리의 일부에 대한 메모리 모델을 결정해야합니다. 그 입구에 테이블에. ARM에는 여러 메모리 모델이 있습니다. 프로세서 매뉴얼에서 읽어야합니다. 강력하게 처리 된 명령은 모든 캐시가 자동으로 플러시되고 쓰기 작업이 순서대로 실행되지 않으므로 가장 쉽게 처리 할 수 있습니다. Strongly ordered memory를 사용하고 UTLB를 플러시하십시오. – sgupta