Back to CS342 Spring 2023
Books
Operating System Concepts
, Silberschatz et al., John Wiley and Sons, 10th edition, 2021.
Operating Systems: Principles and Practice
, Thomas Anderson and Michael Dahlin, 2nd edition, Recursive Books, 2014.
The Design and Implementation of the 4.4BSD Operating System
, by Marshall Kirk McKusick et al., Addison-Wesley, 2nd edition, 1996.
Operating Systems, Three Easy Pieces
, Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, 2014.(free and online)
Tools and Operating Systems
MIT - Missing Semester of CS Education: Shell, Git, Editors - Vim, Debugging, etc.
OS Development Wiki
xv6 OS for riscv architecture: A simple teachig operating system
xv6 OS for x86 architecture
The GNU Operating System
C Programming and Project Development
C Tutorial:
Basic Introduction to C/Unix Programming - Tutorial
C Book:
The C Programming Language
, by Brian W. Kernighan and D. Ritchie, Prentice Hall PTR, 1998. A must have book.
C Tutorial:
A Tutorial on Pointers and Arrays in C
C Tutorial:
UC Berkey - C Tutorial
The Practice of Programming, by Brian Kernighan and Rob Pike, Addison Wesley, 1999.
Coding Style:
GNU Coding Standards
Coding Style:
Recommended C Style and Coding Standards
Coding Style:
Linux Coding Style
Make:
Managing Projects with GNU Make
C Library:
The GNU C Library
Version Control:
A Git Book
Version Control:
Git Reference Manual
Debugging:
Debugging with GDB - The GNU Source-Level Debugger
Debugging:
GDB Tutorial
Debugging:
Debugging in Unix - GDB Tutorial
Debugging:
GDB Tutorial - Slides
Debugging
GDB Quick Reference
.
CPU Architecture / Emulation / Assembly Language
i386 Reference Programmer's Manual
Intel Basic Architecture
Intel Software Developer Manuals
Intel System Programmer's Guide - Part 1
ELF Executable and Linkable Format
ELF Wikipedia Page
QEMU (Quick Emulator)
QEMU User Manual
Brennan's Guide to Inline Assembly - x86
GCC-Inline-Assembly-HOWTO
GNU Assembler (gas) Manual
Linux and Linux Kernel
Ubuntu 22.004.3 LTS
Linux Kernel - an online book
.
Linux Kernel Cross Reference
Linux Source Tour
Building a Linux Kernel
Linux Kernel Archives
Understanding the Linux Kernel
, Daniel Pierre Bovet, Marco Cesati, 3rd edition, O'Reilly, 2006.
Linux Kernel in a Nutshell
.
Linux Kernel Documentation
.
Linux Kernel Teaching
Building a Linux Kernel
Ubuntu Community - Kernel Compile
Linux Module and Driver Development
The Linux Kernel Module Programming Guide
Linux Device Drivers
Writing a Linux Kernel Module
System Calls
Linux System Call Reference
strace utility
System calls - wikipedia
Linux Quick Reference
Processes and IPC
Unix Network Programming, Volume 1, W. Richard Stevens, Networking APIs: Sockets and XTI, Second Edition, Prentice Hall PTR, 1998.
Unix Network Programming, Volume 2, W. Richard Stevens, Interprocess Communications, Second Edition, Prentice Hall PTR, 1998.
Linux message queue overview
POSIX message queues
Introduction to programming with Sun/ONC RPC
Rpcgen Programming Guide
Threads / Multithreaded Programming
POSIX Threads Programming
POSIX Thread Libraries
Programming with POSIX threads
Pthreads Programming, Buttler, O'Reilly, 1996
.
Multithreaded programming with Pthreads
, Lewis and Berg, Prentice-Hall, 1997. Inc. Upper Saddle River, NJ, USA.
Scheduling
Linux Scheduler - IBM
Linux CFS Scheduler
DWRR
Synchronization
The Little Book of Semaphores
Oracle Condition Variables Guide
Semaphores
Memory Management
Understanding the Linux Virtual Memory Manager
File Systems
The Design and Implementation of a Log-Structured File System
, Rosenblum et al, ACM Transactions on Computer Systems, 1992.
An Implementation of a Log-Structured File System for Unix
, Seltzer et al., USENIX Winter Conference, 1993.
Design and Implementation of Second Extended File System
Second Extended File System (ext2) of Linux
FAT32 Spec webpage.
FAT File Systems
Understanding FAT32 Filesystem
Design of FAT File Systems
FUSE - File System in User Space
Minix File System
Input/Output
Linux Device Drivers - 3rd Edition
Networking
Understanding Linux Network Internals, By Christian Benvenuti, O'Reilly, 2005.
Linux Networking Subsystem, A. Jain. 2002.
A Map of Networking Code in Linux, 2004.