Pre-requisites: CS 32, 33, 35L
Recommended: CS 118, 131, 151B
Logistics - Workload > Lecture (4 hours/week) > Lab/Discussion (2 hours/week) > Outside Study (9 hours/week) - Midterm > May 3 (Thurs) in lecture > Open-book & Open-notes - Final > May 3 (Thurs) in lecture > Open-book & Open-notes - Labs (4) > Can be done in groups of two > Shell > Device Driver > File System > Internet System - Design Problem (1) > Extended version of the lab - Mini-Labs (2) > Focused aspecs of OSes + Write a small operating system of your own (WeensyOS) - Written Report (1) > 2-3 pages on a fture topic (TBA) - Scribe Notes > Groups of at most 4 > Check with http://validator.w3.org to validate HTML for Scribe Notes > Create a tarball file that contains an "index.html" file that contains work - Grading > Labs 33% + Each lab is worth 1/12 of final grade > Exams 33% + Midterm is worth 1/9 of final grade + Final is worth 2/9 of final grade > Other 33% + Mini-Lab 1/15 + Design Problem 1/12 + Scribe Notes 1/12 + Written Report 1/30 - Deadlines > Scribe Notes (due 1 week after the lecture) + Scribe Notes for the lecture prior to the midterm is due 5 days after the lecture > Labs + As stated in the syllabus + Lab 1 * 1A (Due April 10) * 1B (Due April 24) * 1C (Due April 27) > Mini-Labs + Mini-Lab 1 (Due April 20) > Written Report (Due June 8) > Design Problems + Due 1 week after lab - Lateness Policy > 2^N points for [N, N + 1) days late + Assuming 100 point assignment > Drop-dead last day to turn-in anything: Friday (last discussion section) - Submission Policy > Collaboration about general information is permitted and encouraged > Code submitted must be your (or your group's) own - Textbook > Principles of Computer System Design (Saltzer & Kaashoek) - Virtual Machines (VM) > Typically use QEMU or Bochs atop own machine or SEASnet Linux server > Used to boot & run code for assignments - Language of Choice: C
Project 1 - Example Input: sort < a | cat b - | tr A-z a-z > c sort -k2 d - < a | uniq -c > e diff a c > f > Three processes are spawned for the first command and run in parallel if possible > When the first command is complete the second command will run followed by the third + Note the first and second commands are independent and can be parallelized + The last command must wait until the first command completes Definition of "System" (Oxford English Dictionary - 1928) 1. An organized or connected group of objects 2. A set of principles, etc.; a scheme, method - Definition hints at Object-Oriented Programming (OOP) constructs Definition of "Operating System" (Encarta - 2007) 1. Master control program in a computer... - Too control oriented Definition of "Operating System" (American Heritage Dictionary - 2000) 1. 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 - Too control oriented - Operating system controls both hardware and software - Operating systems are not always specific to certain computers > Generic OSes exist (e.g. Linux) Definition of "Operating System" (Wikipedia - v46980935) 1. A set of programs that manage computer hardware resources and provide common services for application software - A major component of OSes is resource management - Common services can make programming for the platform more efficient Definition of "System" (TEXTBOOK - S1.A.2) 1. A system is a set of interconnected components that has a specified behavior observed at the interface with its environment. - An interface encapsulates the system and separates it from the environment > Good programming principles dictate good interface design > Interface is the go-between for the system and environment - Interface Technologies > Network Protocols + Interfaces between multiple computers > Application Programming Interface (API) + Interface between programs and OS > Application Binary Interface (ABI) + Hardware rules for a specific system > User Interface + Interfaces between user and computer > Instruction Set + Lowest level interface between hardware and software Systems Nest - Systems are different aspects > Systems can be seen through different perspectives Major OS Aspects - Virtualization > Non-real implementations of systems that are implemented via lower level physical components > Ex: Virtual Memory, Virtual Machines - Scheduling > The distribution of computer resources when demand for resources is greater than the amount of resources available > Resources + CPU + Network + Disk IO - Consistency > Rules for keeping applications "sane" and operating correctly > Synchronization - File Systems > Simplified database systems - SECURITY > Hard to implment after a system is built > Needs to be considered while the system is being built Problems with Computer Systems - Trade-offs (Waterbed Effect) > Optimizing for one aspect may deoptimize another apsect - Incommensurate Scaling > Not everything grows at the same rate > Economies of Scale + Things are optimized as they get large + Ex: Pin factory (Wealth of Nations: a. Smith) + Can cause resource wastage > Diseconomies of Scale + Things are disoptimized as they get large + Ex: Ethernet Switch + Can cause breakage * Overload can prevent correct functionality - Propagation of Effects (Butterfly Effect) > Naturally occurs in chaotic systems > Backslash Problem (Windows OS) Homework - Read Sections 1-2.3