Project Gutenberg Free electronic books
The Online Books Page University of Pennsylvania Library



UNIX®-like Operating Systems


C Programming Links

Programming habits and style guidelines

Notes on Programming in C by Rob Pike
The Ten Commandments for C Programmers by Henry Spencer
How To Steal Code or Inventing The Wheel Only Once by Henry Spencer
Indian Hill C Style and Coding Standards by Henry Spencer et al
Can't Happen or /* NOTREACHED */ or Real Programs Dump Core


comp.lang.c Frequently Asked Questions
comp.lang.c IAC (Infrequently Asked Questions)

Linux Links

Linux distributions

Red Hat

Linux kernel Links


Articles/Documentation Listings

Linux kernel articles published in LWN
O'Reilly Network: Linux DevCenter
IBM Linux Technology Center: Publications
IBM developerWorks: Linux - Articles, columns & tips
Linux Bibliography
Linux Magazine kernel articles
Linux white papers
Loads of Linux Links: Kernel
Documentation for People Interested in Understanding the Linux Kernel
Linux kernel links
Chris Gould's Linux Kernel Architecture Links
Alessandro's Articles on Linux kernel internals


The Linux Kernel API
Linux Online - KernelAnalysis-HOWTO
The Linux Programmer's Guide
Unreliable Guide To Hacking The Linux Kernel
Linux Kernel 2.4 Internals
The Linux Kernel


Kernel debugging with Kprobes
Gaining insight into the Linux? kernel with Kprobes
Linux Kernel State Tracer
Linux Kernel Crash Dumps

Device Drivers

Softirqs, Tasklets, Bottom Halves, Task Queues, Work Queues and Timers
Linux Frame Buffer Device Subsystem (paper and slides)
Mouse Drivers
Linux completion events
Elevator algorithm
How to NOT write kernel driver
Device Driver Basics
Linux character device drivers
Raw Disk I/O
Writing Linux Mouse Drivers
Virtual Network Interfaces
The Linux network device driver framework
Dynamic Kernels: Modularized Device Drivers
Dynamic Kernels: Discovery
The Devil's in the Details
Network Buffers and Memory Management
An introduction to block device drivers
The Network Block Device
Writing Device Drivers Under Linux
Write a Linux Hardware Device Driver
Writing Linux Device Drivers
Block Device Drivers
Linux Kernel Hacker's Guide - Device Drivers
Interrupts vs. Polling
RAID1, RAID5 and compressed RAID5 for Linux
Linux Device Drivers, 2nd Edition: Online Book
LWN: Porting device drivers to the 2.6 kernel

File Systems

Journal File Systems in Linux
Journaling the Linux ext2fs
Design and Implementation of the Second Extended Filesystem
Linux Kernel Procfs Guide
Creating Linux virtual filesystems
EXT3, Journaling Filesystem
Porting XFS to Linux
Porting the SGI XFS file system to Linux
Scalability in the XFS File System
Jouraled File System (JFS) for Linux
Linux VFS slides
Common threads: Advanced filesystem implementor's guide, Part 1
Common threads: Advanced filesystem implementor's guide, Part 11
The Linux Virtual File-system Layer
Exploring /proc
Journaling Filesystems
Journal File Systems LG #55
Anatomy of a Read and Write Call
Exploring the ext3 Filesystem - Introduction to the ext3 Filesystem
OSRC: EXT/2 Filesystem:
The extended-2 filesystem overview
Second Extended File System
Interview with JFS, reiserfs, and XFS
Filesystems HOWTO
A tour of the Linux VFS


Wikipedia: Linux kernel
Linux Cross-Reference
Management & Virtual decentralized networks: The Linux project
The Case for Linux in Universities
The Age of 2.4 (includes raw I/O)
Rick's Resources for Using, Administrating, and Programming Linux
How The Kernel Development Process Works
Linux Kernel Hackers' planet


Its history and current distributions: Linux vs. other platforms
Counting Source Lines of Code (SLOC)
Linux Not Just For Geeks Anymore (Linux use statistics)
History of Linux
Linux HeadQuarters (kernel info)
The Linux Kernel Archives

Interprocess Communication

tmpfs: A Virtual Memory File System (shared memory)
The Linux Kernel: Signals & Interrupts (PDF)
The Pipes and Socks-page
Tmpfs file system documentation (used for shared memory)
Using the virtual memory (VM) filesystem and bind mounts
BSD Sockets: A Quick And Dirty Primer
An Advanced 4.4BSD Interprocess Communication Tutorial
Introductory 4.4BSD IPC / PSD:20
A Look at the Signal API
Pipes and FIFOs
The Linux Signals Handling Module
Linux Kernel 2.4 Internals: IPC mechanisms
The Linux Programmer's Guide
The Linux Kernel: IPC

Kernel Architecture Overviews

Kernel overview slides
Conceptual Architecture of the Linux Kernel
Concrete Architecture of the Linux Kernel
Making System Calls from Kernel Space
Linux Internals & Programming lecture notes (GOOD!)

Kernel Modules

Linux Loadable Kernel Module HOWTO


GNU licenses
GPL paper
OSI Approved Licenses

Memory Management

Linux Memory Management Subsystem Main Page
A Comparison of the MM sub-systems in FreeBSD and Linux
Paul Wilson's VM Overview
Outline of the Linux Memory Management System
Compressed Caching: Linux 2.4 Virtual Memory Overview
MMDOC. Linux Memory Management Documentation.
Design for the Linux zone based memory allocator
Linux Memory Management (
Memory Management in Linux
Linux 2.4 VM Project
Memory Management Lecture
Secrets Inside the Linux Kernel Revealed
Linux Kernel Documentation (MM and NW)
Basics of 2.4.20 VM
Page replacement in Linux 2.4 memory management
Memory Management in Linux: Desktop Companion to the Linux Source Code
Linux Device Drivers, 2nd Edition: Chapter 7: Getting Hold of Memory
Linux Device Drivers, 2nd Edition: Chapter 13: mmap and DMA


Kernel networking overview (png image)
Linux - Advanced Networking Overview
The journey of a packet through the Linux 2.4 network stack
skb - Linux network buffers
The netfilter framework in Linux 2.4
Analysis and Evaluation of the TCP/IP Protocol Stack of Linux
Network Buffers and Memory Management
The Linux Socket Filter: Sniffing Bytes over the Network
Inside the Linux Packet Filter
Inside the Linux Packet Filter, Part II
Networking overview diagram (png image)
Linux netfilter Hacking HOWTO
Linux Device Drivers, 2nd Edition: Chapter 14: Network Drivers

Linux Journal
LinuxDailyNews Network
Kernel Traffic
IBM Linux Technology Center
IBM developerWorks: Linux


2002 Linux Symposium Proceedings
2003 Linux Symposium Proceedings
2004 Linux Symposium Proceedings
2004 Linux Symposium Audio Proceedings
2005 Linux Symposium Proceedings, Volume 1
2005 Linux Symposium Proceedings, Volume 2

Process Management

Node affine NUMA scheduler for Linux
Linux Process Scheduling
Scheduling in UNIX and Linux
The Linux Process Model
Process Scheduling In Linux
Linux Low-Latency Patches and Alternative Schedulers
The Ingo Scheduler
Design of a fully preemptable Linux Kernel
Understanding the Linux Kernel: Chapter 10: Process Scheduling
Linux Scheduler Page


Design and Implementation of Embedded Linux System for Networking ...
Linux Clustering Software
Linux-HA Project Web Site
Linux Scalability Effort Homepage
BKL Removal Patches for 2.4.17
SGI - Scalability Project
IBM Linux Technology Center : News Archive
Wireless : Linux system development on an embedded device
IBM Linux presentations (includes security, SMP, clustering...)
IBM whitepaper - Is Linux ready for the enterprise?
Embedded Linux Consortium - championing the advancement of embedded Linux
Embedded Linux Works- Articles.
Symmetrical Multiprocessing with Linux
Clustering HOWTO
InformationWeek > Linux > Linux Gains Clustering Edge > August 2, 2002
Scalability and Symmetric Multiprocessing
Linux 2.4
The state of embedded Linux
Developer interest in embedded Linux skyrockets
Articles > uClinux: World's most popular embedded Linux distro?
Embedded Linux distribution info
Real-Time and Linux, Part 2: the Preemptible Kernel
A Taxonomy of Resources for Embedded Linux Developers
Lineo/Montavista interviews
Real Time and Linux, Part 3: Sub-Kernels and Benchmarks
The Embedded Linux Overview Quick Reference Guide
Linux's future in the embedded systems market
The embedded Linux portal
A High-Availability Cluster for Linux
Embedded Linux Journal Table of Contents
Enterprise Linux - Linux Scalability


Bastille Linux
Jay Beale's Linux/UNIX Security Articles
Scanning for Rootkits
Linux Kernel Hardening
Secrets Inside the Linux Kernel Revealed
Linux Security Documentation
LinuxSecurity - Resources
Phrack magazine
Linux Security HOWTO


Unreliable Guide To Locking
Mutual exclusion with seqlocks
Linux kernel documentation - spinlocks
Embedded Linux links
Kernel Locking Techniques

BSD Links

DragonFly BSD
BSD vs Linux
What every Linux user needs to know about BSD
The FreeBSD Almanac
NetBSD kernel documentation overview
The Design and Implementation of the 4.4BSD Operating System
Mach Kernel Manuals

Solaris Links

Solaris OE White Papers
SUN - Solaris Operating System
BigAdmin System Administration Portal
SysAdmin magazine - Solaris

Mac OS Links

Mac OS X Technical Resources (
Mac OS X System Architecture (
Kernel Architecture
Virtual Memory on Mac OS X
Mac OS X performance overview
Mac OS X System Overview (book) (
OopsWiki: MacOSTio/DeveloperDocs
Flirting With Mac OS X
Under the Hood of MacOS X
Mac OS white papers
MacInstruct: Introduction to Mac OS X
Mac OS X Basics -- System Architecture: Darwin
Mac OS X resources
The Challenges of Integrating the Unix and Mac OS Environments


Writing references

The Elements of Style, William Strunk, Jr.
The Chicago manual of style
The King's English, H.W. Fowler
The Guardian stylebook

Technical writing

Useful Things to Know About Ph.D. Thesis Research, H.T. Kung at Harvard

Resources for Writers and Writing Instructors, Jack Lynch
Writing Guidelines for Engineering and Science Students
Technical Writing, Ronald B. Standler
How to Organize your Thesis, John W. Chinneck
How to write a grant proposal, Simon Peyton Jones and Alan Bundy
How to have your abstract rejected, Mary-Claire van Leunen and Richard Lipton
Suggestions for writting abstracts
Writing a Math Phase Two Paper, Steven L. Kleiman and Glenn P. Tesler
Three sins of authors in computer science and maths, Jonathan Shewchuk
A guide to refereeing computer science papers, Ian Parberry
Papers: Expectations, guidelines, advice, and grading, Jeannine DeLombard and Dan White
Guide to Grammar and Style, Jack Lynch


Speaker's guide for theoretical computer science, Ian Parberry
How to give a good research talk, Simon Peyton Jones, John Launchbury, and John Hughes
Non-Technical Talks, David Patterson

Graduate studies - Research

Survival manual for graduate students, Dianne O'Leary
How to Succeed in Graduate School, Marie desJardins
From Contract Drafting to Software Specification: Linguistic Sources of Ambiguity, A Handbook, Daniel M. Berry
Guidelines on Research Practice in Computer Science, Justin Zobel
The ethical practice of research, Justin Zobel
Ten Lessons I wish I Had Been Taught, Gian-Carlo Rota
Advice on Research and Writing, Mark Leone
Networking on the Network: A Guide to Professional Skills for PhD Students, Phil Agre

Richard Hamming -- You and Your Research

MIT specific ;-)

How to do Research At the MIT AI Lab, David Chapman
Burnout Prevention and Recovery

Linux guys

Robert Love
Dave Jones
David Miller
James Morris
Nat Friedman
Eric Raymond

My favorite YouTubes

Final lecture of a CMU professor
Water painting

Musical roads

Mike's flying bike

419 e-mail scams