Higher Half Kernel: Difference between revisions
[unchecked revision] | [unchecked revision] |
Content deleted Content added
Added bootloaders section and links to stivale/Limine. |
mNo edit summary |
||
(6 intermediate revisions by 4 users not shown) | |||
Line 4:
It is traditional and generally good to have your kernel mapped in every user process. Linux and many other Unices, for instance, reside at virtual addresses ''0xC0000000 – 0xFFFFFFFF'' of every address space, leaving the range ''0x00000000 – 0xBFFFFFFF'' for user code, data, stacks, libraries, etc. Kernels that have such design are said to be "in the higher half" by opposition to kernels that use lowest virtual addresses for themselves, and leave higher addresses for the applications.
In addition, there is
Advantages of a higher half kernel are:
Line 13:
== Bootloader support ==
To make things easier, some bootloaders natively support higher half kernels, by directly loading and mapping a kernel to the higher half in virtual memory.
* [[BOOTBOOT]] only supports higher half kernels by design. It has example Hello World kernels written in [[C]], [[Pascal]], [[Rust]] and [[Go]]
* The [[Limine]]
== Initialization ==
To setup a higher half kernel, you have to map your kernel to the appropriate virtual address. When using a boot protocol which supports higher half kernels directly, such as [[
How to do this basically depends on '''when''' you'd like your kernel to believe it's in the higher end, and '''when''' you set up paging. Without a boot loader help, you'll need a small trampoline code which runs in lower half, sets up higher half paging and jumps.
== See Also ==
Line 26 ⟶ 27:
=== Articles ===
* [[Higher Half x86 Bare Bones]]
=== Threads ===
|