SE 317: Operating Systems מערכות הפעלה
Course, Kinneret College on the Sea of Galilee, Software Engineering, 2025
Semester 1, 5786
Course Details
- Lecture: Sunday 1:00pm-4:00pm in Room 801
- Targil: Wednesday 8:00am-10:00am and 10:00am-12:00pm in Room 6201
- Instructor: Michael J. May
- Email: mjmay (at) mx,kinneret,ac,il
- Metargel: Avi Zion
The full detailed syllabus of the course is available here.
Topics:
This is an introductory course to modern operating systems. Topics include process synchronization and interprocess communication, processor scheduling, memory management, virtual memory, signal handling, device management, I/O, and file systems (time permitting). The course recitations and homework will include a hands-on study of the Linux operating system design and kernel internals, including work with virtual Linux environments. The course will include experience with commercial virtualization tools and open source software.
Course Goals:
At the end of the course the student will be able to:
- Write command line programs in C for standard Linux virtual machines which use standard system calls (ex.
fork()andnice()), low-level I/O (ex.open(), file descriptors), and stream-level I/O (ex.fopen(),FILE*). - Write a Makefile and use it to compile C programs using
makeandgcc. - Use the GNU debugger
gdbto debug command line applications in Linux, including multi-process and multi-threaded ones. - Manage source code repositories using
gitand Github. - Explain the basics of OS protection mechanisms and structures (i.e. process, thread, memory address space, virtual memory).
- Use the PThreads library to write C programs which use user level threads, semaphores, and condition variables.
- Explain the fundamentals of mutual exclusion and deadlock detection and prevention.
- Explain the fundamentals of process and thread scheduling and how the mechanisms used in the O(1) Scheduler and the Linux Completely Fair Scheduler (CFS) work.
- Explain the operation of memory management techniques: segments, pages, multi-level page table, inverted page table.
- Explain the operation of file systems (FAT, NTFS, FFS) and fundamental data structured related to them (inode, MFT).
Reading
The following books are used in the class:
- Thomas Anderson and Michael Dahlin. Operating Systems: Principles and Practice. Recursive Books, 2nd edition, 2014.
- Robert Love. Linux Kernel Development. Addison-Wesley Professional, 3rd edition, 2010.
- William Stallings. Operating Systems: Internals and Design Principles. Prentice Hall, 8th edition, 2015.
The library has copies of the books listed, but students are encouraged to purchase the books as needed.
Assignments
There will be six assignments during the course of the semester, three with programming and three with interactive labs.
Programming assignments can be done alone or in groups of two (2) students. Theory assignments must be done singly.
Theory Assignment 1 (12%): Executables with objdump and gdb (must be done singly on Moodle). Due: 11 Nov 2025.
Programming Assignment 2 (12%): Addresses, Segments, and Syscalls [Part1] [Part2]. Due: 20 Nov 2025
Programming Assignment 2 (12%): Shell. Due: 22 December 2025
Programming Assignment 3 (12%): Mutex and Threads. Due: 13 Jan 2026
Interactive Lab 1 (8%): Mutex and Condition Variables. Due: 15 Jan 2026
Interactive Lab 2 (8%): Scheduler Simulator . Due: 19 Jan 2026
Interactive Lab 2 (8%): Memory Management. Due: 25 Jan 2026
Assignments are on Moodle. More details of assignments will be given during the course of the semester.
Grading Criteria
Final grades will be calculated by combining grades from assignments and quizzes. The final grades will be calculated as follows:
- 60% Assignments (required)
- 20% Recitation exercises (required)
- 20% In class quizzes (required)
Lecture Slides and Notes
| # | Date | Topic | Slides |
|---|---|---|---|
| 1 | 26 Oct | Introduction, OS Overview | |
| 2 | 2 Nov | OS History, Virtual Machines, 4 OS Fundamental Concepts | |
| 3 | 9 Nov | 4 Fundamental Concepts, Base and Bound Memory Protection | |
| 4 | 16 Nov | Interrupts, Introduction to scheduler, PCB, SMT, Fork | |
| 5 | 23 Nov | Signals and Process Control, I/O High and Low, Drivers, Sockets | |
| 6 | 30 Nov | Concurrency: Processes and Threads, Switching | |
| 7 | 7 Dec | Cooperating Threads, Synchronization, Mutual Exclusion, Semaphores | |
| 8 | 14 Dec | Condition Variables and Monitors, Barrier Synchronization, Readers/Writers, Monitors and High Level Languages | |
| 9 | 28 Dec | Scheduling Algorithms, Scheduling Case Studies | |
| 10 | 4 Jan 2026 | Starvation, Deadlock, Memory Management and Translation, Segments | |
| 11 | 11 Jan | Segments and Paging | |
| 12 | 18 Jan | File Systems, Very simple file system, FAT | |
| 13 | 25 Jan | FFS, NTFS | pdf1 |
| Caching, TLB, Demand Paging | pdf2 |
Academic Integrity
Cheating of any sort will not be tolerated. Student collaboration is encouraged, but within limits as set forth in the college’s rules on academic integrity. Any students caught cheating will be immediately referred to the department head and the Dean and may receive a failing grade for the course.
Cheating includes:
- Copying information, content, or verbatim text from other students, internet sites, books (other than the ones listed in the bibliography), other unaffiliated individuals to answer questions, solve problems, or aid in programming projects.
- Copying or submitting source code, documentation, or other programming aids without attribution from other students, web sites, online repositories, text books, open source programs, or other unaffiliated individuals.
- Project teams which submit work which is identical or substantially identical to work submitted by other project teams, whether current or from previous years.
- Other forms of academic misconduct as described at this link or as reasonably assessed by the instructor, program head, or dean.
If you have any questions about what constitutes cheating in the above rules, contact the instructor as early as possible.
