Server : Apache System : Linux profile 3.10.0-1160.88.1.el7.x86_64 #1 SMP Tue Mar 7 15:41:52 UTC 2023 x86_64 User : apache ( 48) PHP Version : 8.0.28 Disable Function : NONE Directory : /var/www/html/bibhas.ghoshal/ |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Operating Systems — Course Page</title>
<style>
body{
font-family: "Times New Roman", Times, serif;
color:#000;
background:#fff;
max-width:900px;
margin:0 auto;
padding:30px 24px 60px;
font-size:15px;
line-height:1.5;
}
h1{
font-size:22px;
font-weight:normal;
margin:0 0 4px;
}
.term{
font-size:14px;
text-decoration:underline;
margin:0 0 4px;
}
.schedule-line{
font-size:13px;
margin:0 0 24px;
}
h2{
font-size:16px;
color:navy;
text-decoration:underline;
font-weight:bold;
margin:28px 0 10px;
}
p{margin:0 0 10px;}
ul, ol{margin:0 0 10px; padding-left:28px;}
li{margin-bottom:4px;}
a{color:blue;}
a:visited{color:purple;}
table{
border-collapse:collapse;
width:100%;
margin:8px 0 18px;
font-size:13.5px;
}
th, td{
border:1px solid black;
padding:6px 8px;
text-align:center;
vertical-align:top;
}
th{background:#e8e8e8;}
table.info td{text-align:left;}
table.info th{text-align:left; width:180px; background:#f2f2f2;}
.badge{
display:inline-block;
font-size:11px;
font-weight:bold;
padding:1px 5px;
border:1px solid #999;
border-radius:3px;
margin-right:4px;
}
.b-eval{background:#ffe0e0;}
.b-quiz{background:#fff3cf;}
.b-mid{background:#e0e8ff;}
.small{font-size:12.5px; color:#333;}
hr{margin:24px 0; border:none; border-top:1px solid #999;}
.toc{font-size:13.5px; margin-bottom:20px;}
.toc a{margin-right:14px;}
</style>
</head>
<body>
<h1>Operating Systems</h1>
<p class="term">Instructor: Bibhas Ghoshal</p>
<p class="schedule-line">Class web page: <a href="https://profile.iiita.ac.in/bibhas.ghoshal/teaching_os.html" target="_blank">https://profile.iiita.ac.in/bibhas.ghoshal/teaching_os.html</a></p>
<div class="toc">
<a href="#admin">Administrative</a>
<a href="#goals">Course goals</a>
<a href="#topics">Course topics</a>
<a href="#note">Things to Note</a>
<a href="#assignments">Programming assignments</a>
<a href="#grading">Grading</a>
<a href="#schedule">Weekly schedule</a>
</div>
<hr>
<h2 id="admin">Administrative</h2>
<table class="info">
<tr><th>Discussion forum</th><td>Google Classroom — Announcements and Submission of assignments</td></tr>
<tr><th>Textbook</th><td><ol>
<li><i>Operating Systems: Three Easy Pieces</i>, by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau (University of Wisconsin-Madison) <a href ="https://pages.cs.wisc.edu/~remzi/OSTEP/">[Website]</a></li>
<li><i>Operating System Concepts</i>, 10th Edition, by Silberschatz, Galvin, and Gagne <a href ="https://www.google.com/url?sa=t&source=web&rct=j&opi=89978449&url=https://codex.cs.yale.edu/avi/os-book/OS10-global/slide-dir/index.html&ved=2ahUKEwjfytzJpuGVAxUGkOEIHZJXNTIQFnoECBkQAQ&usg=AOvVaw1CpZTztFoZLepAb4oI_9XX">[Slides]</a></li>
<li><i> Xv6: A simple, Unix-like Teaching Operating System</i>, by Russ Cox, Frans Kaashoek, Robert Morris <a href ="http://pdos.csail.mit.edu/6.828/2014/xv6/book-rev8.pdf">[PDF link of the book]</a></li>
<li><i>Modern Operating Systems, Pearson</i>, 4th Edition, by Andrew S. Tanenbaum and Herbert Bros <a href ="https://os.ecci.ucr.ac.cr/slides/Andrew-S.-Tanenbaum-Modern-Operating-Systems.pdf">[PDF link of the book]</a></li>
</ol>
</td></tr>
<tr><th>Slides</th><td> Lecture slides are the primary reference; Almost everything discussed in class will be on the slides; The PDF slides link out to further reading.</td></tr>
<tr><th>Slides</th><td>Please download slides from the class web page.</td></tr>
</table>
<h2 id="goals">Course goals</h2>
<ul>
<li><b>Cover important systems concepts in general</b> — Abstraction, Resource management,Isolation, Caching, Concurrency, Memory management, I/O, protection.</li>
<li><b>Introduce Operating System Concepts</b> — Kernel, Booting, Scheduling, Synchronization, Memory management, Device and I/O, File System. It is very diifficult to use a computer without interacting with the OS, and understanding it makes you a more effective programmer.</li>
<li><b>Teach you to deal with larger software systems</b> </li>
</ul>
<h2 id="topics">Course topics</h2>
<ul>
<li>Threads & Processes</li>
<li>Virtual Memory</li>
<li>Scheduling</li>
<li>Inter-process Communication</li>
<li>Concurrency & Synchronization</li>
<li>I/O</li>
<li>Disks, File Systems, Network File Systems</li>
<li>Protection & Security</li>
<li>Virtual Machines</li>
</ul>
<p class="small"><i>Note: Lectures will often take xv6 (a lightweight Unix variant) as an example. <a href ="https://pdos.csail.mit.edu/6.828/2014/xv6.html">[xv6 Weblink]</a></li></i></p>
<h2 id="note">Things to Note : </h2>
<ul>
<li><b>Lectures:</b> Chalkboard and slide presentations, supplemented by tutorials. Bring a laptop with Linux (WSL on Windows is fine) or Mac, with xv6 installed.</li>
<li><b>Lab:</b> Xv6 based assignments covering OS topics discussed in lecture classes</li>
<li><b>Attendance:</b> < 75% will not be allowed to appear in End-Semester Exam.
<li><b>Surprise quiz:</b> Will be announced during lecture class. Another reason for attending all lectures</li>
<li>Weekly evaluations of tutorial and lab assignments (done by TAs) — Lab assignments to be submitted on Google Classroom.</li>
<li><b>Mid-semester and End-semester Exam:</b> will be announced by the Academic Section.</li>
<li><b>Final project evaluation:</b> will be announced in class and on Google Classroom.</li>
</ul>
<h2 id="assignments">Programming assignments</h2>
<ul>
<li>Implement parts of the xv6 operating system — built for x86 hardware, run on a hardware emulator.</li>
<li>Homeworks due every Friday.</li>
<li>Implementation projects on Threads, User processes, IPC, Synchronization, OS security, Virtual memory, File system : Will be announced post-mid-sem and evaluated before end-sem .</li>
<li>Lab 1 distributed at the end of this week.</li>
<li>Projects to done in groups of up to 6 people — Select your group members as early as possible.</li>
</ul>
<h2 id="grading">Grading</h2>
<p><b>Midsem = 25 marks | End sem = 40 marks | Internal Assessment = 35 marks</b></p>
<table>
<tr><th>Internal assessment component</th><th>Marks</th></tr>
<tr><td style="text-align:left;">i. Two Quizzes (pre-mid sem and post-midsem; can be surprise quizzes)</td><td>10</td></tr>
<tr><td style="text-align:left;">ii. Lab assignments</td><td>10</td></tr>
<tr><td style="text-align:left;">iii. Project — 50% passing test cases, 50% design & style / Lab Test </td><td>10</td></tr>
<tr><td style="text-align:left;">iv. Attendance</td><td>5</td></tr>
<tr><td style="text-align:left;"><b>Total</b></td><td><b>35</b></td></tr>
</table>
<p class="small">No incompletes before mid-sem or end-sem — Talk to the TAs/instructor as soon as possible if you run into real problems. Please turn in working code: large software systems aren't just about producing working code, they're about producing code other people can understand. That is why we have group projects.</p>
<h2 id="schedule">Weekly schedule</h2>
<table>
<thead>
<tr>
<th style="width:5%;">Week</th>
<th style="width:27%;">Lecture</th>
<th style="width:27%;">Tutorial</th>
<th style="width:23%;">Lab</th>
<th style="width:18%;">Resources</th>
</tr>
</thead>
<tbody id="schedule-body"></tbody>
</table>
<hr>
<p class="small">Announcements and submission of assignments happen on Google Classroom. Slides, lecture videos, tutorials, lab assignments, and handouts are posted on the <a href="https://profile.iiita.ac.in/bibhas.ghoshal/teaching_os.html" target="_blank">class web page</a>.</p>
<script>
// Each row: [week, lecture, tutorial, lab, resources]
// Empty string -> blank cell. Week merges handled via rowspan.
const rows = [
[0, "Lect 0 – Computer system <br> <a href=https://profile.iiita.ac.in/bibhas.ghoshal/OS_2026/Lectures/OS_Lecture0_Computer_System.pdf>[ Slides ] </a>", "Tut 0 – Scenario leading to exec of program <br> <a href=https://profile.iiita.ac.in/bibhas.ghoshal/OS_2026/Tutorial/Lecture_0_Tutorial.pdf> [ Tut0 ] </a> <a href=https://profile.iiita.ac.in/bibhas.ghoshal/OS_2026/Tutorial/tut_codes/hello.c> [ hello.c ] </a>", " Lab 0 : Working with Linux / Shell Scripting <br> <a href=https://profile.iiita.ac.in/bibhas.ghoshal/OS_2026/Lab/lab0/Tut_Unix_fundamentals.pdf>[Handout_Unix_fundamentals] </a> <a href=https://profile.iiita.ac.in/bibhas.ghoshal/OS_2026/Lab/lab0/Tut_Shell_Scripting.pdf>[Handout_Shell_Scripting ]</a> <br> <a href=https://profile.iiita.ac.in/bibhas.ghoshal/OS_2026/Lab/lab0/Lab_Assignments.pdf>[Lab_Assignments] </a>", "Unix shell scripting <br> <a href=https://profile.iiita.ac.in/bibhas.ghoshal/OS_2026/Lab/lab0/unix_tutorial.pdf>[Tut_Unix]</a> <a href=https://profile.iiita.ac.in/bibhas.ghoshal/OS_2026/Lab/lab0/abs-guide.pdf>[Book_Unix_Shell_Scripting]</a>"],
[1, "Lect 1 – Introduction, Fundamental Concepts, Booting", "Tut 1 – Concept of virtualization, task management, security", "", "xv6 installation files"],
[1, "Lect 2 – System calls and Interrupts", "Tut 2 – Unix system calls: open, read, write, lseek", "Lab 1 – Booting xv6, exploring xv6, running a program in xv6, xv6 system calls: date, count", "Intro to xv6 system calls"],
[2, "Lect 3 – Process Management 1", "Tut 3 – Process image in xv6", "", ""],
[2, "Lect 4 – Process Management 2", "Tut 4 – Process management APIs (Linux/xv6)", "Lab 2 – Process management in xv6 (fork, exec)", "Three Easy Pieces – Process & Process APIs, ch. 4–5"],
[2, "", "", "<span class='badge b-eval'>EVAL</span>Evaluation 1", ""],
[3, "Lect 5 – Scheduling 1", "", "", ""],
[3, "Lect 6 – Scheduling 2", "Tut 5 – Process scheduling codes; shown in xv6", "Lab 4 – Process scheduling in xv6", "Three Easy Pieces – Process Scheduling, ch. 6"],
[3, "", "<span class='badge b-quiz'>QUIZ</span>", "", ""],
[4, "Lect 6 – Threads", "Tut 6 – Threads", "Lab 5 – Working with threads in xv6", "POSIX thread programming"],
[4, "Lect 7 – IPC 1", "Tut 7 – IPC (shared memory, pipe)", "", ""],
[4, "", "", "<span class='badge b-eval'>EVAL</span>Evaluation 2", ""],
[5, "Lect 8 – IPC 2", "Tut 7 – IPC (message passing, socket)", "Explore/extend xv6's pipe implementation; implement POSIX-like shared memory", ""],
[5, "Lect 9 – Process Synchronization I: Concurrency", "Tut 8 – Race condition, locks", "", "Three Easy Pieces – Synchronization/Locks; Lamport's Bakery algorithm"],
[6, "Lect 10 – Process Synchronization II: Condition variables, semaphores, synchronization problems", "Tut 9 – POSIX semaphores", "Lab 6 – Concurrency in xv6", "Three Easy Pieces – Semaphores; Little Book of Semaphores"],
[6, "Lect 11 – Process Synchronization III: Synchronization problems", "", "", ""],
[6, "", "", "<span class='badge b-eval'>EVAL</span>Evaluation 3", ""],
[7, "Lect 12 – Deadlock", "Tut 10 – Detecting and avoiding deadlocks", "Lab 7 – Synchronization problems in xv6", "Three Easy Pieces – Virtual memory & address translation"],
[7, "<span class='badge b-mid'>MID</span>Mid-sem", "", "Mid-sem evaluation", ""],
[8, "Lect 13 – Memory Management 1", "Tut 11 – First fit, worst fit, etc. (Three Easy Pieces codes)", "", "Three Easy Pieces – Paging & segmentation"],
[8, "Lect 14 – Memory Management 2", "Tut 12 – Paging and segmentation", "Lab 8 – Memory management in xv6", ""],
[9, "Lect 15 – Memory Management 3", "", "", "Three Easy Pieces – Demand paging"],
[9, "Lect 16 – Memory Management 3 (cont.)", "Tut 14 – Demand paging and thrashing", "Lab 8 – Memory management in xv6", ""],
[9, "", "", "<span class='badge b-eval'>EVAL</span>Evaluation 5", ""],
[10, "Lect 17 – Devices 1", "", "", ""],
[10, "Lect 18 – Devices 2", "Tut 14 – I/O management", "Lab 9 – I/O management in xv6", "Three Easy Pieces – I/O management"],
[10, "", "", "<span class='badge b-eval'>EVAL</span>Evaluation 6", ""],
[11, "Lect 19 – Files and Directories 1", "", "", ""],
[11, "Lect 20 – Files and Directories 2", "Tut 15 – Files and directories", "Lab 10 – Introduction to FUSE", ""],
[12, "Lect 21 – File System Implementation 1", "", "", ""],
[12, "Lect 22 – File System Implementation 2", "Tut 16 – File system implementation", "Lab 11 – Working with FUSE", ""],
[12, "", "", "<span class='badge b-eval'>EVAL</span>Evaluation 7", ""],
[13, "Lect 22 – OS Security 1", "Tut 17 – OS security", "", ""],
[13, "Lect 23 – OS Security 2", "", "Project work", ""],
[14, "Lect 24 – Virtual Machines", "Tut 18 – Creation of VMs", "Project work", ""],
[14, "Lect 25 – Virtual Machines", "", "", ""],
[15, "Lect 26 – Idea of Distributed System", "", "", ""],
[15, "Lect 27 – Distributed OS", "Tut 19 – Containers", "", ""],
[15, "", "", "<b>Final Project Evaluation</b>", ""],
];
const tbody = document.getElementById('schedule-body');
// group rows by week to compute rowspan
const weekCounts = {};
rows.forEach(r => { weekCounts[r[0]] = (weekCounts[r[0]] || 0) + 1; });
const seen = {};
rows.forEach(r => {
const [week, lect, tut, lab, res] = r;
const tr = document.createElement('tr');
if (!seen[week]) {
seen[week] = true;
const wkTd = document.createElement('td');
wkTd.rowSpan = weekCounts[week];
wkTd.style.fontWeight = 'bold';
wkTd.style.verticalAlign = 'middle';
wkTd.textContent = week;
tr.appendChild(wkTd);
}
[lect, tut, lab, res].forEach(val => {
const td = document.createElement('td');
td.style.textAlign = 'left';
td.innerHTML = val || '';
tr.appendChild(td);
});
tbody.appendChild(tr);
});
</script>
</body>
</html>