User:Combuster/FAQ Rebuild

From OSDev Wiki
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

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

Bootloaders

  • GRUB
  • LILO
  • XOSL - Extended Operating System Loader
  • System Commander
  • Boot Magic
  • Rolling your own Bootloader

Compilers

  • 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

  • VMWare PC Emulator
  • Bochs (i386) PC emulator
  • SimICS
  • QEMU
  • Microsoft Virtual PC

Working with Disk Images

  • ...under Linux
  • ...under FreeBSD
  • ...under MacOS X
  • ...under Windows

Reference Information

Executable File Types

Filesystems

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

Forum Information etc.