Expanded Main Page
(Redirected from Main Page)
		
		
		
		Jump to navigation
		Jump to search
		Display: Short view - Expanded view
Introduction
Basic Information
- Introduction
 - Required Knowledge
 - Beginner Mistakes
 - Getting Started
 - How To Ask Questions
 - GCC Cross-Compiler
 - What Order Should I Make Things In?
 - Licensing
 - Tutorials
 - Frequently Asked Questions
 
Environment
- How kernel, compiler, and C library work together
 - Using other Languages than C
 - UEFI and legacy BIOS (PC)
 - Inline Assembly (including examples)
 - Object Files and relocation
 
Bare Bones / Baby Steps
- Bare Bones (C and C++)
 - Ada Bare Bones
 - C Sharp Bare Bones
 - D Bare Bones
 - FreeBasic Bare Bones
 - Go Bare Bones
 - Pascal Bare Bones
 - Limine Bare Bones
 - The BabyStep Tutorial
 
Example OS Organization
Booting and Setup
- Boot Sequence
 - Diskless Booting
 - The Global Descriptor Table and a GDT Tutorial
 - Interrupts
 - Getting Keyboard Input
 
Testing and Debugging
Development
Compiler Development
Design Considerations
Kernel Models
- Monolithic Kernel
 - Microkernel
 - Exokernel and related models
 - Modular Kernel
 
Task Models
Memory and Resource Management
- Memory management - Overview and Introduction
 - Segmentation
 - Paging
 - Memory Allocation
 - Page Frame Allocation
 - Memory Management Unit, or in-depth description of recursive mappings
 - File Management
 - File Systems
 
System Calls
Scheduling
- Processes and Threads
 - Context Switching
 - Scheduling Algorithms
 - Multiprocessor Scheduling
 - Blocking Process - processes sleeping and waiting
 
Process Sychronization
- Synchronization Primitives - Semaphores, mutexes, spinlocks et al.
 - Signals
 
Inter-Process Communication
Resources
- Books on OS Development
 - Academic Papers on theory and design
 - Assembly
 - Disk Images with preinstalled GRUB
 - Deprecated, yet relevant, bits of specifications
 - Chip Numbers, Acronyms and Things
 - Resources
 
Tools
Bootloaders
Compilers
Assemblers
- GAS (GNU as, part of binutils)
 - FASM
 - NASM
 - YASM
 - On the difference between AT&T and Intel Opcode syntax
 
Linkers
- LD (GNU ld, part of binutils)
 - Link Archiver (GNU ar, part of binutils)
 - Mold (Modern Linker)
 
Emulators
Working with Disk Images
- Disk Images in general, and ...
- Loopback Device for Linux, *BSD et al.
 - hdiutil for MacOS X
 - Windows Tools
 
 
Hardware
- The Hardware Category and linked resources
 
CPU 
General
- Register Machine Model of Computation
 - Memory Architecture
 - Instruction Set Architecture
 - Execution Architecture
 
X86 
Modes
Other
- IA32 Architecture Family
 - Model Specific Registers (MSRs)
 - Detecting CPU Speed
 - Inline Assembly/Examples
 - CPU Bugs
 - SSE
 - Where Can I Find Information About Ports
 - CPU Registers (x86, x86-64)
 
ESA/390
- Kernel Barebones
 - Program Status Word
 - Processing Storage Area Memory Mapping
 - z/OS DataSet FileSystem
 - Batch I/O Channel SubSystem
 
ARM
Memory
- Detecting Memory (x86)
 - A20 Line or "Why can't I access all my memory?"
 
IRQs and Exceptions, PIC, NMI, APIC, OPIC
- I Can't Get Interrupts Working
 - The Interrupt Descriptor Table and IDT problems
 - Interrupt Service Routines (ISRs)
 - Interrupts
 - Non Maskable Interrupt (NMI)
 - APIC
 - PIC
 - OPIC
 
Clocks, Timers and Counters
- HPET
 - APIC timer (per-processor timer)
 - Programmable Interval Timer (PIT)
 - The CMOS clock, and its RTC chip
 - Detecting CPU Speed
 
Video
- Accelerated Graphic Cards
 - Detecting Colour and Monochrome Monitors?
 - Printing To Screen in Protected Mode
 - Text Mode Cursor
 - Drawing In a Linear Framebuffer
 - Kernel Stdio Theory
 - VGA Resources and VGA Hardware documentation
 - Drawing characters in graphics mode using VGA Fonts
 - Video Signals And Timing
 - How to program Bochs' and QEMU's BGA graphics device
 
Audio
Storage devices
Input/Output
- PS/2 Keyboard
 - Mouse
 - Serial Ports (primarily RS-232)
 
Plug and Play
PCI, USB and things like this ...
UEFI
- UEFI
 - Systems with broken UEFI implementations
 
ACPI
Network cards and communicating devices
- Ethernet and other wired networking:
 - Wireless Networking:
- 802.11 (WiFi standard)
 
 
Non-x86 Development
Reference Information
Executable File Types
Filesystems