This is the "write your own Operating System" OS-FAQ . It is presented as a WikiWikiWeb (See more links about Wiki's at the bottom of this page). You can also come and join the forum to meet other people that share your OS developer enthusiasm.
Please before you edit pages, read the good-practice rules. And if you want to try things, please use the SandBox.
Update Note: The PhpWiki software was updated 2006-06-15. If you find anything that is broken, report it under WikiIssues.
Quick Categories: HardWare -- TroubleShooting -- CollectedKnowledge -- HowTo -- WishList -- Glossary
Introduction (all in one)
Basic Information
- Foreword <- this is IMPORTANT!
- Introduction
- Avoid BeginnerMistakes
- Getting Started
- What order should I make things in?
- What is a kernel--shell--GUI--etc.
Environment
- How kernel, compiler, and C library work together
- ThingsYouCannotDoWithC (See also InterruptServiceRoutines!)
- Can I use some language other than C?
- Doing a kernel in C++
- Doing a kernel in Pascal
- SampleInlineFunctions
- UsingBios or not UsingBios ? ...
- Using InlineAssembly
Booting and Setup
- BootSequence
- DisklessBooting
- the BabyStep tutorial
- GdtForDummies
- InterruptsForDummies
- Getting Keyboard Input
Testing and debuging
- How do I test (and avoid crashing my disk while doing so)
- How do I use a debugger with my OS
- Is it possible to use Unit Testing with my OS
- Help! My kernel crashed! (guru meditation in a nutshell)
Design Considerations (all in one)
Kernel Models
- Monolithic Kernel
- Microkernel
- Exokernels and their kind (including Nanokernels, Cache Kernels, Virtualizing Kernels, ...)
- ModularKernel
Task Models
Memory and Resource Management
- Physical, Virtual, Paging, help?!?
- What Segments are About
- Allocating and Freeing Memory
- File Management
- Algorithms and Tips for Memory Management
Scheduling
- Tasks, Processes and Threads
- Context Switching
- Scheduling Algorithms
- Multiprocessor Scheduling
- Sleeping and Waiting Processes
Process Sychronization / Inter-Process Communication
Tools
Bootloaders
- GRUB
- LILO
- XOSL :: Extended Operating System Loader
- System Commander
- Boot Magic
- RollingYourOwnBootLoader
C/C++ Compilers
- Watcom C/C++
- Visual C/C++
-
- Using GCC Under Unix and Linux
- Using GCC Under Windows
- DJGPP
- Cygwin
- MinGW and Dev-C++
- Building a GCC Cross-Compiler
- Porting GCC to Your OS
- CallingConventions of GCC for x86 Systems
- OtherCompilers
Assemblers
Linkers
ar
Emulators
Working with Disk Images
Reference Information (All in one)
Executable File Types
Filesystems
Hardware
CPU
Memory
IRQ's and Exceptions, PIC, NMI, APIC, OPIC
Video
Storage devices
Plug and Play
PCI, USB and things like this ...
Network cards and communicating devices
Non-ix86 Development
Resources
- Books on OS Dev.
- AssemblerLanguage
- Some small kernels with source
- BareBones - a minimalistic example of how to get from GRUB into C space.
- BareBonesC++ - well, guess. :-)
- Disk Image with preinstalled GRUB
- Chip Numbers, Acronyms and Things
- Links
Forum Information etc.
Who helped with the FAQ
The TODO list
Before you edit pages ...
- QuickGuide to the Wiki, by MartinBaute
- What is a WikiWikiWeb? A description of this application.
- Learn HowToUseWiki and learn about AddingPages.
- Use the SandBox page to experiment with Wiki pages, and find a GoodStyle.
- Please sign your name in RecentVisitors.
- See RecentChanges for the latest page additions and changes.
- RecentEdits also shows minor modifications; mainly for admin use.
- Find out which pages are MostPopular.
- Administer this wiki via PhpWikiAdministration.
- See more PhpWikiDocumentation.