Just Enough C
Most of the algorithms in the book are defined in the C programming language. For those not familiar with C, the following documents are useful.
C and C++ in 5 days. A good tutorial for quickly getting up to speed on C. By Philip Machanick, University of the Witwatersrand, South Africa.
C Language Tutorial. A good, relatively concise overview to get you started..
The C Cheat Sheet This 74-page document enables the beginning C programmer to get started with the language and write small-to-medium-size programs involving simple I/O, file manipulation, and arithmetic computations. Lots of examples. By Andrew Sterian, Grand Valley State University.
Programming in C A detailed tutorial on the use of C. It covers all of the basic elements of C and then provides an excellent introduction to interprocess communication, semaphores, shared memory, threads, concurrency, and more.
An Introduction to C Programming for Java Programmers. If you know Java, this introduction will quickly make it easy for you to read C. By Mark Handley, University College, London
C for Java Programmers. Another good introduction for the Java-literate. By Jason Maassen, VU University, Amsterdam
Useful Web Sites
Computer Science Student Resource Site: Help and advice for the long-suffering, overworked student.
Errata sheet: Latest list of errors, updated at most monthly. File name is Errata-OS8e-mmyy. If you spot any errors, please contact me at .
Chapter 1 - Computer System Overview
WWW Computer Architecture Home Page: A comprehensive index to information relevant to computer architecture researchers, including architecture groups and projects, technical organizations, literature, employment, and commercial information.
CPU Database. Information on hundreds of commercial processors spanning the past 40 years. In addition, site provides a methodology to separate the effect of technology scaling from improvements on other frontiers (e.g., architecture and software), allowing the comparison of machines built in different technologies.
Processor Emporium. Interesting and useful collection of information.
ACM Special Interest Group on Computer Architecture. Information on SIGARCH activities and publications, good set of useful links.
IEEE Technical Committee on Computer Architecture. Copies of TCCA newsletter, useful links.
Computer Architecture Resources Maintained by BEN JULIANO, Associate Dean, College of Engineering, Computer Science, and Construction Management (ECC), California State University, Chico.
Chapter 2 - Operating System Overview
Operating Systems at the Open Directory Project A massive organized directory of OS-related links.
Operating System Technical Comparison Includes a substantial amount of information on a variety of operating systems.
ACM Special Interest Group on Operating Systems. Information on SIGOPS publications and conferences.
IEEE Technical Committee on Operating Systems and Applications. Includes an online newsletter and links to other sites.
OS Development Resources: A number of useful links.
Operating System Development Series: A series of 25 tutorials that walk you through the process of creating an OS from the ground up. Beginners beware: this series assumes you already know your way around an IDE and are a competent C and assembly language programmer.
The little book about OS development: This course walks through the complete process of developing an x86 operating system by beginning with setting up a programming environment, culminating in programming for multitasking, and hitting topics such as managing system memory and developing file systems along the way.
The comp.os.research FAQ: Lengthy and worthwhile FAQ covering operating system design issues.
Linux Documentation Project: The name describes the site.
IBM's Linux Website. Provides a wide range of technical and user information on Linux. Much of it is devoted to IBM products but there is a lot of useful general technical information.
Windows Development: Good source of information on Windows internals.
Timesharing: A marvelous 1983 tutorial video on timesharing, with Corbato.
Chapter 4 - Threads
POSIX Threads An informative overview.
Chapter 8 - Virtual Memory
The Memory Management Reference A good source of documents and links on all aspects of memory management. Includes an excellent glossary
Chapter 13 - Embedded Operating Systems
Free Electrons: A number of documents on embedded operating systems.
Embedded.com: Wide variety of information on embedded systems.
eCos: Downloadable software, information, and links on eCos.
TinyOS Documentation Wiki: Documentation and tutorials.
Chapter 15 - Operating System Security
Computer Security Resource Center: Maintained by NIST; contains a broad range of information on security threats, technology, and standards.
CERT Coordination Center: The organization that grew from the computer emergency response team formed by the Defense Advanced Research Projects Agency. Site provides good information on Internet security threats, vulnerabilities, and attack statistics.
Vmyths: Dedicated to exposing virus hoaxes and dispelling misconceptions about real viruses.
NIST RBAC site: Includes numerous documents, standards, and software on RBAC
Snort: Web site for Snort, an open source network intrusion prevention and detection system.
SecureList: Site maintained by commercial antivirus software provider. Good collection of useful information on viruses, hackers, and spam.
Chapter 16 - Distributed Processing, Client/Server and Clusters
Appendix D - Object Oriented Design
Object Management Group Industry consortium that promotes CORBA and related object technologies.