Computer Science 111

Operating Systems

by Brian Jew, Frank Chen, Yousef Mohammad, and Max Rivas

9/25/2008 - Lecture 1

Administrative

Paul Eggert     4532J Boelter                          OH: M 12-13, T 11-12

 

Ian Ku                         ianku@cs.ucla.edu     OH: M 11:30 - 14:30, T 10-11

Jong Hon Park           jpark@cs.ucla.edu      OH: MW 16 - 17

 

Formal Prerequisites

CS32, 33

Informal Prerequisites

Computer Architecture

Programming Languages

Networking

 

Syllabus hours

Actual hours

Task

4

3.5

Lecture

2

1.8

Lab / discussion

6

12

Outside study

 

Class Contents:

18 Lectures

1 Midterm

1 Final

4 Labs - teams of 2

-          Write a shell

-          Kernel Handling

-          File System

-          Networking OS

2 Minilabs

1 Design Problem

Oral Presentation

Written Report

18 Scribe Notes (HTML 4.01 - Do validation!)

1 Paper (one page)


Grading:

1/3 Labs

1/3 Exams

1/3 Other

 

Lateness:

            1 letter grade per day late

            3 free late days

 

Due dates: Lab 1a: October 3

 

Miscellaneous:

         Get a SEASnet account.

         - For Linux Lab

         See UCLA Linux Users Group

         Emulators - Use QEMU

 

Course Reader - Saltzer & Kaashaak. Principles of Computer Systems Design

         Location: 1081 Westwood Blvd

         These are two MIT professors who cowrote the book with 100s of MIT TAs.

         This course is only a portion of the book. Half of the book is one thing, the rest is something else (networking, etc).

 

Lecture

System

Oxford English Dictionary: 1928      (Definition)

-  An organized or connected group of objects

-  A scheme or method

From ancient Greek word: σύστημα        (Definition)

Organized whole, government, constitution, a body of menor animals, musical interval, group of connected verses in a poem

Operating System

American Heritage 4th Ed. (2000)     (Definition)

Software Designed To Control the hardware of a specific data processing system in order to allow users and application programs to make use of it.

Encarta 2007                                 (Definition)

Master control program in a computer.

Wikipedia 119834131                       (Definition)

Set of Computer programs that manage the hardware and software resources of a computer.

 

Application Programming Interface (API) - System is encased within an interface that interacts with the environment. Oftentimes, we will spend more time drawing the line than writing the code inside. There are many ways to partition a system. We will discuss the best way to modularize a system to best create a system. We will discuss good / bad APIs that are all valid!

 

Common Problems with Computer Systems

1. Design tradeoffs:

"Waterbed effect" - you can't push down one section without another coming up.

            E.g. time space tradeoff in sorting on a disc.

            Instead of swapping data around, create pointers to swap to the data around at the around.
            Pros: faster sort
            Cons: takes up more space. Actual data isn't sorted

Authentication

            E.g. Password-based vs Hardware token.
            Password: need to remember, but harder to steal
            Hardware token: don't need to remember, but easier to steal

            Both have faults. Using both at same time means extra work (need to remember the password and where is the hardware token).

2. Incommensurate Scaling: Not everything scales at the same rate

Economies of scale                 - A pin factory

            Can cause waste.

Diseconomies of scale            - A star network

            Can cause breakage.

3. Emergent Properties: Arise when you scale, AND unanticipated until after they scale.

            E.g. Chrome’s scripting engine that makes intense computation possible. Javascript will run 10x faster

            E.g. Tacoma Narrows Bridge collapse made possible due to wind at resonant frequency.

            E.g. Dorm networks that made Napster possible.

4. Propagation of effects: Think of butterfly effect.

            Common in chaotic systems. Happens in computer systems frequently.

            E.g. Japanese characters instead of alphabet makes directory listing difficult. Operating System is complicated by interpreting multibyte encodings.

            E.g. Kaminsky DNS design flaw - Injecting a packet that spoofs DNS responses and creates fake. Although it was known that DNS can be spoofed, nobody put all the processes together to effectively spoof. Only after internet becomes big enough was this able to happen.

5. Complexity: design or system complexity

            Why? Moore's Law # of transistors on an IC at minimum cost doubles every 2 years. Speed is not growing exponentially! Kryder's Law: The GB in a hard drive grows exponentially.