* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Course Introduction - Washington University in St. Louis
Plan 9 from Bell Labs wikipedia , lookup
Mobile operating system wikipedia , lookup
Berkeley Software Distribution wikipedia , lookup
Linux adoption wikipedia , lookup
Process management (computing) wikipedia , lookup
Unix security wikipedia , lookup
Spring (operating system) wikipedia , lookup
Linux kernel wikipedia , lookup
Distributed operating system wikipedia , lookup
E81 CSE 522S Advanced Operating Systems Fall 2016 Course Introduction Department of Computer Science and Engineering Washington University, St. Louis MO Instructor: Chris Gill [email protected] Teaching Assistant: James Orr [email protected] Thanks to David Ferry, who developed and taught the first edition of this course in the spring semester of 2016 1 Three Goals for Students The goals of this course are for students to develop: 1. Good intuition about OS operation and design principles – OS mechanisms: syscalls, interrupts, processes, process scheduling, process synchronization, inter-process communication 2. Skills for monitoring the runtime operation of an OS – – – Tracers: ftrace (trace-cmd and kernelshark), strace User space benchmarking The scientific method (hypothesis, prediction, experiment, analysis, repeat) 3. Hands-on experience modifying and evaluating an OS – – – Source-code intensive course based on Linux You’ll be asked to modify and evaluate the OS kernel in different ways Course project will involve (requires) a substantial modification E81 CSE 522S - Advanced Operating Systems 2 Course Motivation For an increasing number of computer applications, general purpose operating systems are important but perhaps not enough, e.g.: – – – – Real-time Systems Embedded Systems Cyber-physical Systems High-speed Networking Migration away from monolithic platform designs, e.g.: – – Automotive systems Digital control systems Many graduate students are doing research that modifies (or at least heavily depends on) details of the kernel E81 CSE 522S - Advanced Operating Systems 3 Topics (an Overview) Linux is too large for us to cover everything! This course focuses on OS features that affect process semantics, e.g.: – Scheduling – Inter-process communication – Timing behavior [see the course website for specifics] This course doesn’t (currently) cover: – – – – – Device drivers File systems Networking Memory management … [and the list goes on] E81 CSE 522S - Advanced Operating Systems 4 Course Environment • Our OS of choice is the Linux kernel – – – • Open source, widely deployed Practical for both research and applied use Helps to develop a broadly applicable skill set This course is designed around the Raspberry Pi 3 – Avoids modifying the kernel on machines others may need to use • – Reasonably fast, provides interesting multi-core behavior, affordable • – • “Personal computing” at its best Each Raspberry Pi 3 has 1.2GHz 64-bit quad-core ARMv8 for $75 (with CanaKit) Useful, and used elsewhere in WUSTL CSE research and education The Raspberry Pi family is based on the ARM processor architecture – – The OS has lots of processor-dependent code Will try to provide pointers to x86 references as well, as we go E81 CSE 522S - Advanced Operating Systems 5 Course Format • • • • Class time will be split between lecture and studios. There will be two lab assignments in the first 8 weeks of class There will be a course project in the last 6 weeks of class We will have midterm and semester (comprehensive) exams E81 CSE 522S - Advanced Operating Systems 6 Class Readings Course textbook: Linux Kernel Development, 3rd Ed., by Robert Love, 2010. – – – – A great starting resource for kernel hackers Other class readings are relatively current documents about the Linux kernel Plan to look at a lot of source code in your “spare” time Course website provides a number of free/online references Google is your friend – Linux is widely documented (but documentation often is not current) – Lots of resources exist for individual directories, files, and even functions E81 CSE 522S - Advanced Operating Systems 7 Words of Advice • Kernel hacking requires a lot of patience and thought – – kernel compile times often exceed an hour! Spend more time thinking before debugging, designing, writing, compiling, etc. • • • • Work efficiently but persistently – – – • Use the DD (Debuggen von Denken) debugger (as Thomas Gleixner once suggested) Anticipate and learn to spot PEBCAK (problem exists between chair and keyboard) errors Don’t underestimate the power of using pencil and paper before you start typing Huge established codebase to digest – break it down into manageable bites Our goal is for the time spent “hands-on” to be similar to that in other courses Start early, fail (or succeed) quickly, iterate rapidly, progress steadily over time A few initial tips (to avoid problems we’ve seen already) – – Always plug in the (micro-USB) power connection last (after all other cables) Make sure your keyboard is configured correctly after the system first boots up E81 CSE 522S - Advanced Operating Systems 8 This is a Relatively New Course for Us Your instructor and TA may know less than you might think! – – There are too many specifics in the kernel to know everything initially But we’re happy to talk about anything and keep learning on-the-job Hopefully this course: – Isn’t too hard or too easy for anyone enrolled in it – Builds on basic OS understanding (CSE 422 and C programming are prerequisites) – Works for people whose knowledge of Linux ranges from basic to advanced We welcome comments and suggestions about topics and pacing Please come talk to us if you have any questions or comments E81 CSE 522S - Advanced Operating Systems 9