Resources
Operating System
OS Books
- Operating System Concepts (8th Edition) Silbershatz, Galvin and Gagne
- Operating Systems (7th Edition) William Stallings
- UNIX: The Textbook Syed Mansoor Sarwar,Robert Koretsky and Aqeel Sarwar
- A Practical Guide to Linux Commands, Editors, and Shell Programming Mark G. Sobell
OS Links
- Linux Howto
- Linux Man Pages
- Debian Manuals
- GNU Operating System
- Open Classroom Standford
- Shell Scripting Tutorial
- FreeBSD Documentation
OS Resources
System Programming
SP Books
- LINUX System Programming Robert Love
- Beginning Linux Programming (3rd Edition) Neil Methew and Richard Stones
- The Linux Programming Interface: A Linux and UNIX System Programming Handbook
- Linux Kernel Networking: Implementation and Theory Rami Rosen
SP Links
- Learn ANSI C
- Comptech Doc
- AskUbuntu
- Linux Config
- Debugging with gdb
- Comprehensive Reference Site for Git
- Service Name and Transport Protocol Port Number
- Protocol Numbers – IANA
- POSIX Threads Programming
- Game Programming in C with the Ncurses Library
- PingPong game written in C with NCURSES lib
SP Resources
- Beej’s Guide to Unix IPC
- Beej’s Guide to Network Programming
- Debugging With GDB
- GDB Quick Reference
- Introduction to Git
- Git Cheat Sheet
- Ncurses Library Tutorial for Beginners
- Writing a Pong Game Using Curses
Programming (C/C++) Books
- The C Programming Language (2nd edition) Kernighan, Ritchie awesome
- Advanced Programming in the UNIX Environment (2nd Edition) Stevens, Rago
- Expert C Programming Peter Van der Lindeng
- The C++ Programming Language (3rd Edition) Bjarne Stroustrup
- Understanding and Using C Pointers Richard M Reese
Programming (C/C++) Links
- C for programmers on UNIX Systems
- C11: A New C Standard
- C Frequently Asked Questions
- CProgramming
- Stack Overflow
Programming (C/C++) Resources
Kernel Development
Kernel Development Books
- The Linux Kernel Module Programming Guide Peter Jay Salzman, Michael Burian, Ori Pomerantz
- Linux Kernel in a Nutshell Greg Kroah-Hartman
- Linux Kernel Development
Kernel Development Links
- Building the Linux kernel
- Linux Kernel Archives at kernel.org
- Linux Kernel HOWTO for configuring and compiling the kernel
- Tutorial on Compiling Linux Kernel
- Kernel Rebuild Guide for configuring and compiling the kernel
- Debugging the Linux kernel
- Understanding the Linux kernel
- More about Linux
- Linux News
Kernel Development Resources
Embedded System
Computer Architecture
Computer Architecture Books
Computer Architecture Links
Digital Systems / Digital Logic Design
Digital System Books
Digital System Links
x86 Emulation
- QEMU – A fast and popular x86 platform and CPU
x86 Assembly Language
- PC Assembly Language,
Paul A. Carter, November 2003.
(MIT copy) - Intel 80386 Programmer’s Reference Manual, 1987
(HTML).
(MIT copy – PDF)
(MIT copy – HTML)Much shorter than the full current Intel Architecture manuals below,
but describes all processor features used in 6.828. - IA-32 Intel Architecture Software Developer’s Manuals,
Intel, 2007. Mit copies: - Multiprocessor references:
- AMD64 Architecture Programmer’s Manual.
Covers both the “classic” 32-bit x86 architecture
and the new 64-bit extensions
supported by the latest AMD and Intel processors. - Writing inline assembly language with GCC:
- Brennan’s Guide to Inline Assembly,
Brennan “Mr. Wacko” Underwood - Inline assembly for x86 in Linux,
Bharata B. Rao, IBM - GCC-Inline-Assembly-HOWTO,
Sandeep.S
- Brennan’s Guide to Inline Assembly,
- Loading x86 executables in the ELF format:
- Tool Interface Standard (TIS)
Executable and Linking Format (ELF).
The definitive standard for the ELF format.
- Tool Interface Standard (TIS)
- Intel 80386 Programmer’s Reference Manual, 1987
PC Hardware Programming
- General PC architecture information
- Phil Storrs PC Hardware book,
Phil Storrs, December 1998. - Bochs technical hardware specifications directory.
- Phil Storrs PC Hardware book,
- General BIOS and PC bootstrap
- BIOS Services and Software Interrupts,
Roger Morgan, 1997. - “El Torito” Bootable CD-ROM Format Specification,
Phoenix/IBM, January 1995.
- BIOS Services and Software Interrupts,
- VGA display – kern/console.c
- VESA BIOS Extension (VBE) 3.0,
Video Electronics Standards Association,
September 1998.
(MIT copy) - VGADOC, Finn Thøgersen, 2000.
(MIT copy – text)
(MIT copy – ZIP) - Free VGA Project, J.D. Neal, 1998.
- VESA BIOS Extension (VBE) 3.0,
- Keyboard and Mouse – kern/console.c
- 8253/8254 Programmable Interval Timer (PIT)
– inc/timerreg.h- 82C54 CHMOS Programmable Interval Timer,
Intel, October 1994.
(MIT copy) - Data Solutions 8253/8254 Tutorial,
Data Solutions.
- 82C54 CHMOS Programmable Interval Timer,
- 8259/8259A Programmable Interrupt Controller (PIC)
– kern/picirq.*- 8259A Programmable Interrupt Controller,
Intel, December 1988.
- 8259A Programmable Interrupt Controller,
- Real-Time Clock (RTC)
– kern/kclock.*- Phil Storrs PC Hardware book,
Phil Storrs, December 1998. In particular: - CMOS Memory Map, Padgett Peterson, May 1996.
- M48T86 PC Real-Time Clock,
ST Microelectronics, April 2004.
(MIT copy)
- Phil Storrs PC Hardware book,
- 16550 UART Serial Port – kern/console.c
- PC16550D Universal Asynchronous Receiver/Transmitter
with FIFOs,
National Semiconductor, 1995. - Technical Data on 16550,
Byterunner Technologies. - Interfacing the Serial / RS232 Port,
Craig Peacock, August 2001.
- PC16550D Universal Asynchronous Receiver/Transmitter
- IEEE 1284 Parallel Port – kern/console.c
- Parallel Port Central, Jan Axelson.
- Parallel Port Background, Warp Nine Engineering.
- IEEE 1284 – Updating the PC Parallel Port,
National Instruments. - Interfacing the Standard Parallel Port,
Craig Peacock, August 2001.
- IDE hard drive controller – fs/ide.c
- AT Attachment with Packet Interface – 6 (working draft),
ANSI, December 2001. - Programming Interface for Bus Master IDE Controller,
Brad Hosler, Intel, May 1994. - The Guide to ATA/ATAPI documentation,
Constantine Sapuntzakis, January 2002.
- AT Attachment with Packet Interface – 6 (working draft),
- Sound cards (not supported in 6.828 kernel, but you’re welcome to do it as a challenge problem!)
- Sound Blaster Series Hardware Programming Guide,
Creative Technology, 1996. - 8237A High Performance Programmable DMA Controller,
Intel, September 1993. - Sound Blaster 16 Programming Document,
Ethan Brodsky, June 1997. - Sound Programming,
Inverse Reality.
- Sound Blaster Series Hardware Programming Guide,
- E100 Network Interface Card
Android References
- Android source code cross-reference.
It’s very useful for quickly finding the right place in the source code where a function is defined or used. It cross-references both the user-space code and the kernel code, so remember to navigate to the right version of the kernel before search. - Instructions for setting up your Android emulator environment for the class.
- Downloading the Android SDK. To run the emulator, you do not need the entire SDK. Just download the “SDK Tools Only” distribution for your platform and then install the appropriate Android platform version and device image using the included
android
tool. - How to build an Android kernel. From the Android Open Source Project (AOSP).
- Android Emulator command line reference.