![BIOS는 사용 가능한 RAM의 양을 어떻게 결정합니까?](https://rvso.com/image/1466423/BIOS%EB%8A%94%20%EC%82%AC%EC%9A%A9%20%EA%B0%80%EB%8A%A5%ED%95%9C%20RAM%EC%9D%98%20%EC%96%91%EC%9D%84%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EA%B2%B0%EC%A0%95%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
BIOS가 리얼 모드에서 실행되는 16비트 프로그램이고 이 모드에서는 1MB만 주소 지정이 가능한 경우 BIOS는 예를 들어 1GB와 같이 사용 가능한 RAM의 양을 어떻게 결정합니까?
답변1
BIOS는 리얼 모드에서 실행되는 16비트 프로그램이며, 이 모드에서는 1MB만 주소 지정이 가능합니다.
이것은 잘못된 것입니다.
16비트 리얼 모드는 프로세서를 1MB의 메모리로 제한하지 않습니다.
x86 프로세서가 리얼 모드에서 시작하고 기본적으로 16비트 8086 명령어 세트로 설정되는 것은 사실이지만 80286 명령어 세트에는 확장이 있습니다. 8086 명령어 앞에 0x67 바이트를 붙인 경우 해당 명령어는 2 32 바이트 또는 4GiB 메모리에 액세스할 수 있는 32비트 레지스터에 액세스할 수 있습니다.
64비트 프로세서를 사용하는 경우 프로세서는 PAE(실제 주소 확장), 이는 프로세서가 최신 마더보드에 물리적으로 설치할 수 있는 것보다 많은 2,52 바이트의 메모리에 액세스할 수 있게 해줍니다.
예를 들어 BIOS는 1GB와 같은 사용 가능한 RAM 용량을 어떻게 결정합니까?
이는 메모리 컨트롤러의 데이터시트에 문서화된 방법을 사용합니다(노스브리지).
대부분의 BIOS는 설치된 RAM 유형을 감지하고 각 메모리 모듈의 크기를 감지한 다음 감지된 RAM을 사용하도록 칩셋을 구성할 때까지 RAM을 사용할 수 없습니다.
이 모든 것은 칩셋별 방법에 따라 다르며 일반적으로 메모리 컨트롤러(노스브리지)의 데이터시트에 문서화되어 있습니다.
이 프로세스 중에는 프로그램을 실행하는 데 RAM을 사용할 수 없습니다. BIOS는 처음에 ROM에서 실행되므로 RAM 칩으로 필요한 게임을 실행할 수 있습니다. 하지만 다른 프로그램 내부에서 이 작업을 수행하는 것은 완전히 불가능합니다.