Lecture #1

Chapter -1: Administrivia

Contact Information

Web Page

There is a web page for the course. You can find it from my home page.

Textbook

Text is Tanenbaum, "Modern Operating Systems".

Computer Accounts and Mailman mailing list

Grades

Assuming 3 labs, which is likely, the grades will computed
.3*MidtermExam + .3*LabAverage + .4*FinalExam

Midterm

We will have a midterm. As the time approaches we will vote in class for the exact date. Please do not schedule any trips during days when the class meets until the midterm date is scheduled.

Homeworks and Labs

I make a distinction between homeworks and labs.

Labs are

Homeworks are

You may do lab assignments on any system you wish, but ...

Upper left board for lab/homework assignments and announcements.

A Grade of ``Incomplete''

It is university policy that a student's request for an incomplete be granted only in exceptional circumstances and only if applied for in advance. Of course the application must be before the final exam.

Dates (From Robin Simon)

Dear Instructors -

Below please find dates to keep in mind as the spring semester gets 
underway.  You may also want to post some or all of this info on 
your course homepages.  Please let students know the date of the final 
exam on the FIRST day of class and keep reminding them that we will 
not honor travel plans for travel before the day of the exam.

- Robin
 
First Day of Class: Tuesday, January 16

Add Dates:       Monday, January 29 - Last day to add WITHOUT 
                    instructor's permission
                 January 30 to February 5 - Add WITH
                    instructor's permission only

Drop Date:       Monday, February 5 - Last day to drop courses

President's Day: Holiday Monday, February 19 - no classes

Pass/Fail Option 
Deadline:        Tuesday, February 20 

Spring Recess:   Monday, March 12 - Saturday March 17 

Midterm Grading
Deadline:        Friday, March 9  - Midterms must be GIVEN, GRADED
                 and RETURNED to students

Withdraw 
Deadline:        MONDAY, MARCH 26 - Last day for students to withdraw
                 with a "W".  All remaining students will receive a grade.

Last Day 
of Classes:      Monday, April 30 

Final Exams:     Wednesday, May 2 to Wednesday, May 9 

Group Final Exams:       FRIDAY MAY 4, 2:00 - 3:50Pm
V22.0002.001 - 004
V22.0004.001 - 004
V22.0102.001 - 002
V22.0202.001 - 002

Chapter 0: Interlude on Linkers (covered in recitation)

Originally called linkage editors by IBM.

This is an example of a utility program included with an operating system distribution. Like a compiler, it is not part of the operating system per se, i.e. it does not run in supervisor mode. Unlike a compiler it is OS dependent (what object/load file format is used) and is not (normally) language dependent.

What does a Linker Do?

Link of course.

When the assembler has finished it produces an object module that is almost runnable. There are two primary problems that must be solved for the object module to be runnable. Both are involved with linking (that word, again) together multiple object modules. They are relocating relative addresses and resolving external references.

  1. Relocating relative addresses.


  2. Resolving external references.


The output of a linker is called a load module because it is now ready to be loaded and run.

To see how a linker works lets consider the following example, which is the first dataset from lab #1. The description in lab1 is more detailed.

The target machine is word addressable and has a memory of 1000 words, each consisting of 4 decimal digits. The first (leftmost) digit is the opcode and the remaining three digits form an address.

Each object module contains three parts, a definition list, a use list, and the program text itself. Each definition is a pair (sym, loc). Each use is a pair (sym, loc). The address in loc points to the next use or is 888 to end the chain.

For those text entries that do not form part of a use chain a fifth (leftmost) digit is added.

Input set #1

1 xy 2
1 z 4
5 31004 15678 2888 38002 7002
0
1 z 3
6 38001 1888 1001 3002 31002 21010
0
1 z 1
2 35001 4888
1 z 2
1 xy 2
3 28000 1888 2001

The first pass simply produces the symbol table giving the values for xy and z (2 and 15 respectively). The second pass does the real work (using the values in the symbol table).

(Unofficial) Remark: It is faster (less I/O) to do a one pass approach, but is harder since you need ``fix-up code'' whenever a use occurs in a module that precedes the module with the definition.

                             Symbol Table
                                 xy=2
                                 z=15

.ft CO
 +0
 0:       31004     1004+0 = 1004
 1:       15678              5678
 2: xy:   2888 ->z           2015
 3:       38002     8002+0 = 8002
 4: ->z   7002               7015
 +5		    
 0        38001     8001+5 = 8006
 1        1888 ->z           1015
 2        1001 ->z           1015
 3 ->z    3002               3015
 4        31002     1002+5 = 1007
 5        21010              1010
 +11		    
 0        35001     5001+11= 5012
 1 ->z    4888               4015
 +13		    
 0        28000              8000
 1        1888 ->xy          1002
 2 z:->xy 2001               2002

The linker on unix is mistakenly called ld (for loader), which is unfortunate since it links but does not load.

Lab #1: Implement a linker. The specific assignment is detailed on the sheet handed out in in class and is due 7 February. The content of the handout is available on the web as well (see the class home page).

End of Interlude on Linkers

Chapter 1: Introduction

Homework: Read Chapter 1 (Introduction)

Levels of abstraction (virtual machines)

1.1: What is an operating system?

The kernel itself raises the level of abstraction and hides details. For example a user (of the kernel) can write to a file (a concept not present in hardware) and ignore whether the file resides on a floppy, a CD-ROM, or a hard magnetic disk

The kernel is a resource manager (so users don't conflict).

How is an OS fundamentally different from a compiler (say)?

Answer: Concurrency! Per Brinch Hansen in Operating Systems Principles (Prentice Hall, 1973) writes.

The main difficulty of multiprogramming is that concurrent activities can interact in a time-dependent manner, which makes it practically impossibly to locate programming errors by systematic testing. Perhaps, more than anything else, this explains the difficulty of making operating systems reliable.
Homework: 1. (unless otherwise stated, problems numbers are from the end of the chapter in Tanenbaum.)

1.2 History of Operating Systems

  1. Single user (no OS).
  2. Batch, uniprogrammed, run to completion.
  3. Multiprogrammed
  4. Multiple computers
  5. Real time systems