⟶Lecture Notes
Monday 1:30 pm @B501
Basic C and systems programming skills are required:
- BIL 121 C Programming,
- BIL 222 System Programming in Linux,
- BIL 201 Data Structure and Algorithms
- you are expected to have prior system programming experience in Linux with C and basic understanding of data structure and algorithms.
This course introduces students to the concepts of operating systems and provides them with a solid understanding of what operating systems are and what they do and their principles. This course puts particular emphasis on concurrency and synchronization tools and their implementations. During the semester, in addition to weekly lectures and lab sessions, there will be programming assignments (mostly in Linux) and in class quizzes. It is crucial for you to follow weekly lectures to learn the material and complete the assignments.
Textbooks and Course Material
Weekly topics and lecture notes
- Chapter 1: Introduction ⟶1intro.pdf
- Chapter 2: Operating System Services-structures-linkers/loaders ⟶2services-structs.pdf
- Chapter 3: Processes ⟶3processes.pdf
- Chapter 4: Threads & Concurrency ⟶4concurrency-threads.pdf
- Chapter 5: CPU Scheduling ⟶5cpu-scheduling.pdf
- Intro to Synchronization: Peterson solution, spin-locks, atomic instructions, memory barriers (e.g., mb, fence, volatile), C11 atomic library (relaxed, acquire, release)
⟶6synchronization-intro.pdf
- Midterm exam
- Synchronization II (implementation of locks, low level locks: disabling interrupts and spin-locks, improving spinlock efficiency, lock free programming, cache coherency, deadlock, transactional memory)
⟶7synchronization-II.pdf
- Synchronization review
⟶8synchronization-review.pdf
- Chapter 9: Main Memory
⟶9vm-hw.pdf
- Chapter 10: Virtual Memory
⟶10vm-os.pdf
- Chapter 11-12: I/O Systems
⟶11io-systems.pdf
- Disk and storage
⟶12disk-io.pdf
- Chapter 13-14-15: File-System Interface, Implementation, and Internals
⟶13file-systems.pdf
- Protection, Security
⟶14protection-security.pdf
Homeworks and exams
- Assigned via classroom.google.com
- 4-5 HWs: includes programming assignments that may require compiling and configuring Linux-kernel, adding system calls to kernel that reads kernel structures and copies this info to user programs, changing kernel parameters or programs, adding new modules, /proc file system, and device drivers
- No late submission
- Submissions through classroom.google.com
- 1-midterm
- 1-final
Grading
- 30% homework
- 30% midterm exam
- 40% final exam
Discussions
For the assignment submission/grading and discussions, we will use https://classroom.google.com and for public discussions, we will use https://piazza.com for this course. In discussions and questions:
- Do not post solutions or any significant part of an assignment.
- Do not post anything not related to the course.
- Ask a question when you would like some help with something
- Post something when you would like to help others with something.
Collaboration and Cheating Policy
- Any kind of plagiarism and cheating are prohibited (Please, refer to the university cheating policy).
- If you benefit from some work of others, list them as references (online references or books)
- Discussing the assignments or projects with your friends is allowed; but, all the submitted work should be yours alone. List your collaborators (if you discuss your homework with your friends) in your assignments.