MMU가 켜져있는 논리적 및 물리적 주소?

피노

MMU가 커널의 물리적 및 논리적 주소를 처리하는 방법에 대해 약간의 의심이 있습니다. 예를 들어 내 질문을 설명하려고 노력할 것입니다. 우리가 ARM 아키텍처에 있다고 가정 해 봅시다.

시스템은 MMU가 꺼진 상태에서 시작하므로 CPU 내부를 통과하는 모든 주소는 물리적입니다. MMU를 활성화하기 전에 모든 물리적 주소가 가상 주소에 매핑된다는 페이지 테이블을 만듭니다 physical address + 0xC0000000. 그런 다음 MMU를 켭니다. 이 모든 것이 분명합니다. 하지만 이제 질문이 시작됩니다.

파이프 라인 아키텍처에 있기 때문에 이후 명령이 주소 0x8000에서로드되었다고 가정 해 보겠습니다. 이제 내가 아는 바에 따르면 MMU가 페이지 테이블 내에서이 주소를 찾지 못하기 때문에 페이지 폴트가 있어야하므로 상황을 처리하기 위해 페이지 폴트가 호출됩니다. 그러나 또한 인터럽트 벡터를 설정했다면 그 안에 다른 물리적 주소에 대한 분기가 있기 때문에 MMU는이 주소를 찾지 못하며 불가피하게 무한 루프에 빠집니다. 내가 무엇을 놓치고 있습니까?

user3124812

실제로 동일한 실제 메모리 영역과 일치하더라도 사용 된 모든 가상 주소를 매핑해야한다는 점을 놓칩니다. 자세히 살펴 보겠습니다.

다음 레이아웃 이있는 startup코드 (기본 초기화 및 MMU 활성화 용) 및 기타 main코드 (MMU 활성화 된 경우에만 작동)가 있다고 가정 해보십시오.

  • 시작-phys : 0x4000-0x7FFFF, virt : 0x4000-0x7FFFF
  • 메인-phys : 0x8000-0xBFFF, virt : 0xC0008000-0xC000BFFF

이러한 레이아웃은 링커 작업이며 올바른 스크립트를 제공하는 것입니다. 이 예에서 CPU 진입 점은 0x4000. 거의 하드웨어 특정 주소입니다.

CPU는 MMU가 비활성화되고 'PC = 0x4000'으로 시작되며 0x4800MMU가 활성화 될 때 까지 계속 됩니다.

따라서 MMU를 활성화하기 전에 0x4000-0x7FFFF(시작) 및 0xC0008000-0xC000BFFF(기타 모든 코드)에 대한 맵이 있어야합니다 .

이제 MMU가 활성화되었습니다. PC에는 0x4804 (32b CPU 가정)가 있습니다. 0x4804A는 가상 주소 지금은 그것은에 매핑 된 0x4804 물리적 주소 . CPU 0x48040x4808, 0x480C등으로 진행합니다 .

어느 시점에서 당신은 main. 들어 ARM 그 같은 것

ldr r0, =0xC0008000
bx r0

참고, 그 가상 주소main항목이 사용됩니다. 따라서 분기 후 물리적 메모리에서 PC=0xC0008000확인됩니다 0x8000.

0x4000-0x7FFFF 그 후에 매핑을 제거 할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

가상 주소, 선형 주소, 물리적 주소 및 논리적 주소를 사용하는 구성 요소는 무엇입니까?

분류에서Dev

가상 주소 공간 및 물리적 RAM

분류에서Dev

물리적 주소 공간 대신 논리적 주소 (가상 주소 공간)에 대한 이유

분류에서Dev

실행 시간 주소 바인딩 체계의 논리적 및 물리적 주소 공간

분류에서Dev

가상 주소 공간이 물리적 주소 공간과 같을 때 MMU가 필요합니까?

분류에서Dev

물리적 및 논리적 범위

분류에서Dev

R-리드 및 시차가있는 논리적 진술

분류에서Dev

CPUID 명령으로 C / C ++로 물리적 및 가상 주소 비트를 얻는 방법

분류에서Dev

물리적 주소에 해당하는 가상 논리 주소를 계산하는 방법은 무엇입니까?

분류에서Dev

물리적 주소 확장-가상 주소는 어떻게 작동합니까?

분류에서Dev

물리적 주소 확장-가상 주소는 어떻게 작동합니까?

분류에서Dev

논리적 AND OR 및 증가 우선 순위

분류에서Dev

물리적 주소를 지리적 위치 위도 및 경도로 변환

분류에서Dev

ARMv7에서 TTBR0 및 TTBR1 물리적 또는 가상에서 사용되는 주소입니다.

분류에서Dev

페이지 테이블의 가상 주소는 실제 물리적 주소로 어떻게 변환됩니까?

분류에서Dev

Linux는 물리적 주소를 (여러 개의) 가상 주소로 어떻게 변환합니까?

분류에서Dev

FFS : 파티션의 논리적 및 물리적 블록

분류에서Dev

가상-물리적 주소 변환을위한 FreeBSD 모듈

분류에서Dev

java.nio.MappedByteBuffer 가상 / 물리적 주소

분류에서Dev

물리적 주소가있을 때 세그먼트 메모리 주소를 얻는 방법은 무엇입니까?

분류에서Dev

LBA 크기가 하드 디스크의 물리적 또는 논리적 섹터 크기에 매핑됩니까?

분류에서Dev

커널 정렬되지 않은 액세스 oops에서 물리적 주소 역 참조를 가져옵니다.

분류에서Dev

x86 아키텍처에서 물리적 주소보다 가상 주소 공간에 대한 비트 수가 적은 이유는 무엇입니까?

분류에서Dev

두 개의 동일한 가상 주소가 어떻게 다른 물리적 주소를 가리킬 수 있습니까?

분류에서Dev

CPU는 어떤 물리적 주소가 어떤 가상 주소에 매핑되는지 어떻게 알 수 있습니까?

분류에서Dev

x86-64에서 긴 모드 및 페이징이 활성화되면 스택 포인터에 가상 주소 또는 물리적 주소가 포함됩니까?

분류에서Dev

SP 메타 데이터 : entityID 및 Location 속성의 물리적 주소

분류에서Dev

물리적 주소를 네트워크로 사용하는 방법과 DMA가 어떻게 연결됩니까?

분류에서Dev

물리적 주소는 php 또는 javascript로 액세스 할 수 있습니까?

Related 관련 기사

  1. 1

    가상 주소, 선형 주소, 물리적 주소 및 논리적 주소를 사용하는 구성 요소는 무엇입니까?

  2. 2

    가상 주소 공간 및 물리적 RAM

  3. 3

    물리적 주소 공간 대신 논리적 주소 (가상 주소 공간)에 대한 이유

  4. 4

    실행 시간 주소 바인딩 체계의 논리적 및 물리적 주소 공간

  5. 5

    가상 주소 공간이 물리적 주소 공간과 같을 때 MMU가 필요합니까?

  6. 6

    물리적 및 논리적 범위

  7. 7

    R-리드 및 시차가있는 논리적 진술

  8. 8

    CPUID 명령으로 C / C ++로 물리적 및 가상 주소 비트를 얻는 방법

  9. 9

    물리적 주소에 해당하는 가상 논리 주소를 계산하는 방법은 무엇입니까?

  10. 10

    물리적 주소 확장-가상 주소는 어떻게 작동합니까?

  11. 11

    물리적 주소 확장-가상 주소는 어떻게 작동합니까?

  12. 12

    논리적 AND OR 및 증가 우선 순위

  13. 13

    물리적 주소를 지리적 위치 위도 및 경도로 변환

  14. 14

    ARMv7에서 TTBR0 및 TTBR1 물리적 또는 가상에서 사용되는 주소입니다.

  15. 15

    페이지 테이블의 가상 주소는 실제 물리적 주소로 어떻게 변환됩니까?

  16. 16

    Linux는 물리적 주소를 (여러 개의) 가상 주소로 어떻게 변환합니까?

  17. 17

    FFS : 파티션의 논리적 및 물리적 블록

  18. 18

    가상-물리적 주소 변환을위한 FreeBSD 모듈

  19. 19

    java.nio.MappedByteBuffer 가상 / 물리적 주소

  20. 20

    물리적 주소가있을 때 세그먼트 메모리 주소를 얻는 방법은 무엇입니까?

  21. 21

    LBA 크기가 하드 디스크의 물리적 또는 논리적 섹터 크기에 매핑됩니까?

  22. 22

    커널 정렬되지 않은 액세스 oops에서 물리적 주소 역 참조를 가져옵니다.

  23. 23

    x86 아키텍처에서 물리적 주소보다 가상 주소 공간에 대한 비트 수가 적은 이유는 무엇입니까?

  24. 24

    두 개의 동일한 가상 주소가 어떻게 다른 물리적 주소를 가리킬 수 있습니까?

  25. 25

    CPU는 어떤 물리적 주소가 어떤 가상 주소에 매핑되는지 어떻게 알 수 있습니까?

  26. 26

    x86-64에서 긴 모드 및 페이징이 활성화되면 스택 포인터에 가상 주소 또는 물리적 주소가 포함됩니까?

  27. 27

    SP 메타 데이터 : entityID 및 Location 속성의 물리적 주소

  28. 28

    물리적 주소를 네트워크로 사용하는 방법과 DMA가 어떻게 연결됩니까?

  29. 29

    물리적 주소는 php 또는 javascript로 액세스 할 수 있습니까?

뜨겁다태그

보관