Old Blog: chasingpointers.com
On the love of Operating Systems
Only using original primary sources as a reference, here is a set of notes I've written on general-purpose OS scheduling and Symmetric Multiprocessing. The motivation was to know the why of things by tracking the evolution path of relevant ideas beginning from MIT's time-sharing efforts of the 60s. Another motivation was aiding me in building an SMP scheduling framework for a small project of mine.
As a summary, above notes discuss the origin of multi-level feedback queues (beginning form the 1962's CTSS system, and moving to the Unix jungle of SVR2/3, Solaris, and the BSDs), spinlocks (from VAX/VMS), general-purpose kernel preemption, per-CPU runqueues and data areas (VAX/VMS, DEC OSF/1, and WinNT), and thread scheduling soft and hard affinity (by the innovative DEC engineers again). All the papers discussed by these notes are cached here for convenience. If you're into such stuff, the Digital Technical Journal can be quite addictive.
Another set of notes I've written, following the same historical spirit, also exists for general-purpose File Systems. They start from the pure-theoretical models of early MIT file systems, up to Unix SVR2 file system design, up to BSDs Fast Filesystem, Linux Ext2/3, and the Windows FAT and NTFS.
Low-level debugging sessions
Long-mode Kernels and the AMD64 ABI 'Red Zone', with further details.
Linker-script writers beware: COMMON Symbols; further details here.
Debugging periodic timers using statistical data.
On implicitly clobbered registers.
On debugging -O3 triggered problems
Miscellaneous
A quick 2-minute overview of paging, with a mini historical context.
User pages in the very nice OSdev and Agorithmist wikis
The original Intel's 80386 processor manual: 80386_reference.tgz
Decade-old notes on core Linux kernel code: Linux Kernel Notes