Transcript intro

Operating Systems
CSE 411
Introduction and Overview
Sept. 5 2006 - Lecture 1
Instructor: Bhuvan Urgaonkar
About Me
• Bhuvan Urgaonkar
– Ph.D., Sept. 2005, Univ. of Mass. Amherst
– Research areas
• Operating systems, Distributed systems, Computer networks
– Office hours: Thu 5-7 PM, or by appointment
– Office: 338D, IST Building
– Email: bhuvan @ cse
Welcome!
Administrative Stuff
Teaching Assistants
• Yuan Fang
– Office hours: M 10-11 AM, W 11.30-12.30 PM, 346D
– Email: yufang @ cse
• Arjun R. Nath
– Office hours: Tue 5-7 PM
– Email: anath @ cse
Online Resources and
Text-book
• Course Web page:
– http://www.cse.psu.edu/~bhuvan/teaching/fall06/411/411.html
• All material will be available via ANGEL
– Please seek help from the TAs if needed
• Textbook
– Operating Systems Concepts, 7th ed.
Silberschatz, Galvin, and Gagne
Course Mailing List
• Via ANGEL
– Use with care
• I will send a test email, please respond to my
email address if you don’t receive it by Friday
• Welcome to write to me or the TAs
– Make sure to include “411” in the subject
Grading
•
•
•
•
•
Quizzes (approx. one per week): 15%
Written home-works (5): 15%
Projects (3): 35%
Exams (3): 35%
90+: A, 75-89: (A, B], 65-74: (B, C], …
– Subject to change; will not make it stricter
– No relative grading - relax :)
Grading
• Projects will be done in groups of 2
– One group of size 3 will be allowed if needed
– If your partner drops the course …
• 2 Exams, each on a different subset of the material;
final exam comprehensive
• Late policy:
– Strict deadlines for quizzes and home-works
– Loss @ 20% per extra day for projects
– Inform TAs well in advance if there is a real reason for a delay in
project submission
– Same for conflict exams
Grading
• Projects
– 50% grade on how functional your project is
– The other 50% on your write-up and presentation
• We will give instructions on what we expect when we make the
projects available
• Quizzes:
– Online on ANGEL
– Multiple-choice, mostly
Computing Resources
• Solaris or Linux accounts for projects
• Email me or the TAs if you don’t have an
account or have any doubts/problems
Academic Honesty
• Do all assignments on your own
– Quizzes, home-works, projects
• We will use software to compare project
source codes
– Both partners on each team are expected to
know everything about each project
Assumed Background
• First course on algorithms and data structures
• Comfortable programming in C/C++
– Comfortable with a debugger like gdb
• Preliminary understanding of computer architecture
– We will cover some basics in this course
• Talk to me if you have doubts
• Background quiz to be turned in by next Monday
Before We Begin …
• Some advice
– Speak up in class, ask questions
– Attend all classes
• Hint: Ideas concerning homeworks, exam questions, …
–
–
–
–
Do all assignments on your own!
Make good use of office hours
Bring printouts to class and take notes on them
Read text-book soon after class
• Sections to read will be made available on the Web site alongside
lecture notes
• Even better: read before class and ask questions
Operating Systems:
Introduction & Background
What is an Operating System (OS)?
• Literal meaning
– Software that helps operate a computer
• Lack of consensus on the term operate
• Overloaded term
– Software that runs on a computer when nothing else is
running (e.g., right after it boots up => kernel)
• Very restrictive, what about dynamically loaded device drivers?
– Windows = Any other OS + Windows Media Player + …
• Very inclusive, why not everything else in the world?
What is an OS
• There is no single truth here
– Our OS somewhere between these extremes
• Definition using negation
– Applications
• Moving the burden to defining an application :)
– OS = all software minus applications
• Helps the applications use the computer
• Helps manage the resources of the computer
Why do we need an OS?
• Why not provide this functionality in
hardware?
– Why this separate piece of software?
A Little Bit of History
The Dark Ages (1940s - 60s)
Hardware: expensive; humans: cheap
• Evolution of functionality
– Single user
– Batch processing
– Overlap of I/O and
computation
– Multi-programming
1. Single User
• One user at a time on console
• Computer executes one function at a time
– No overlap: computation & I/O
• User must be at console to debug
Multiple users => inefficient use of machine
2. Batch Processing
• Execute multiple “jobs” in batch:
–
–
–
–
Load program
Run
Print results, dump machine state
Repeat
• Users submit jobs (on cards or tape)
• Human schedules jobs
• A program loads & runs jobs
– The Operating System
More efficient use of machine, complicates debugging
3. Overlap I/O and Computation
• Before: machine waits for I/O to complete
• New approach: more work by the OS
– Allow CPU to execute while waiting
– Add buffering
• Data fills “buffer” and then output
– and interrupt handling
• I/O events trigger a signal (“interrupt”)
More efficient use of machine, but still one job at a time
4. Multiprogramming
• Allow several programs to run at same time
– Run one job until I/O
– Run another job, etc.
• OS manages interaction between programs:
– Which jobs to start
– Protects program’s memory from others
– Decides which to resume when CPU available
So what does an OS do?
• Two kinds of functionality
– Management of computer resources
• Sharing CPU between tasks
• Memory management
– Certain services to users
• Load programs, run them
OS Complexity
• Increased functionality & complexity
• First OS failures
– Multics (GE & MIT):
announced 1963, released 1969
– OS/360 released with 1000 known bugs
• Need to treat OS design scientifically
• Managing complexity becomes key to…
The Renaissance (1970s)
Hardware: cheap; humans: expensive
• Users share system via terminals
• The UNIX era
– Multics:
• army of programmers, six years
– UNIX:
• three guys, two years
• “Shell”: composable commands
• No distinction between programs & data
• But: response time & thrashing
The Industrial Revolution
(1980s)
Hardware very cheap;
humans expensive
• Widespread use of PCs
– IBM PC: 1981, Macintosh: 1984
• Simple OS (DOS, MacOS)
– No multiprogramming, concurrency,
memory protection, virtual memory, …
– Later: networking, file-sharing, remote
printing…
– GUI added to OS (“WIMP”)
The Modern Era (1990s-now)
Hardware cheap; processing demands increasing
• “Real” operating systems on PCs
– NT (1991); Mac OS X; Linux
• Different modalities:
–
–
–
–
Parallel: Multiple processors, one machine
Distributed: Multiple networked processors
Real-time: Strict or loose deadlines
Sensor networks: Many small computers
OSes Today
• Active research area (so I like to believe!)
– Top CS conferences, several distinguished researchers/groups
– Intersects with theory/algos., software engg., architecture, distrib. comp.
• Major market presence
– Microsoft, Apple, HP, …
• New environments, new devices
– Web, P2P systems, Internet apps, sensor networks, mobile devices, multimedia,
…
• New challenges
– Distributed systems, heterogeneous devices, ubiquitous computing, utility
computing, mobile computing, autonomic computing
Outline of this Course
Course Outline
• Resource Management (and some services an OS provides to
programmers)
– CPU management
– Memory management
– I/O management (emphasis: Disk)
• Cross-cutting design considerations and techniques
– Quality-of-service/fairness, monitoring, accounting, caching, software
design methodology, security and isolation
• Advanced topics
– Distributed systems
– Data centers, multi-media systems, real-time systems,
virtual machines
Next Time
• Background on Computer Architecture