Skip to content
8dcc edited this page Sep 15, 2023 · 14 revisions

Welcome to the fs-os wiki!

The main purpose of this wiki is to document how the kernel and OS works, hopefully removing some comments from the code. Everything in the wiki is going to be based on my knowledge and my (little) experience, so expect some wrong or incomplete explanations. The goal is to have an accurate wiki that helps understand how everything works, so feel free to create an issue if you want to suggest a change to this wiki.

You can clone the wiki with:

git clone https://github.com/fs-os/fs-os.wiki.git fs-os-wiki

Important notes

Intel and AMD Software Developer Manuals

Throughout this wiki, there are a lot of references to the Intel Software Developer Manual and some to the AMD64 Architecture Programmer's Manual. The manuals on the official website are regularly updated, so you can read and download the specific version of the volumes I used for the references from the following links (See also, Intel download page):

References to the manuals look something like:

See Vol. 1, Chapter 1.2.3, Vol. 3, Figure 4-5 and AMD Manual, Figure 6-7.

Permanent links

Most of the hyperlinks to the code are permanent links, meaning that the URL will link to any line of any file, even if the file is later moved in the repo, or the file is changed (Because the link indicates the commit when writing). This is necessary so each link remains the same over time, but means that the linked version might not be the latest or most updated. Make sure you check the final code from the main branch.

Branch screenshot

Acronyms

Here is a list of some acronyms used throughout this wiki:

Acronym Meaning
GDT Global Descriptor Table
LDT Local Descriptor Table (unused)
IDT Interrupt Descriptor Table
TSS Task State Segment
FPU Floating-Point Unit
SSE Streaming SIMD Extensions
SIMD Single-Instruction Multiple-Data
MSR Model-Specific Register
TSC Time-Stamp Counter
ISR Interrupt Service Routine (also referred to as "handlers")
IRQ Interrupt Request (i.e. hardware interrupt)
PIC Programmable Interrupt Controller
IO Input/Output
MMU Memory Management Unit
TLB Translation Lookaside Buffer
PD Page Directory (Contains Page Tables)
PT Page Table
VGA Video Graphics Array
RTC Real time Clock

More wiki/code specific ones:

Acronym Meaning
FB FrameBuffer
FBC FrameBuffer Console
KB Keyboard
EOL End Of Line
EOF End Of File
MT MultiTasking