SE 317 - Operating Systems מערכות הפעלה

Semester 1 5777

Topics     Reading     Assignments  Grading     Lectures     Policies

Time: Wednesdays 09:00 - 12:00 in Room 815 in Bet Achi
Targil: Wednesdays 14:00 - 16:00 in Room 817 in Bet Achi


    Michael J. May
      e-mail: mjmay (AT) kinneret;ac;il     

The full detailed syllabus for the course is available here.

Reminder: Assignment 2 is out, due 5 Feb 2017.  Do it and submit it on GitHub.


This is an introductory course to modern operating systems.  Topics include process synchronization and interprocess communication, processor scheduling, memory management, virtual memory, interrupt handling, device management, I/O, and file systems.  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.


The following books contains useful course material, and much of the lecture content is derived from them (and other sources). Copies of these books are on reserve in the Kinneret Library.

  • 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.
Supplementary books, papers, and web sites for other reading selections will be announced in class.

Programming Assignments:

Assignment 1: Processes. Due: 18 December 2016.
Assignment 2: Shell. Due: 5 Feb 2017

Submit all work via GitHub.

Grading Criteria

  • 40%   Programming Assignments
  • 60%   Final Exam

Lecture Slides and Notes


9 Nov
Introduction to Operating Systems
16 Nov
Virtual Machines, OS History
23 Nov
4 OS Fundamental Concepts
Introduction to the Process
30 Nov
Kernel Stack, Fork, I/O Intro
7 Dec
I/O Basics: Files, Streams, Sockets
Concurrency: Processes and Threads
14 Dec
Concurrency: Processes and Threads
21 Dec
Cooperating Threads, Synchronization
28 Dec
Mutual Exclusion, Lock Implementation
Semaphores, Condition Variables
4 Jan 2017
Synchronization 2, Scheduling Intro
11 Jan
Advanced Scheduling
18 Jan
Scheduling Case Studies, Real Time Scheduling
25 Jan
Deadlock, Address Translation
Virtual Memory Address Translation
1 Feb
Address Translation
Virtual Memory Address Translation

22 Feb 2017
Final Exam A :00 to :00 in Room TBA

13 Mar 2017
Final Exam B :00 to :00 in Room TBA

Note that the lecture schedule is likely to change during the course of the semester as we choose to focus on different topics over the course of the semester.  Check back often for updates.

Academic Integrity

This course will abide by Kinneret College's code of academic integrity.  In particular, for individual projects and group projects, the following guidelines should be followed:
  • For individual projects, you must type in and edit your own code, documentation, and any other materials submitted for grading.
    • Copying someone else's file is not allowed.
    • Allowing someone else to copy a file of yours, either explicitly or implicitly by leaving your code unprotected, is not allowed.
    • Editing each other's files is not allowed
  • Regarding the ethics of what you may or may not discuss with others:
    • "High level" discussions are fine.
      For example, discussions about the problem statement.
    • "Low level" discussions are fine.
      For example, discussions about C# syntax or using Visual Studio, understanding compiler error messages, understanding the mechanics of the tools and libraries used for the projects.
    • "Mid level" discussions require discretion. In this course, discussions at this level must be limited.  Unless explicitly stated otherwise, you may not collaborate significantly with classmates (except group project members) at this level.  If you have minor discussions with others at this level or get help from outside resources (tutors, web sites, etc), you must cite at the top of the submitted projects the names of the people or websites who helped you and how they did. For example:
      * Binyamin Cohen
      * Project 1
      * 5/6/2008
      * I received tips from Jo Johnson on the i/o and on memory
  • If there is any doubt about the use of external sources or collaboration, please ask for clarification by the course staff.