ELEC/COMP513: Complexity in Modern Systems

Home
Schedule
Project
Resources

Useful Resources

Materials for classroom presentation

The rise of C (and Linux)

Papers to present

Other reading materials

C is bad

Papers to present

Other reading materials

Saving C

Other reading materials (All difficult)

Systems software's struggles

Papers to present

Concurrency

Papers to present

Other reading materials

Tools to find bugs

Papers to present

Other reading materials

Tools to prove correctness

Papers to present

Other reading materials

OSes written with safe languages

Papers to present

Other reading materials

Good things about Rust

Papers to present

Other reading materials

Reading materials

Growing complexity

How social insititutes become more complex

How biological systems become more complex

How artifacts become more complex

Structure of complexity

Humans are stupid

Machines are limited too

Building complex software systems

Reading for your leisure

Rust programming language

Understanding Linux kernel

I have found the following three books about Linux kernels useful. The first one is perhaps most concise and updated. But the other two may have interesting details useufl to your work.

  • Linux kernel development (Amazon.com)
  • Understanding Linux kernel (Amazon.com)
    • Chapter 4 provides a coherent picture of interrupt and exception handling.
  • Professional Linux kernel architecture (Amazon.com)

Kernel programming tips

The Linux kernel is written in GNC C, i.e. it must be compiled by GCC, and assembly.

Command line

See here.

Debugging Tools

GDB is a powerful tool for user-space program debugging. An excellent tutorial is here. When combined with QEMU, it can be used to debug bootloader and kernel as well. See here for an introduction.

KDB and KGDB for kernel debugging.

Tips for Writing Good Code

If you have not written large C code before, here are some tips for you.