Operating Systems
by Brian Jew, Frank Chen, Yousef Mohammad, and Max Rivas
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).
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!
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.