Professional Documents
Culture Documents
Basic Information
Introduction Avoid beginner mistakes 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 Things you can not do with C Can I use some language other than C? Doing a kernel in C++ Doing a kernel in Pascal Doing a kernel in Basic Sample inline functions Using the Bios or not using the Bios ? ... Using inline assembly Understanding and relocating object files
Boot Sequence Diskless booting The BabyStep tutorial GDT For Dummies Interrupts For Dummies Getting Keyboard Input
Design Considerations
Kernel Models
Monolithic Kernel Microkernel Exokernels and their kind Modular Kernel
Task Models
Monotasking Systems Multitasking Systems Real-Time Systems
Scheduling
Tasks, processes and threads Context switching Scheduling algorithms Multiprocessor scheduling Sleeping and waiting processes
Process Sychronization
Semaphores, mutexes, spinlocks et al. Signals
Inter-Process Communication
Message passing Shared memory Remote procedure calls
Resources
Books on OS Development Assembler language Some small kernels with source Fasm-TCC BareBones
C Bare Bones - a minimalistic example of how to get from GRUB into C space. C++ Bare Bones
Disk Image with preinstalled GRUB Chip Numbers, Acronyms and Things Links
Filesystems
FAT Details Ext2 Details SFS Details AmigaFFS Details
Hardware
CPU
AMD K6 writeback optimisations How can I tell CPU speed ? Model-specific register Sample inline functions Tell me about x86 64 bits CPU ... Processors of the IA32 architecture family What is v8086 mode? Where can I find information about ports? CPU Bugs
Memory
How do I determine the amount of RAM? Why cant I access all my memory?
IRQ's and Exceptions, PIC, NMI, APIC, OPIC Can I remap the PIC? Getting Keyboard Input Help!? I can't get interrupts working Interrupt service routines Interrupts for dummies So whats the NMI then?
Video
Accelerated graphic cards How do I detect if I have a colour or monochrome monitor? How do I draw things in protected mode? About standard I/O in your kernel How do I move the cursor when I print? How do I output text to the screen in protected mode? VGA Links and Documentation Video signals and timing How do I program Bochs and QEMU's graphics device
Audio
Sound PC Speaker Sound Blaster 16
Storage devices
Harddisks ATAPI CDRom
Non-ix86 Development
PowerPC MIPS Sparc
Tools Bootloaders
GRUB LILO XOSL - Extended Operating System Loader System Commander Boot Magic Rolling your own Bootloader and the necessary theory
Compilers
o o o o o GCC Cygwin MinGW and Dev-C++ DJGPP Building a GCC Cross-Compiler Porting GCC to Your OS
Calling conventions of GCC for x86 Systems Watcom C/C++ Visual C/C++ Other compilers
Assemblers
GNU as FASM NASM YASM
Linkers
GNU ld ar
Emulators
Bochs (i386) PC emulator QEMU Microsoft Virtual PC