📘
Wiki
  • About me
  • CS
    • Networks
    • django
    • MISC
    • Commandline
    • Databases
    • Mathematics
    • System Administration (sysadmin)
    • Operating Systems
    • CS Electives
    • Algorithms and Data Structures
    • Python
  • Programming Languages
    • Java
  • My setup
    • macOS
      • Terminal
        • youtube-dl
        • zsh shell
        • homebrew
        • iTerm 2
      • Productivity Software
        • Amphetamine
        • Be Focused Pro
        • Pdf Squeezer
        • Cheatsheet
        • 1Password
        • Cold Turkey
        • Lunar Pro
        • Bartender 4
    • Useful Tools
      • Web
  • Collection of unsorted links
  • Cheat sheets
  • Reading List
Powered by GitBook
On this page
  • CS140E: embedded operating systems (Engler, Winter 2020)
  • Operating Systems from 0 to 1
  • CS162 Operating Systems and Systems Programming
  • CMPSCI 377 Operating Systems Introduction

Was this helpful?

  1. CS

Operating Systems

PreviousSystem Administration (sysadmin)NextCS Electives

Last updated 3 years ago

Was this helpful?

This is a lab-based class with no explicit lectures. We will do two two-to-three hour labs each week. You should be able to complete almost all of the lab in one sitting. Assuming it's useful I will do some kind of optional discussion section on Fridays.

By the end of the class you will have built your own simple, clean OS for the widely-used, ARM-based raspberry pi --- including interrupts, threads, virtual memory, and a simple file system. Your OS should serve as a good base for interesting, real, sensor-based / embedded projects.

This book helps you gain the foundational knowledge required to write an operating system from scratch. Hence the title, 0 to 1.

After completing this book, at the very least you will learn:

  • How to write an operating system from scratch by reading hardware datasheets. In the real world, it works like that. You won’t be able to consult Google for a quick answer.

  • A big picture of how each layer of a computer is related to the other, from hardware to software.

  • Write code independently. It’s pointless to copy and paste code. Real learning happens when you solve problems on your own. Some examples are given to kick start, but most problems are yours to conquer. However, the solutions are available online for you to examine after giving it a good try.

  • Linux as a development environment and how to use common tools for low-level programming.

  • x86 assembly in-depth.

  • How a program is structured so that an operating system can run.

  • How to debug a program running directly on hardware with gdb and QEMU.

  • Linking and loading on bare metal x86_64, with pure C. No standard library. No runtime overhead.

CS140E: embedded operating systems (Engler, Winter 2020)
Operating Systems from 0 to 1
CS162 Operating Systems and Systems Programming
CMPSCI 377 Operating Systems Introduction