Fix spelling errors in first posts (yikes).

This commit is contained in:
Drew Galbraith 2024-01-23 23:14:03 -08:00
parent adeb3cf394
commit 80e734855c
2 changed files with 18 additions and 17 deletions

View file

@ -111,13 +111,14 @@ On top of the things mentioned above, we use the limine protocol to:
Following boot we immediately initialize the global descriptor table (GDT) and
interrupt descriptor table (IDT). The **GDT** is mostly irrelevant for x86-64,
however it was interesting trying to get it to work with the sysret function
which expects two copies of the user-space segment descriptors to allow returing
to 32bit code from a 64 bit OS. Right now the system doesn't support 32 bit code
(and likely never will) so we just duplicate the 64 bit code segment.
which expects two copies of the user-space segment descriptors to allow
returning to 32bit code from a 64 bit OS. Right now the system doesn't support
32 bit code (and likely never will) so we just duplicate the 64 bit code
segment.
The **IDT** is fairly straightforward and barebones for now. I slowly add more
debugging information to faults as I run into them and it is useful. One of the
biggest improvements was setting up a seperate kernel stack for Page Faults and
biggest improvements was setting up a separate kernel stack for Page Faults and
General Protection Faults. That way if I broke memory related to the current
stack frame I get useful debugging information rather than an immediate triple
fault. I also recently added some very sloppy stack unwind code so I can more
@ -153,9 +154,9 @@ earlier than they need to be it is obvious because things break.
For **virtual memory management** I keep the higher half (kernel) mappings
identical in each address space. Most of the kernel mappings are already
availble from the bootloader but some are added for heaps and additional stacks.
available from the bootloader but some are added for heaps and additional stacks.
For user memory we maintain a tree of the mapped in objects to ensure that none
intersect. Right now the tree is innefficient because it doesn't self balance
intersect. Right now the tree is inefficient because it doesn't self balance
and most objects are inserted in ascending order (i.e. it is essentially a
linked list).
@ -213,7 +214,7 @@ The kernel provides APIs to:
* Allocate memory and map it into an address space.
* Communicate with other processes using Endpoints, Ports, and Channels.
* Register IRQ handlers.
* Manage Capabilites.
* Manage Capabilities.
* Print debug information to the VM output.
### IPC