나는 Linux 커널이 사용하는 메모리 주소의 유형을 이해하려고 노력 중입니다.
- 사용자 가상 주소
- 실제 주소
- 버스 주소
- 커널 논리 주소
- 커널 가상 주소
나는 다음 사항을 이해합니다:
사용자 가상 주소:사용자가 보는 주소는 RAM에 없을 수도 있고 스왑 주소일 수도 있습니다.
실제 주소:모든 메모리 주소는 어떤 형태로든 물리적 주소를 나타내야 합니다. 실제 주소는 직접 형식입니다.
마찬가지로: 커널 논리 주소 및 커널 가상 주소.
버스 주소와 요구 사항을 이해할 수 없습니다.
설명이 순진한 경우 참고 자료가 유용할 수 있습니다.
답변1
대부분의 시스템에서 물리적 주소 공간은 다양한 "장치"에 매핑됩니다. 그 중 하나는 시스템 RAM이고 다른 하나는 PCI 버스와 같을 수 있습니다. 버스 주소는 매핑된 버스의 주소 핀에 실제로 배치된 값으로, 일반적으로 물리적 주소에서 가져온 비트 범위입니다. 다른 버스 핀(예: 칩 선택 및 읽기/쓰기 등)은 물리적 주소에서 가져오거나 가져오지 않을 수 있습니다. 이것은 장치를 버스에 연결하는 "메모리 매핑된" 방법이지만 유일한 방법은 아닙니다. 예를 들어 Intel 프로세서에는 장치와 통신하고 있음을 나타내는 특수 I/O 지침이 있으며 물리적 주소에는 역할이 없습니다. 이것에. 이 경우 버스 주소는 명령어에 인코딩되거나 레지스터에 상주합니다. 건배!
머레이...