CS 180 - Introduction to Operating Systems
"You get the operating system you deserve" -- Mead
Reminder: These notes will be taken down permanently on Friday, December 16, 2016.
If you want to save a copy for yourself, please download them before that time.
If you have any questions about any assignment, lecture, quiz, etc., please post the questions in the
CS180 Forum on the
CS180 Moodle website.
There are many people that can answer your question. If you
just send your question to me in an email, it may be a while until (or if) I get back to you. If you
have a question about an assignment, it's very likely that other students have the same
question and they will benefit from the posted answers. Also, you can use the Academic Support Center
Wine (To run Windows apps directly on Linux)
- WINE HQ WINE Headquarters. The place to find out more about the
- WINE App Database This site lists over 20,000 applications and
what their WINE compatibility is.
- Wine at Wikipedia for more information.
- mem.leaks.cpp Sample program to test out
Valgrind. You may also be interested in
kcachegrind as well.
(A graphical profiler for Linux.)
- Dr. Memory A cross-platform (Linux/Mac/Windows) memory
much like Valgrind. It was developed at Google. Currently, only works on 32-bit programs. You'll
need to install the 32-bit libraries on your 64-bit Linux system:
sudo apt-get install gcc-multilib
sudo apt-get install g++-multilib
- How to calculate your grade: This was a practice
assignment from CS120. I've made a spreadsheet
to help you. Just change the numbers in red in the "Your score"
column to reflect your own scores. If you've never used a spreadsheet before, now is
a good time to learn because every college graduate must know how to use one.
Google for anything you need to know. You can download the LibreOffice suite
- LinuxVoice Magazine This is a great magazine
contains lots of great information about Linux and other relevant stuff (e.g. Raspberry Pi). It's
kind of expensive to buy the print version (it comes from the UK). The nicest thing is that after
9 months, the issue is free to download (PDF). Each issue is about 100 pages of full-color, ad-free
(almost) information. It is very polished and professional looking. You can download the free
back issues here.
- Various IDEs for Linux (also on Mac OS X and Windows):
computer from HardKernel.
This one has 8 cores! Check out how it migrates tasks between the cores.
- Raspberry Pi Another small, cheap device that runs Linux.
A very popular device. I recommend this book
Raspberry Pi User Guide to get started. Updated to cover the B+ version. Written by the
founder of the Raspberry Pi Foundation.
- VoCore A Linux computer (1 square inch). It runs
BusyBox, which is a really small version of Linux for embedded systems.
- CuBox-i4Pro A pretty powerful
Introduction Overview of Operating Systems
Command line options Mead's Guide to getopt (Programming with command line options using getopt.)
Operating System API Single vs. multi-tasking, System calls vs. library calls, kernel/user mode, protection.
Processes Process states, scheduling, interprocess communication, POSIX, Win32
Threads Single vs. multi-threading, Thread API, POSIX, Win32
Memory Physical, logical, addressing, paging
Scheduling Non-preemptive, preemptive, priorities, multicore scheduling.
Synchronization Race conditions, critical sections, locking, mutexes, semaphores.
Storage Drives, formatting, scheduling algorithms, RAID, NAS
- Virtualization Virtual machines, host/guest operating systems.
- Linux Mint User's Manual - The documentation contains more details about Linux Mint.
It's only about 50 pages, so you should sit at your Linux computer and read through it.
- This is the GNU/Linux Distribution Timeline to see where distributions come from.
The image is from here. A great site to read up about the
top 100 distributions is distrowatch.com.
- Here is the list of release names
that Ubuntu uses. (Mint is based on Ubuntu.) We're using Mint 18, which is based on Ubuntu 16.04 LTS
(Xenial Xerus). Some background on how the names were "suggested" or "voted for" is
- Here is the list of release
names used by Linux Mint.
The following topics will NOT be on the final exam:
- File Systems Files, API, inodes, directories
- Using the bash shell A full-featured shell with its own language built-in.
- The Boot Process POST, BIOS, Boot loaders, MBR, Partition tables, GUID partitions
- Mead's Guide to the Secure Shell (SSH) Client, server, tunneling, keys, TCP wrappers, SSHFS, etc.
- Mead's Guide to Signals on Linux. Sending, receiving, and handling various signals.
- Mead's Guide to Building Software on Linux A detailed step-by-step showing the
various ways of building and installing software on Linux with examples.
- Problems from the website, textbook, and other sources:
|Problems or Reading||Due Date|
Overview of the major Linux distributions -
We will be spending some time studying Linux, and this will give you a good idea of why I chose the
distributions I did. There are over 100 different "versions" of Linux, and this gives you some insight
into why Linux has so many choices (and why it is used more than any other operating system). Be
prepared to answer the question, "Besides Mint, which of these distributions do you think you would
use and why?"
Check out this short video to see just
how popular Linux is. It's a couple of years old, so the numbers will be much higher than are
stated. If you're new to Linux and interested in customizing the Cinnamon interface, here is
an introductory video to do that. The guy that
did the video has lots of other related videos that you might find useful to watch. You can also search
for "Linux Mint" on youtube for lots of others.
Read sections 1.1 through 1.8 in the PDF
that comes with Virtual Box. This is for version 5.0.0. Digipen may be using a different version,
but the documentation
should be almost identical. You can also read the latest documentation
To get a decent overview of what Linux is compared to Windows, read the
Ultimate Linux Guide for Windows Users.
This should help you get started with the whole "Linux" thing.
|Friday, September 9, 2016|
Install Linux Mint, either natively or via a virtual machine. The version for this class is
18 "Sarah" - Cinnamon (64-bit)
You can add the other desktops
(MATE, KDE, etc.) afterwards. Version 18 comes with the correct compiler version that we are
going to be using for all programming assignments. It is possible to
run Linux Mint 17.x and then install newer versions of the gcc compiler, but this is more work.
If you are adventurous, you can read about doing that
Read chapters 1 through 5 in The Linux Command Line.
You should read this while sitting at the computer and running Linux. Also, you should realize that,
although the command line in Linux may look a lot like the command line in Windows, the Linux command line
(the Bash shell) is infinitely more powerful than the one in Windows. You will do well for yoursef to
explore at least the basics of it. Those of you that have been using Linux or Mac OS X from the command
line may only need to skim this information.
|Monday, September 12, 2016|
Experiment with mem.leaks.cpp with valgrind. Yeah,
it's a C++ file, but it will demonstrate a lot of bugs. (Originally developed by Prof. Volper).
||Monday September 19, 2016|
Here are some questions to help you Practice with Filters.
||Tuesday, September 27, 2016|
- Programming Assignment #1 - Due Wednesday, September 21, 2016 at 11:59 pm
- Programming Assignment #2 - Due Wednesday, October 12, 2016 at 11:59 pm
- Programming Assignment #3 - Due Monday, October 31, 2016 at 11:59 pm
- Programming Assignment #4 - Due Tuesday, November 8, 2016 at 11:59 pm
- Programming Assignment #5 - Due Tuesday, November 22, 2016 at 11:59 pm
64-bit data models - 10 years ago,
everyone assumed everything was 32-bit. 10 years from now, everyone is going to assume everything is
64-bit. Unfortunately during the next few years, no one is going to be able to assume anything and will
need to test both. Here's a sample for you to compile and run.
- Porting to 64-bit A
good article introducing some of the issues that might come up when moving from 32-bit to 64-bit.
- The Long Road to 64 Bits
"Those who cannot remember the past are condemned to repeat it." - George Santayana