Syllabus
Introduction to Operating Systems
Theory Classes: Tuesday – Thursday 3.00 pm – 4.50 pm
Practice Classes: Thursday 7.30 pm – 9.30 pm
Location: Ford Hall 342
Instructor: Dr. Şadi Evren ŞEKER (Office: Ford Hall 252)
Office Hours
- Wednesday, 3.00 – 5.00 PM
- Other times by appointment/as available
- Lunch meetings available by request for small groups
E-Mail: opsys2016@sadievrenseker.com
Web Site: http://sadievrenseker.com/wp/?page_id=634
YouTube : will appear soon (after each class I will try to shoot youtube videos (not a promise, I will do my best))
YouTube Play List 2 (For Lab) : https://www.youtube.com/watch?v=IUN4LXIt-UU&list=PLi9cmuYNBBKZrr8rS4KyyPr6Dg-JMMeSf
Introduction: This course examines the important problems in operating system design and implementation. The operating system provides an established, convenient, and efficient interface between user programs and the bare hardware of the computer on which they run. The operating system is responsible for sharing resources (e.g., disks, networks, and processors), providing common services needed by many different programs (e.g., file service, the ability to start or stop processes, and access to the printer), and protecting individual programs from interfering with one another. The course will start with a brief historical perspective of the evolution of operating systems over the last fifty years and then cover the major components of most operating systems. This discussion will cover the tradeoffs that can be made between performance and functionality during the design and implementation of an operating system. Particular emphasis will be given to three major OS subsystems: process management (processes, threads, CPU scheduling, synchronization, and deadlock), memory management (segmentation, paging, swapping), and file systems; and on operating system support for distributed systems.
Outcomes of the Course
Possible outcomes expected from the course:
- Understand the architecture and major components of an operating system .
- Understanding the concurrent programming.
- Understanding Inter process communication and message passing .
- Understanding the memory management and paging/segmentation concepts
- Understanding the disk management, file systems and virtual memory/swapping concepts.
- Gaining advanced programming skills in low level programming, concurrent programming and modular programming.
- Gaining the knowledge of linux operating systems and adding new functions to its kernel.
Textbooks
- TEXTBOOK 1:Peterson and Silberschatz, Operating System Concepts
- TEXTBOOK 2:Tanenbaum, Operating Systems: Design and Implementation
GRADING
- 30 % Final exam
- 20 % Projects
- 20% Homeworks
- 20 % Midterms (10 % each)
- 10 % Lab Final
Tentative Course Outline
Chapter | Powerpoint | LABS | Assignments |
Part 1: Overview [PPT for Overview and Syllabus] (Sept, 8) | |||
1. Introduction (Sept, 13) | |||
2. Operating-System Structures
(Sept 15)
|
–Introduction to UNIX – UNIX Operating System Architecture –Linux Operating System –Users, Groups and Permissions – Examining Permissions–Linux Installation and Virtual Machines–UNIX Commands , Shell Commands – File System Management – File Management and ViewingProcess monitoring (top and ps commands) |
Assignment 1 : Basic Linux Commands (Due Date : Sept 22 2016) | |
Part 2: Process Management | |||
3. Processes (Sept 20) | Coding: Fork | Assignment 2: Process Tree (Check Announcements) | |
4. Threads (Sept 22, 27) | |||
5. Process Synchronization
(Sept 29) |
Coding: Pthreads library Code Samples from LAB #2 : Java Threads Producer/Consumer PThread C Coding for ProducerConsumer |
Assignment 3: Synchronisation (Check Announcements) | |
6. CPU Scheduling (Oct, 4, Oct 6) | Project Details, Scheduling Samples | Assignment 4: Scheduling Analogy (Check Announcements) | |
Midterm 1 (Solutions will be done at Lab Hours) (Oct 13 ) (Due Date: Oct 15, Saturday until midnight) (Sleeping Barbers Solution done in the class) | |||
7. Deadlocks
(Oct, 13) |
Network Programming and binding sockets | ||
Part 3: Memory Management | |||
8. Main Memory
(Oct 18, Oct 20) |
Coding: Procfs
Linux Kernel Hacking How To Coding: Adding a new Kernel Function |
||
9. Virtual Memory
(Oct 25) |
Memory management Simulation | ||
Review of Memory Management (Oct, 27) | |||
Part 4: Storage Management (Nov, 1) | |||
10. Mass-Storage Structure (Oct 27) |
No Class at Oct 29, OT Day | ||
11. File-System Interface
(Nov 8) |
|||
12. File-System Implementation (Nov 10) |
Client Side implementation of projects and sample codes. Requester.java
Updated client-side code with Auto port jump (Server and Client parts) |
||
13. I/O Systems (Nov 15) |
Procfs slides,
Due Date of Project Phase #1 (Nov 15), Grading: 7% |
Assignment #5 | |
14. Review of Memory Management and Storage Management (Nov 17)
Midterm 2 (Solutions will be done at Lab Hours) |
|||
Part 5: Protection and Security | |||
Midterm Solutions (Nov 22) |
|||
No Class (Thanksgiving, Nov 24) | |||
15. Protection
(Nov 29) |
|||
16. Security (Dec 1) |
Command Line Interface for The file System and lab final | ||
Part 6: Advanced Topics | |||
17. Virtual Machines (Dec 6) | Security and Protection Lab | ||
18. Distributed Systems (Dec 8) | Due Date of Assignment #5 (Dec 7)
|
updated version of server/requester project | |
Part 7: Case Studies | |||
19. Linux (Dec 13) |
Due Date of Project Phase #2 (Dec 8), Grading: 7%
Solution of Assignment #5 |
||
Lab Final (click to download) (Due Date: Dec, 15)
Submission of Final Phase of Projects (Due Date : Dec, 15), Grading : 6% Self Scheduled Final Exam |
Announcements
Please fill the knowledge card and send it back via e-mail. You can access the knowledge card from this link.
Lab Assignment 1 (Due Date : Sept 22 2016) , Basic Linux Commands
Assignment #2 (Due Date : Oct 3, Monday), Process Creation and Message Passing by Files. The deadline of assignment 2 will be extended for 2 more days and it will be at oct 5. Also we will cover some topics about the assignment on the class at Oct 4 Tuesday. Anybody submitted on time will get a 10% bonus (so you can get 110 points from the assignment). You can also resubmit your assignment, but only the last submission will be considered.
Solution to Assignment #2 (click to download the files)
Assignment #3 (Due Date: Oct 14, Friday), Process Synchronisation (Sleeping Barbers)
Assignment #4 (Due Date: Oct 24, Friday) CPU Scheduling Simulation
Solution to Assignment #4 (just for SJF Preemptive versions, as written in the lab)
Assignment #5 (Due Date: Dec 7, Wednesday) Proc File System
Term Projects :
- Please form a project group of 4 people. Your project will be assigned and explained in the next class ( Oct, 4, Tuesday) (Project Topic: A Multithreaded Web Server with an Administrative Shell)
- The sample web server code, as explained in the lab session (Oct, 25)
- Project Specifications are available in here, please click to download.
GRADES: click for your grades.(updated midterm 2)
Updated Lab Final (Due Date: Dec 19 ), move command is canceled, Added a run and test scenario for the implementation.