Мой проект состоит в том, чтобы выполнить мою собственную JVM на небольшом кусочке ядра, которое я пытаюсь кодировать на C и сборке. Итак, я все еще изучаю, как ядра выполняют свою основную работу.
Теперь, следуя некоторым руководствам, я настроил пейджинг
.map
mov eax , p3_t
or eax , 0b11
mov dword [p4_t] , eax
mov eax , p2_t
or eax , 0b11
mov dword [p3_t] , eax
mov ecx , 0
.map_pd:
mov eax, 0x200000
mul ecx
or eax , 0b10000011
mov [p2_t+ecx*8] , eax
inc ecx
cmp ecx, 512
jne .map_pd
mov eax, p4_t
mov cr3, eax
mov eax, cr4
or eax, 1 << 5
mov cr4, eax
mov ecx, 0xC0000080
rdmsr
or eax, 1 << 8
wrmsr
mov eax, cr0
or eax, 1 << 31
or eax , 1 << 16
mov cr0, eax
, который должен настроить и включить пейджинг. К сожалению, эти руководства дают мне мало информации.
Теперь, как мне управлять подкачкой и виртуальными адресами в ядре C? Не могли бы вы, ребята, дать мне несколько других руководств, которые говорят о подкачке?