CSCI-UA.0202-001 Operating Systems
Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit
CSCI-UA.0202-001 Operating Systems
Description
This is an introductory course in operating systems (OS), focusing on the high-level design of key OS concepts such as process scheduling and synchronization; deadlocks and their prevention; I/O and ile systems; memory management, including (demand) paging and segmentation; and security and protection, using Linux as an example.
Programming assignments (“labs”) constitute a crucial component of this course. They are based on the C programming language in the Linux environment, and you may ind them signiicantly more challenging than what you have done in previous courses. There are four labs. Each lab (barring the irst warm-up lab) is approximately 600 lines of code and requires at least 20–30 hours of coding and debugging, so proper time management is of utmost importance. There will not be kernel hacking labs. Instead, you will write practical, user-level programs to deal with real-world OS-related issues and better understand key OS concepts through the labs.
My goal is not only to teach OS but also to help everyone understand how computers work under the hood so that you can write more eficient code and become a better computer scientist/software engineer after taking this course.
Got stuck?
First of all, don’t be shy to ask any questions – my door is always open.
We (the instructor and the course tutor) are happy and even eager to help on the labs. When should you ask for such help? Mainly, you should use your judgment (the rough answer is: “when you’re actually stuck”). Below are some guidelines.
First, one of the main purposes of the labs is for you to go through the exercise of iguring out how to make a system work. Thus, if a lab is at irst confusing even in its instructions, please don’t be discouraged;
understanding the instructions is part of the work of the labs! Similarly, if your code is failing a test, note that our job is not to help your code to pass but to help you to igure out how to solve the problem.
Labs in this course will be challenging. We hope they will also be very satisfying. We will work to help you meet the challenge. Our hope and expectation is that everyone who works hard on the labs will succeed. If you have ideas for improving the labs, please let us know. Good luck!
Textbook
Required textbook
Operating System Concepts, 10th Edition, by Avi Silberschatz,
Peter Baer Galvin, and Greg Gagne. I recommend getting the e-book since that makes searching and cross-reference much easier. If getting the textbook places a inancial hardship on you, you can ind a hard copy at the Bobst library or read the 8th edition for free through O’Reilly Online Learning.
Optional textbooks
Modern Operating Systems, 4th Edition, by Andrew S. Tanenbaum and Herbert Bos. It’s also on reserve at the library. Operating Systems: Three Easy Pieces, by Remzi H. Arpaci- Dusseau and Andrea C. Arpaci-Dusseau. The e-book is free. Computer Systems: A Programmer’s Perspective, 3rd Edition, by
Randal E. Bryant and David R. O’Hallaron. It’s also on reserve at the library.
Programming reference books
The C Programming Language, 2nd Edition, by Brian W. Kernighan
and Dennis M. Ritchie. Available for free through O’Reilly Online Learning.
Advanced Programming in the UNIX® Environment, 3rd Edition, by
W. Richard Stevens and Stephen A. Rago. Available for free through O’Reilly Online Learning.
2022-09-09