User:Combuster/FAQ Rebuild
Jump to navigation
Jump to search
This is an attempt at rebuild a faq-style index based off MT ideas. - Combuster 04:45, 23 October 2007 (CDT)
Introduction
Basic Information
- Foreword? <- this is IMPORTANT!
- 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 (See also Interrupt Service Routines!)
- Can I use some language other than C?
- Doing a kernel in C++
- Doing a kernel in Pascal
- Sample inline functions
- Using the Bios or not using the Bios ? ...
- Using inline assembly
Booting and Setup
- Boot Sequence
- Diskless Booting
- The BabyStep tutorial
- GDT For Dummies
- Interrupts For Dummies
- 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
Kernel Models
- Monolithic Kernel
- Microkernel
- Exokernels and their kind (including Nanokernels, Cache Kernels, Virtualizing Kernels, ...)
- Modular Kernel
Task Models
- Monotasking Systems
- Multitasking Systems
- Real-Time Systems
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
- Semaphores, mutexes, spinlocks et al.
- Signals
- Message passing
- Shared memory
- Remote procedure calls
Tools
- GRUB
- LILO
- XOSL - Extended Operating System Loader
- System Commander
- Boot Magic
- Rolling your own Bootloader
- Watcom C/C++
- Visual C/C++
- GCC
- 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
- Calling conventions of GCC for x86 Systems
- OtherCompilers
Assemblers
Linkers
- ld
- ar
Emulators
Working with Disk Images
- ...under Linux
- ...under FreeBSD
- ...under MacOS X
- ...under Windows
Reference Information
Executable File Types
Filesystems
- FAT12 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 ...
- The IA32 architecture family
- What is v8086 mode?
- 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
- How do I know if an IRQ or exception is firing?
- Interrupt service routines
- Interrupts for dummies
- So whats the NMI then?
- Tell me about the APIC
- Tell me about the OPIC
- What is the PIC?
Video
- Accelerated graphic cards
- How do I detect if I have a colour or monochrome monitor?
- How do I draw things in protected mode?
- How do I move the cursor when I print?
- How do I output text to the screen in protected mode?
- VGA Links and Documentation
Storage devices
- ATAPI CDRom
- DMA
- Floppy driver
Plug and Play
- I heard you can do PNP calls with the BIOS in Protected Mode?
- Where can I find programming info on PNP?
PCI, USB and things like this ...
- AGP information
- And what about USB ?
- I heard you can do PCI calls with the BIOS in Protected Mode?
- PCI Section of Pentium VME
- USB Tutorial
- Where can I find programming info on PCI?
Network cards and communicating devices
Non-ix86 Development
Resources
- Books on OS Development
- Assembler language
- 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