Main

References

All this material (and wording) is from Professor Dahlin's honors' operating system course at the University of Texas at Austin or Professor Kaashoek's operating systems engineering course at MIT. And is used with their permission.

General OS info

General Tools

I assume that everyone in the class has reasonably strong programming skills and that you are comfortable using the basic tools of the trade (debuggers, makefiles, etc.) Here are some references if you need to brush up on any of these basic skills.

  • make You should know how to use make!
  • Version control (keeping track of old versions of software before you added the last bug) is essential for large software projects. CVS and SVN are sophisticated tools for allowing concurrent editing in a multi-programmer project.
  • etags In this project, you will need to navigate a number of files, some of which were written by someone other than you. Etags (for emacs or ctags for vi) makes it easy to jump to where a function, type, or global variable is defined and will simplify your life.
  • GDB and GDB reference card: If you currently debug with printf's, spend a couple hours learning GDB. It's not hard, and I promise you will save time in the long (or not-so-long) run. DDD is a graphical front end to GDB: http://www.gnu.org/software/ddd.
  • Find an editor that makes it easy to open up multiple files and switch among them. Emacs, for example.

Background

  • The Ethical Hacker website has a good introduction to assembly, using a debugger, and hands on reverse engineering (check out Introduction to Reverse Engineering parts 1 & 2)
  • Understanding Code by Kwazy Webbit ( local copy) There is a good section on the relationship of assembly code to C.

C References

  • The classic reference for C: The C programming language by Kernighan and Ritchie. Prentice Hall, Inc., 1988. ISBN 0-13-110362-8, 1998.
  • The best introduction to C for people that know other languages that I know of is "ANSI C for Programmers on UNIX Systems" by Tim Love. (local .pdf copy)
  • Chapter 3 "Reading C Programs" of Lions Commentary on the 6th Edition of the UNIX Operating System provides a quick (6 page) overview of C syntax, with a particular emphasis on some of the gnarley constructs OS writers sometimes like to use when they are feeling clever. Some of the dialect and style is a bit archaic, but making sure you understand these examples will save you much pain in the labs.

C++ References

  • Tom Anderson's A Quick Introduction to C++ introduces a subset of C++ that can be "learned in a day." It is aimed at someone who knows C and wants to learn C++, but it should also be comprehensible for someone who knows Java and wants to learn C++.

Classic UNIX references

x86 Emulation

  • Bochs - An x86 platform and CPU emulator.
    • User manual
    • Debugger reference
    • Notes on setting up the tools for this class
    • A big advantage you will have over last year's class: I finally managed to get GDB working with bochs. In the CS department, run /u/dahlin/bin/bochs-gdb (instead of /lusr/opt/bochs-2.1.1/bochs) and see this description on how to attach GDB to your bochs process.
  • QEMU - A new, much faster but less mature PC emulator. Use in CS372 at your own risk.

x86 Assembly Language

PC Hardware Programming

Schedule

Project

pmwiki.org

edit SideBar

Blix theme adapted by David Gilbert, powered by PmWiki