2012-09-01 9 views
0

어셈블리에서 운영 체제를 개발 중입니다. COM 파일을로드하는 작동 가능한 로더가 있지만로드해야하는지 확실하지 않습니다. 내 OS는 0x200000의 RAM에로드됩니다. 그 순간 나는 기억 관리 나 그와 같은 것이 없다. 난 그냥 (비디오 램에, 또는 기존 코드를 덮어 씁니다)해서는 안됩니다 어딘가에 프로그램을로드 할 겁니다. 바이오스는 IDT와 비디오 RAM 외에도 0x200000보다 먼저 사용합니다.어디 프로그램을 RAM에로드해야합니까?

+0

엄청나게 애매한 질문입니다. 나는 당신이 이것 같이 유용한 응답을 얻을 것이라는 점을 의심한다. – Cubic

+0

예 동의 함, 더 자세한 내용을 – user1454902

+0

더 자세히 추가하겠습니다. 나는 이것이 x86이라고 생각 하나? 어떤 운영 체제 또는 다른 환경에서로드하려고합니까? 주변기기 (비디오 카드)까지 바이오스는 pci (e) 버스를 열거하고 메모리, DOS 및 리눅스에 이러한 것들을 배치합니다. 다른 도구들은 그 위치가 어디에 표시되는지를 보여줍니다. (그렇지 않으면 말하지 않는 한) 매번 같은 범위를 사용합니다. 보통 3 기가 또는 4 기기에 32 기가비트 머신 용 1 기가비트 윈도우, 64 비트 기가 2 기가있을 수 있습니다. –

답변

2

0x100000 이상이면 안전해야합니다. 그 주소에 커널을로드하고, 대부분의 상위 메모리에 프로그램을 저장할 수 있습니다.

OS 및 프로그램의 경우 0x100000 이상의 공간이 있어야합니다. 그 이전의 일부 섹션은 사용 가능하지만 실제로 필요하지 않으면 해당 부분을 피하는 것이 더 쉬울 수도 있습니다.

Memory Map (x86) - OSDev Wiki은 예상 할 수있는 몇 가지 유용한 정보입니다.

Detecting Memory (x86) - OSDev Wiki은 사용 가능한 메모리를 찾는 방법을 설명합니다.

+0

-1. 1MB 이상의 메모리 매핑 장치가있을 수 있습니다. RAM 레이아웃을 반환하는 BIOS 기능을 실제로 확인해야합니다. –