Operating System Lab
Course Description
Operating systems play key role in computer design and its infrastructure. All computer students must involve OS details to understand underlying structure and architecture of the common operating systems. OS lab provides a series of experiences which can help to perceive key concepts of operating systems and to be familiar how they work. In this course we focus on open source operating systems like UBUNTU to come up with each part of operating systems. We do not aim to teach Linux, however; to accomplish OS labs we should be familiar with Linux commands and structure. So, in the preliminary sessions, we try our best to review Linux commands and facilities for the current lab. Then, we prepare the required environment and initiate specific experiments.
Grading & policy
Download Grade List of Spring 2015 (Last Update: May 30)
Lab Exercises = 100 points
Final/Project = 100 points
Class Activities = +10 Points
Topics & Scheduling
The Main Experiments
Introduction
Terminal & g++ (PDF) (Ubunto Command)
Standard Shell & Scripting (PDF)
Introduction to Kernels (PDF) (History) (Linux Kernel Archives)
User Mode & libc (PDF)
System Calls (PDF)
Signal, Ptrace, and Fork (PDF) (Playing with Ptrace)
File System (PDF)
Memory Management (PDF)
Process Control (PDF) (Linux Process)
Handling Synchronization (PDF)
Virtual Memory (PDF)
Sysfs and kobjects (PDF)
Programming Projects
Rules:
All programs must be delivered in C++.
All programs must be compiled in Ubuntu under g++.
Team-working is acceptable with 2 or 3 members.
Repetitive title is not acceptable.
List of Final Projects
Program For Implementation of System Calls. (Kaveh Mohamadi & Parhizi)
Program For File Permissions. (Mohammadrezaei & Shahi)
Program For File Operations. (Afshin Hasani & Bidarian)
Program For File Copy and Move. (Amir Javaherdashti)
Program For Dining Philosophers Problem. (Poorhasan & Bakhtiari)
Program For Producer – Consumer Problem concept. (Emamgholi & Jazmi & Rahnama)
Program For File Encryption (Panahi & Keshtkar)
Program For Implementation of User & System Mode (Nikmard & Daneshdoost)
Program For Highest Response Ration Next (HRRN) Algorithm. (Sadeghipoor & Amirizad)
Program For Implementation of Priority Queue. (Sajedi & Hasanzade & Saleh & Mirsayar)
Program for Implementation of Look-Ahead Buffer (Moradi & Saadat)
Program For Feedback (FB) Algorithm. (Rezaei & Noushi)
Program For Shortest Job First Scheduling Algorithm. (Khademi & Golrokh)
Program For Round Robin Scheduling Method. (Shadorvan & Hakimi)
Program For Priority Scheduling Algorithm. (Khademinejad & Baziari)
Program For Avoiding Deadlock (Banker Algorithm). (Rouhi & Shabani)
Program For Virtual Memory Management (Hajishafiha & Sadeghi)
Program For Implementation of Buddy Algorithm (Abbasi & Mahboobi & Tavakoli)
Program for Virtualization (Code Translation) (Khoshrouz & Seyednejad & Bordbar)
Program for Avoiding Starvation (Mobasher & Lohrasbi & Sabzali)
Program for Real-Time Scheduling (Dousti & Sharif & Mohamadkhani)
Program for I/O Management (Daravi & Mahdinia)
Program For Implementation of Worst-Fit Algorithm (Raad&Taheri&Mahmoodzadeh)
Utilizing Threads using Nachos Operating System (Marzieh Khodaparast)
Multiprogramming using Nachos Operating System (Fasih&Khoshkam&Ahmadzadeh)
Caching and Virtual Memory using Nachos Operating System (Razmjooy & Amirnejad & Ojaghi)
Program for Implementation of Mutual Exclusion (Esmaeilifard & Sharif & Hatefi & Feizollahzadeh)
Program for Wait & Signal (Farzaneh jahanpoor & Maryam Hadipour)
Program for Address Translation (physical to logical) (Farmanbar & Yoosefi)
Textbooks and Other Resources
Main References:
Running Linux by Matthias Kalle Dalheimer and Matt Welsh, O'Reilly Media, Inc, 2002.
Linux Programming Unleashed (2nd Edition) by Kurt Wall and Mark Watson, SAMA Publishers Inc, 1999.