CS5460/6460: Operating Systems Lecture 1:...
Transcript of CS5460/6460: Operating Systems Lecture 1:...
![Page 1: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/1.jpg)
CS5460/6460: Operating Systems
Lecture 1: Introduction
Anton BurtsevJanuary, 2014
![Page 2: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/2.jpg)
Class details
● Mixed undergraduate and graduate● 125 people (waiting list: 8 students)
● Instructor: Anton Burtsev● 4 TAs
● Saurav Singh, Sriraam Appusamy Subramanian● Scotty Bauer, Sarah Spall
● Web page● http://www.cs.utah.edu/~aburtsev/cs5460
![Page 3: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/3.jpg)
This course
● Based on ● MIT 6.828: Operating System Engineering
http://pdos.csail.mit.edu/6.828/2012/overview.html
● We will use xv6● Relatively simple (9K lines of code)● Reasonably complete UNIX kernel● http://pdos.csail.mit.edu/6.828/2012/xv6/xv6-rev7.pdf
● xv6 comes with a book● http://pdos.csail.mit.edu/6.828/2012/xv6/book-rev7.pdf
![Page 4: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/4.jpg)
Course organization
● Lectures● High level concepts and abstractions
● Reading● Xv6 book + source code
● Labs● Coding real parts of the xv6 kernel
● Design riddles● Understanding tradeoffs, explaining parts of xv6
![Page 5: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/5.jpg)
Prerequisites
● Solid C coding skills● Xv6 is written in C● You need to read, code and debug● All labs are in C● Many questions about explaining xv6 code
● Be able to code in Linux● Some assembly skills
![Page 6: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/6.jpg)
What is an operating system?
![Page 7: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/7.jpg)
● Want to run your code on a piece of hardware
● GCC + some linking magic● Crashes....
● Read manual● Code a tiny boot layer
● Initialize CPU, memory● Jump to your code
● This is your OS!
![Page 8: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/8.jpg)
● Want to print out a string● On the screen or serial line
![Page 9: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/9.jpg)
● Implement a general function!● First device driver
![Page 10: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/10.jpg)
Device drivers
● Abstract hardware● Provide high-level interface● Hide minor differences● Implement some optimizations
– Batch requests
● Examples● Console, disk, network interface● ...virtually any hardware you know
![Page 11: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/11.jpg)
● Want to run two programs
● What does it mean?● Only one CPU
● Run one, then run another one
![Page 12: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/12.jpg)
● Want to run two programs
● Exit into the kernel periodically
● Context switch● Save and restore
context● Essentially registers
![Page 13: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/13.jpg)
● What! Two programs in one memory?
● Am I cheating with the linker?
![Page 14: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/14.jpg)
Virtual address spaces
● Illusion of a private memory for each application● Keep a description of an address space● In one of the registers
● All normal program addresses are inside the address space
● OS maintains description of address spaces● Switches between them
![Page 15: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/15.jpg)
● What if one program fails to release the CPU?● It run forever. Need a way to preempt it. How?
![Page 16: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/16.jpg)
Scheduling
● Pick which application to run next● And for how long
● Illusion of a private CPU for each task● Frequent context switching
![Page 17: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/17.jpg)
● What if one program corrupts the kernel? Or other programs?
![Page 18: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/18.jpg)
Isolation
● Today is done with address spaces in hardware● Many issues, e.g. shared device drivers, files, etc.
● Can it be done in software?
![Page 19: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/19.jpg)
● What about communication? ● Can we invoke a function in a kernel?
![Page 20: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/20.jpg)
● What if you want to save some data? ● Permanent storage
● E.g., disks
● But disks are just arrays of blocks● wrtie(block_number, block_data)
● Files● High level abstraction for saving data● fd = open(“contacts.txt”);● fpritnf(fd, “Name:%s\n”, name);
![Page 21: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/21.jpg)
● What if you want to send data over the network?
● Network interfaces● Send/receive Ethernet packets (Level 2)● Two low level
● Sockets● High level abstraction for sending data
![Page 22: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/22.jpg)
● Linux/Windows/Mac
![Page 23: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/23.jpg)
Multiple levels of abstraction● Multiple programs
● Each has illusion of a private memory and CPU● Context switching, scheduling, isolation,
communication
● File systems● Multiple files, concurrent I/O requests● Consistency, caching
● Network protocols● Multiple virtual network connections
● Memory management
![Page 24: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/24.jpg)
● Want to run a Windows application on Linux?
![Page 25: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/25.jpg)
What is the problem?
● Hardware is not designed to be multiplexed
● Loss of isolation
![Page 26: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/26.jpg)
Virtual machine
Efficient duplicate of a real machine● Compatibility● Performance● Isolation
![Page 27: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/27.jpg)
Virtual machine
Efficient duplicate of a real machine● Compatibility● Performance● Isolation
![Page 28: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/28.jpg)
Trap and emulate
![Page 29: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/29.jpg)
What hardware do we have today? ● 8 cores (2 Ghz)
● Each runs two threads
● 64 Gig of RAM● 20MB Level 3 cache
● 10 Gbps network controllers
![Page 30: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/30.jpg)
Intel supports 80 millions of packets per second ● L3 forwarding of 64 byte packets
Lets do the math: ● How many cycles per packet?
● 1/80 000 000 = 1.25e-80 seconds per packet on 1 core
● Or in nanoseconds: ● 12.5 nanoseconds per packet
● Or in cycles (remember 2Ghz, or 2 cycles per nanosecond)● 25 cycles per packet
● But we have 8 cores, so● 25*8 = 200 cycles per packet
![Page 31: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/31.jpg)
Can you allow an OS on the critical path?● Layer 2 → IP → TCP → Sockets → User-level? ● No! You want to run bare metal!
![Page 32: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/32.jpg)
Ok, so what is an operating system?
![Page 33: CS5460/6460: Operating Systems Lecture 1: Introductionaburtsev/cs5460/lectures/lecture01-intro/lecture01-intro.pdfCS5460/6460: Operating Systems Lecture 1: Introduction Anton Burtsev](https://reader033.fdocuments.net/reader033/viewer/2022060320/5f0cec3d7e708231d437cc2b/html5/thumbnails/33.jpg)
References
● Impressive Packet Processing Performance Enables Greater Workload Consolidation. Intel. http://www.intel.com/content/dam/www/public/us/en/documents/solution-briefs/communications-packet-processing-brief.pdf
● Intel Data Plane Development Kit (Intel DPDK)
http://www.intel.com/content/dam/www/public/us/en/documents/presentation/dpdk-packet-processing-ia-overview-presentation.pdf