CS40 Operating Systems

David Morgan
Santa Monica College
see syllabus for email address


Administrativa

Syllabus

Grade information

Course outline

Information

Stallings book's site
 8th edition
 6th edition
 5th edition

Remote Unix access with telnet

Remote Unix access with ssh

Using ftp

Caching

Linux links
Linux man pages

Fundamental Unix Commands

System calls

Linux syscall cheat sheet

Disks & booting:
 - Partitioning primer
 - Linux loader doc
 - Comparative MBRs
 -Interpreting Partition Records
 - Future of BIOS

Sys. architecture
(disk organization)

Punched cards

1959 utility bill on punched card (like those mailed to my childhood home)

Memory mgmt:
 - Segmentation
 - Page replacement
 - Intel architecture (pdf)
 - Management types

Code relocation

Overlays
 - code composition
 - memory organization 

Threads

Deadlock example

Filesystem analysis

Files vs devices

Foundation concepts:

ASCII chart

Sys. architecture (interrupts)

Sys. architecture
(disk organization)

Number bases:
  -Hex tutorial
  -Hex advocacy
  -Binary numbers
  -Number systems
conversion tools:
  Table, or
  Calculator
   - binary
   - hexadecimal

 Instruction sets
   -Intel instruction set
   -Intel chip architecture

  -Others
  -CPU registers
  -a CPU instruction

An assembler program
  -source code
  -explanation 

Symbol management

Data structures
  - Datastructures
  - Linked list of states

Compile/link/load

Slide presentations

Stallings TEXTBOOK's:

Background
Ch 1 Computer Overview
Ch 2 OS Overview

Processes
Ch 3 Process
Ch 4 Threads
Ch 5 Concurrency
Ch 6 Concurrency

Memory
Ch 7 Mem Mgmt
Ch 8 Virtual Mem

Scheduling
Ch 9 Scheduling
Ch 10 Scheduling

I/O & Files
Ch 11 I/O Mgmt
Ch 12 File Mgmt


PROFESSOR's:

OS Installation

Memory Mgmt

Process Mgmt

Datastructures

Linux landscape

linux process scheduling

 

SPRING 2015
Section 4109 6:45p - 9:50p Fri Bus 263

This Website (http://homepage.smc.edu/morgan_david/)  will be used extensively to communicate with you. Announcements, grade reports, and assignments will be posted here. Please access the website from any SMC computer lab. Alternatively, it can be viewed from an internet-connected browser anywhere. You are responsible for awareness of the information posted here

Grades - have been updated, at the link entitled "Grade information" at left. (3/27)

Homework
 do the reading in the Reading column of section 4  of the course outline.
 do the assignments found in the "Homework" column of sections 4 and 5. Caching assignment due on paper in class 3/27. did not have time to cover caching in class on 3/20, plan to do it next class on 3/27, due in class 4/3

----------------
Some helpful explanation - here is how to correspond or reconcile the vocabulary in the textbook problem, and that at the end of my related writeup. There are 3 terms involved. What he calls T
m, I call Tslow. What he calls Tc, I call Tfast. What he calls "effective access time, I call Tave. There is no difference between what he and I are talking about, it's the same situation. The first term is talking about the native access time of one type of manufactured physical memory, and the second term about that of another. The second one is superior, does its job (moving data in and out) faster, costs more no doubt. Engineers buy that to make their caches. They buy the first, slower kind to make their RAM memory modules (regular memory) that you stick into the slots on your motherboard. The third term, on the other hand, is a little different in that it isn't talking about the native access time of anything. Rather, it's talking about the access time that would be experienced in actually using the computer. That doesn't match the native access time of either of the 2 memory types that the computer contains, since the computer uses a blend of both so that the experienced access time will fall somewhere in between their native times. Better than the slow one, not as good as the fast one. But in doing the problem just recognize that

 Tm = = Tslow

 Tc = = Tfast

 effective access time = = Tave

----------------

sputnik down again, regrettably. (3/22)

Grades - have been published, at the link entitled "Grade information" at left. (3/21)

Waste time in class - see in-class exercise link, section 5 of course outline, entitled "waste time" (3/20)

How interrupts save time - my in-class example put some numbers on the textbook's figure 1.5, "Program Flow of Control without and with Interrupts." I assigned time units to the various portions of the program shown in the Figure, both the 5 numbered ones and the I/O Command. Then I calculated the elapsed time from the start of the program till the time it finishes. I did that twice, once where interrupts are not used (Figure's left panel (a) ) and once where they are used (Figure's center panel (b) ). I assigned/posited the following amounts of time:
 1 - takes 6 units
 2 - takes 20 units
 3 - takes 18 units
 4 - takes 4 units
 5 - takes 4 units
 I/O command - takes 8 units

If that were the case, I reached the conclusion that the program as a whole would take 76 time units to complete if all phases ran consecutively (i.e., without interrupts) in the order shown in the Figure, versus only 60 time units if some phases ran concurrently (i.e., with interrupts). A similar question appears on an upcoming test. The question is to perform the identical analysis/calculation, but with different input numbers supplied. Be sure you can do this problem, and you'll be able to do its companion problem on the test. (3/20)

Operation of a stack - to keep track of where to return after a function call. Shown in the gdb debugger (same one used by ddd debugger you used). (3/20)

System calls - here's a cheat sheet listing the approximately 200 system functions that user programs can call, for various services. Here is some further information. (3/20)

Grades - published, at the link entitled "Grade information," at left. (3/20)

sputnik is back up - please make sure you 1) are able and 2) know how to log into it (see 2/23 "Accounts created" posting, and the undated "A Remote Unix system account is available for your use" and "Using ssh" postings below). Please upload your binary math homework. (3/13)

Homework - 
 do the reading in the Reading column of section 3  of the course outline.
 do the assignment found in the "Homework" column of section 3.
----------------
Some helpful explanation about textbook's problem 1.1 at the end of the chapter. It is very similar to the one in the book in Figure 1.4 (and the matching assembly language in-class exercise we did). The difference is, he wants to get/put numbers from/to some devices, instead of memory. So, he gives you 2 new instructions (to go with the 3 you already know) in his hypothetical machine language, for the purpose of shuttling data back and forth to devices.  The instructions require id's of some kind for devices (just as memory locations require addresses, which serve as their id's). The author doesn't provide id's for the devices, but you can do so. You can make up your own id format and system. A good choice for this academic exercise might be 3-digit numbers such as 001 for device 1, 002 for device 2, and so on. Then, putting together the drawing I ask for is a matter of showing the devices and their contained values, and constructing a drawing pretty much the same as the one in Figure 1.4.)
----------------

due dates - there are 2 assignments in section 3 homework column. Please perform the first, "some assembly language," on sputnik by the end of the day Sunday 3/22. It leaves the result on sputnik. Please do the second, "make a variation..." on paper and submit it in class Friday 3/20. (3/19)

 (3/11)

Web site change - I have removed the "assignment" links in the right-hand column. They were mostly duplicative of equivalent links in the course outline. Those that were not, I migrated into the course outline or eliminated. So the course outline is the centralized, official home of links to homework and other resources. The current homework, about arithmetic in binary and hexadecimal number systems, has a link in the homework column of the 2nd section of the course outline. Please find it, and future homework links, there. (3/6)

No class meeting tonight - with apology for the late notice, our class will not be held tonight March 6. The computer science department holds a "faculty flex day" for which all the department's classes are canceled for the day. If you are in contact with any classmates please tell them, in case they may not check email or this web site. I'm sorry for any inconvenience, ask you to have a good evening, and look forward to seeing you next Friday March 13. (3/6)

Bootable flash drives for you - containing a copy of linux similar to that on our classroom laptops, is available for copying to your USB drive. Optionally, if you are interested, bring an 8GB or bigger flash drive to class and we can copy onto it an image of the USB drive I have prepared. It seems to boot on several computers-- probably therefore yours. It's persistent. It contains the utilities and configuration I think useful for teaching. I have not road tested it on any scale but with you as my guinea pigs, it's an offer. It is not required, and I won't formally support things that may not work. No promises. But if you are interested come to class with a flash drive and I think you will leave with a linux environment in which to play. (2/27)

Due date for "Second homework" below will depend on when we get sputnik remote server access restored. I will keep you posted. Meantime go ahead and work out the binary and hexadecimal problems in the assignment. (2/27)

Accounts created - per the link below entitled "Remote Unix system account". Please do the homwork item (under the link "First homework" below) that asks you to perform an initial login. (2/23)

Course outline - with approximate weekly topic coverage corresponded to related readings, homework assignments, and in-class slides I will use. Please follow this outline as we move through the topics, for assignments and reading I want you to do (2/20)

The answer is ... (read the lights),  what is the question? Let's understand what these pictures show. The device shows adding 6 and 5 to produce 11. Here are "6 and 5". And here is "11".
Listen to this video from the 7:30 timing mark to the end, describing addition with switches to input addends, lights to output sums, and a 74xx Texas Instruments chip to hold the "wiring" that does the math.
74xx chip in 1962? No such thing. My classmate then made a science project that did the same thing as in the above video: switches to input addends, lights to output sums. But how did he make the math happen? He built the same functional circuitry as contained in 74xx chips, from basic discrete circuit components ( resistors, capacitors, inductors, diodes, transistors ). The circuits he wired up are as shown here in the several kinds of "logic gates" (scroll down to the circuit diagrams) and further described here.
Here is another discrete component enthsiast/purist's page. (2/20)

Second homework - please
 do the assignment found in the "Homework" column of section 2 of the course outline. anticipate March 6 due date
(2/20)

First homework - please
 read chapter 1 of the textbook. Slowly. Twice.
 read the 7 links about binary and other number systems, below left, under the heading "Number bases" in the "Foundation Concepts" section.

read - write-up at link entitled "Remote Unix access with ssh" at left, and then:
log in - to your remote unix account. Please see section here entitled "Remote Unix system account for you". I will see your login history and record a minor grade credit for your having logged in. Log in by this Friday 2/27. After logging in, get out by running the "exit" command.

listen - to this podcast about operating systems (skip the part from the 6:00 minute mark to the 39:00 minute mark). It spans a lot of topics that we'll encounter in coming weeks, in a broad summary touching on all the items on the OS's job description list (the ones in paragraph titiled "Jobs" below). You won't understand some of it, and I considered not asking you to listen to it on the grounds that it bites off more than you can chew. But that's what the coming weeks are for. Listen to it now. Then, it would be interesting if you did so again after the course to see if I taught you anything.

anticipate, from assignment 1.5, the book's problem 1.1 at the end of Chapter 1, by reviewing the instruction execution example in Figure 1-4 of the textbook and associated discussion. (2/20)

First personal computer - Altair by Ed Roberts

(click photo to enlarge, note switches and lights on front panel)
(2/20)

PCBSD installation - time permitting I hope to demonstrate the installation of an operating system on a laptop in class. I'll use PCBSD. See this related YouTube video and PCBSD's website. (2/20)

Virtual machines - on class laptops (screenshot).

Jobs for which operating systems have responsibility:
 Internal
  memory management
  process management
  device management
  file management
 External
  user interface
 (2/20)

Slides we're viewing
 "Ch1 Computer Overview" - about interrupts, caching, etc
 "OS Installation" - about partitions, MBR, boot process, filesystems etc  (2/20)

Listed homework assignments at right - will not necessarily all be assigned. So don't go off and try to do them all on that erroneous assumption. They will be assigned selectively and explicitly. (2/20) [those homework links at right have been removed (3/5) ]

Textbook - Operating Systems: Internals and Design Principles, sixth edition, William Stallings, Pearson Prentice Hall. It appears to be offered in an online format. (2/20)

Foundation concepts you should be(come) familiar with as background/prerequisite for this class:
 Data structures (lists, stacks)
 Binary and hexadecimal number representation
 Compiling/linking/loading (symbols, address fixups)
 ASCII code
 Processor instruction sets
 System architectures (bus, data lines, interrupt lines)
 Use of ssh
 Use of ftp/sftp

Procedures for using class laptops

A Remote Unix system account is available for your use. 

Using ssh (secure shell). ssh is an important tool you will use for interacting with remote computers. For that you will need an ssh client. There are a number of ssh client alternatives.

Running linux at home.

 

Eniac - 1946

Milestone in the history of computation