Download Course Introduction - Washington University in St. Louis

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

RSTS/E wikipedia , lookup

CP/M wikipedia , lookup

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

DNIX wikipedia , lookup

Linux kernel wikipedia , lookup

Smallfoot wikipedia , lookup

Distributed operating system wikipedia , lookup

Kernel (operating system) wikipedia , lookup

Security-focused operating system wikipedia , lookup

Transcript
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