EECS 482 Introduction to Operating Systems
Transcript of EECS 482 Introduction to Operating Systems
![Page 1: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/1.jpg)
EECS 482Introduction to Operating
Systems
Winter 2018
Harsha V. Madhyastha
![Page 2: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/2.jpg)
About Me● PhD, University of Washington
● Area of Research: Distributed Systems
January 3, 2018 EECS 482 – Lecture 1 2
![Page 3: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/3.jpg)
Acknowledgments
● Peter Chen
● Jason Flinn
● Manos Kapritsos
January 3, 2018 EECS 482 – Lecture 1 3
![Page 4: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/4.jpg)
Agenda for Today
● Why do we need 482?
● Course syllabus and logistics
● Why do we need an OS and what does it do?
● How did OSes evolve to what we have today?
January 3, 2018 EECS 482 – Lecture 1 4
![Page 5: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/5.jpg)
482 in EECS Curriculum
January 3, 2018 EECS 482 – Lecture 1 5
Ideas
High-Level Code
Machine Instructions
Processors
Gates
EECS 280, 281 (programming)
EECS 483 (compilers)
EECS 370 (comp. organization)
EECS 270 (digital design)
![Page 6: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/6.jpg)
What is missing?● Bootstrap:
◆ How does a computer start when you turn it on?◆ How to get a program into memory and have the CPU start executing it?
● Concurrent execution with I/O:◆ How to read keyboard or mouse? Print output to screen?◆ How to run multiple programs at the same time, without one breaking the other?
● Persistence and security:◆ How to save your data when you turn the computer off?How to prevent other users from accessing your data?
January 3, 2018 EECS 482 – Lecture 1 6
![Page 7: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/7.jpg)
What is missing?● Bootstrap:
◆ How does a computer start when you turn it on?◆ How to get a program into memory and have the CPU start executing it?
● Concurrent execution with I/O:◆ How to read keyboard or mouse? Print output to screen?◆ How to run multiple programs at the same time, without one breaking the other?
● Persistence and security:◆ How to save your data when you turn the computer off?How to prevent other users from accessing your data?
January 3, 2018 EECS 482 – Lecture 1 7
The OS does all of this.
After this semester, you should be able to answer all
of these questions!
![Page 8: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/8.jpg)
January 3, 2018 EECS 482 – Lecture 1 8
Why take an OS class?● Understanding what you use
◆ Understanding the OS helps you write better apps◆ Functionality, performance tuning, simplicity, etc.
● Universal abstractions and optimizations◆ Caching, indirection, naming, atomicity, protection,…◆ Examples: Cloud computing, Web services, mobile
● Mastering concurrency◆ Performance today achieved through parallelism◆ Mastery required to be a top-notch developer
![Page 9: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/9.jpg)
January 3, 2018 EECS 482 – Lecture 1 9
Objectives of this class● We will understand principles of concurrency
◆ One paradigm: multi-threaded program◆ Principles apply to other forms (e.g., event-based)
● We will study design principles of an OS◆ This course is not about specifics of any particular OS
● We will develop an understanding of OS impact on application performance and reliability
![Page 10: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/10.jpg)
January 3, 2018 EECS 482 – Lecture 1 10
Class Material● Class webpage
◆ http://web.eecs.umich.edu/~harshavm/eecs482/◆ Also linked from Canvas
● Syllabus, course calendar, slides, homeworks, and projects will be posted on class webpage
● Subscribe to Piazza◆ Announcements and class discussion
![Page 11: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/11.jpg)
Lecture Schedule
● Cover how OS abstracts H/W resources
● Before mid-term: CPU, memory
● After mid-term: Network, storage
● End with distributed systems and case studies
January 3, 2018 EECS 482 – Lecture 1 11
![Page 12: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/12.jpg)
January 3, 2018 EECS 482 – Lecture 1 12
Lectures
● Lecture videos will be posted online
● Lecture slides on course web page◆ Bring print outs to class
● Textbook (highly recommended):◆ Anderson and Dahlin, “Operating Systems: Principles and Practice”
![Page 13: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/13.jpg)
Discussion Sections
January 3, 2018 EECS 482 – Lecture 1 13
![Page 14: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/14.jpg)
Discussion Sections
● Questions to be discussed will be posted on course web page a week in advance◆ Do them before going to your section◆ Prepares you for exams
● No discussion sections this Friday
January 3, 2018 EECS 482 – Lecture 1 14
![Page 15: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/15.jpg)
Projects● 4 projects
◆ Writing a concurrent program◆ Thread manager◆ Virtual memory pager◆ Multi-threaded secure network file system
● First one individually, others in groups of 2 or 3◆ Register your GitHub ID – we’ll assign repositories◆ Declare your group (by 1/22)◆ Post to Piazza if you don’t know anyone
January 3, 2018 EECS 482 – Lecture 1 15
![Page 16: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/16.jpg)
Projects are HARD!
● Probably the hardest class you will take at UM in terms of development effort◆ Projects will take 95% of your time in this class
● Reason for being hard:◆ Not number of lines of code◆ Instead, new concepts!
January 3, 2018 EECS 482 – Lecture 1 16
![Page 17: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/17.jpg)
Project recommendations
● Choose group members carefully◆ Check schedule, class goals, style, etc.
● We’ll evaluate every member’s contributions◆ Peer feedback◆ git log and github statistics
● Group can fire one of its members (see syllabus)
January 3, 2018 EECS 482 – Lecture 1 17
![Page 18: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/18.jpg)
Project recommendations● Do not start working on projects at last minute!
◆ Projects are autograded◆ No. of hours you put in or lines of code don’t count◆ Testing is integral process of development
● Make good use of help available◆ 20 office hours per week (3x when projects are due)◆ Monitor and participate in discussion on Piazza◆ Hints during lectures, discussions, and textbook
January 3, 2018 EECS 482 – Lecture 1 18
![Page 19: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/19.jpg)
Policies● Submission
◆ 1 submission per day to autograder + 3 bonus◆ Due at midnight (hard deadline!)◆ 3 late days across all projects
● Collaboration◆ Okay to clarify problem or discuss C++ syntax◆ Not okay to discuss solutions◆ Not okay to borrow from past solutions
January 3, 2018 EECS 482 – Lecture 1 19
![Page 20: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/20.jpg)
January 3, 2018 EECS 482 – Lecture 1 20
Exams
● Midterm: February 21st (6:30 – 8:30pm)
● Final: April 23rd (7 – 9pm)
● No makeup exams◆ Unless dire circumstances◆ Make sure you schedule interviews appropriately
![Page 21: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/21.jpg)
January 3, 2018 EECS 482 – Lecture 1 21
Grading breakdown
● Projects:◆ Project 1: 3%◆ Projects 2, 3, and 4: 15% each
● Mid-term and Final: 26% each
![Page 22: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/22.jpg)
Enrollments
● Attend section you are enrolled in◆ Exams may have lecture-specific questions
● Overrides◆ Currently near cap for course staffing
● Talk to me if you are retaking this class
January 3, 2018 EECS 482 – Lecture 1 22
![Page 23: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/23.jpg)
Pro tips for success in 4821. Start early on projects and pick group wisely
2. Leverage github and communicate with team
3. Take advantage of available help◆ Go to office hours, post/monitor questions on Piazza
4. Attend lectures and discussions◆ Read textbook, solve questions before discussion
5. Ask questions when something is unclear
January 3, 2018 EECS 482 – Lecture 1 23
![Page 24: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/24.jpg)
● What if applications ran directly on hardware?
● Problems:◆ Portability◆ Resource sharing
Why have an OS?
January 3, 2018 EECS 482 – Lecture 1 24
Applications
Hardware
![Page 25: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/25.jpg)
● The operating system is the software layer between user applications and the hardware
● OS is “all the code that you don’t have to write”to implement your application
January 3, 2018 EECS 482 – Lecture 1 25
What is an OS?
Operating System
Hardware
ApplicationsVirtual Machine Interface
Physical Machine Interface
![Page 26: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/26.jpg)
January 3, 2018 EECS 482 – Lecture 1 26
Roles of the OS● Illusionist: Create abstractions to ease use of hardware◆ CPU à Threads◆ Memory à Address space
● For any area of OS, ask◆ What interface does hardware present?◆ What interface does OS present to applications?
● Government: Manage shared hardware resources◆ But at a cost (taxes)
![Page 27: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/27.jpg)
OS and Apps: 2 Perspectives● Perspective 1: application is main program
◆ Gets services by calling kernel (OS)◆ Example: Print output to the screen
● Problems with this view:◆ how does application start?◆ how do tasks occurring outside any program (e.g. receiving network packets) get done?
◆ how do multiple programs run simultaneously without messing each other up?
January 3, 2018 EECS 482 – Lecture 1 27
![Page 28: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/28.jpg)
OS and Apps: 2 Perspectives● Perspective 2: OS is main program
◆ Calls applications as subroutines◆ Illusion: every app runs on its own computer
● Lower layer (OS) invokes higher layer (apps)!● App or processor returns control to OS
● Correct perspective, but what is it that makes the OS the “main” program?
January 3, 2018 EECS 482 – Lecture 1 28
![Page 29: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/29.jpg)
History of operating systems● Single operator at console
● Positives:◆ Interactive◆ Very simple
● Downside:◆ Poor utilization of hardware
29EECS 482 – Lecture 1January 3, 2018
time
human I/O CPU I/O human I/O CPU
![Page 30: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/30.jpg)
History of operating systems● Batch processing
◆ Goal: Improve CPU and I/O utilization by removing user interaction
● OS is batch monitor + library of standard services● Protection becomes an issue
◆ Why wasn’t this an issue for single operator at console?
30EECS 482 – Lecture 1January 3, 2018
timeI/O CPU I/O CPU I/O CPU
![Page 31: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/31.jpg)
History of operating systems● Multi-programmed batch
◆ Improve utilization further by overlapping CPU and I/O
● OS becomes more complex◆ Runs multiple processes concurrently, allowing simultaneous CPU and I/O
◆ Multiple I/Os can take place simultaneously◆ Protects processes from each other◆ Still not interactive
31EECS 482 – Lecture 1January 3, 2018
time
P1: CPU I/O
P2: I/O CPU
P3: I/O
![Page 32: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/32.jpg)
History of operating systems● Time sharing
◆ Goal: Allow people to interact with programs as they run◆ Insight: User can be modeled as a (very slow) I/O device◆ Switch between processes while waiting for user
● OS is now even more complicated◆ Lots of simultaneous jobs◆ Multiple sources of new jobs
32EECS 482 – Lecture 1January 3, 2018
time
P1: human CPU I/O
P2: CPU human I/O
P3: I/O CPU
![Page 33: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/33.jpg)
History of operating systems● OS started out very simple● Became complex to use hardware efficiently● Today: Personal computers
◆ Is the main assumption (hardware is expensive) still true?
● How does this affect OS design?◆ PCs don’t need to time share between multiple jobs?◆ PCs don’t need protection between multiple jobs?
● PCs gradually added back time-sharing features
33EECS 482 – Lecture 1January 3, 2018
![Page 34: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/34.jpg)
Looking ahead …
● OSes continue to evolve◆ Cloud: Amazon EC2, Microsoft Azure, …◆ Smartphones: Android, iOS, …
● What are the drivers of OS change?◆ New app requirements◆ New objectives
January 3, 2018 EECS 482 – Lecture 1 34
![Page 35: EECS 482 Introduction to Operating Systems](https://reader031.fdocuments.in/reader031/viewer/2022022714/621a37732150e77f3c0b2006/html5/thumbnails/35.jpg)
Thing to do …
● Browse the course web page
● Subscribe to Piazza● Register GitHub ID● Start finding partners for project group
● No discussion section on Friday
January 3, 2018 EECS 482 – Lecture 1 35