Code Monkey home page Code Monkey logo

thinkos's Introduction

Think OS

A Brief Introduction to Operating Systems

by Allen B. Downey

Download this book in PDF and HTML from http://greenteapress.com/thinkos

Copyright 2014 Allen B. Downey.

License: Creative Commons Attribution-NonCommercial 3.0 Unported License.

http://creativecommons.org/licenses/by-nc/3.0/

Preface

In many computer science programs, Operating Systems is an advanced topic. By the time students take it, they usually know how to program in C, and they have probably taken a class in Computer Architecture. Usually the goal of the class is to expose students to the design and implementation of operating systems, with the implied assumption that some of them will do research in this area, or write part of an OS.

This book is intended for a different audience, and it has different goals. I developed it for a class at Olin College called Software Systems.

Most students taking this class learned to program in Python, so one of the goals is to help them learn C. For that part of the class, I use Griffiths and Griffiths, Head First C, from O'Reilly Media. This book is meant to complement that one.

Few of my students will ever write an operating system, but many of them will write low-level applications in C, and some of them will work on embedded systems. My class includes material from operating systems, networks, databases, and embedded systems, but it emphasizes the topics programmers need to know.

This book does not assume that you have studied Computer Architecture. As we go along, I will explain what we need.

If this book is successful, it should give you a better understanding of what is happening when programs run, and what you can do to make them run better and faster.

Chapter 1 explains some of the differences between compiled and interpreted languages, with some insight into how compilers work. Recommended reading: Head First C Chapter 1.

Chapter 2 explains how the operating system uses processes to protect running programs from interfering with each other.

Chapter 3 explains virtual memory and address translation. Recommended reading: Head First C Chapter 2.

Chapter 4 is about file systems and data streams. Recommended reading: Head First C Chapter 3.

Chapter 5 describes how numbers, letters, and other values are encoded, and presents the bitwise operators.

Chapter 6 explains how to use dynamic memory management, and how it works. Recommended reading: Head First C Chapter 6.

Chapter 7 is about caching and the memory hierarchy.

Chapter 8 is about multitasking and scheduling.

Chapter 9 will be about threads.

Chapter 10 will be about synchronization with POSIX mutexes and condition variables.

A note on this draft

The current version of this book is an early draft. While I am working on the text, I have not yet included the figures. So there are a few places where, I'm sure, the explanation will be greatly improved when the figures are ready.

thinkos's People

Contributors

allendowney avatar bbishop423 avatar bitmole avatar jmcarp avatar jmuia avatar mtn avatar pzel avatar ricardozago avatar shalzz avatar stvhwrd avatar tipabu avatar yihangho avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

thinkos's Issues

Text Alignment

I have downloaded the pdf file, the alignment of text differs from page to page, why is that?
screenshot from 2014-05-01 20 33 24

Page 19: Wrong code output

Change the content inside the last two printfs from Address of to points to to match the output found later in the same page.

latex compile: the hevea.sty missing

When I compile the book.tex in texstudio with xelatex.exe command.
I got an error: hevea.sty missing.
And, I copy it from the ThinkPython repository, it worked.
Maybe, the file should be appended in this repository

Wishlist: Please consider CC-BY instead of CC-BY-NC

I feel you might have selected the CC-BY-NC license as a way of attempting to ensure that others do not profit off of your work (I agree with this goal) without understanding that for such an ends it is already redundant (your work is available for free). It actually excludes your work from contributing to an open commons in which, for example, might include for profit educational institutions (colleges) using your book as a required course material.

For a much more informed discussion please consider the content of this linked discourse: http://creativecommons.org/weblog/entry/33874#comment-372240

Page 64: Reference to header not included

"For my examples, I include the following headers:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
The first two are standard; the third is for Pthreads and the fourth is for
semaphores."
There is no forth header.

What is the last version of the book ?

Hello,

Recently I've downloaded .pdf version of this book from "greenteapress" site. And the version I have in my phone (downloaded some time ago) is different from the last one.
The last one has version 0.7.4 and the old .pdf I have has version 0.8.1 with some complementary information on how OS loads the program and how CPU executes the code.

I want to ask what is the last version to be focused on?

Thanks.

ThinkOS For Teaching

Hey Allen,

I'm a big fan of your books and I am being tasked with developing an "Intro to Operating Systems" course for my 3rd year undergraduate CS students.

Anyhow -- I was wondering if collaboration with a live test audience might be something you're interested in (I've got 30+ students... enrollment is maxed!). And if you have any advice / ideas for me.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.