Date |
Topic |
Reading |
Release |
Due |
$firstday=mktime(0, 0, 0, 8, 25, 2015);
function lecture($topic, $link, $description, $reading='', $release='', $due='', $numlecs=1) {
global $firstday;
print '';
$oldfirstday = $firstday;
while($numlecs > 0) {
print date("D M d", $firstday) . ' ';
if(date("D", $firstday) == "Tue") { $firstday += 60 * 60 * 24 * 2; }
else if(date("D", $firstday) == "Thu") { $firstday += 60 * 60 * 24 * 5.01; }
$numlecs -= 1;
}
print ' | ';
if($link != '') {
if(time() >= $oldfirstday) {
$linkstr = ''.$topic . ' (pdf)';
} else {
$linkstr = '' . $topic . '';
}
$linkstr = ''.$topic . ' (pdf)';
} else {
$linkstr = '' . $topic . '';
}
if($description != '') {
$linkstr = $linkstr . ': ' . $description;
}
print '' . $linkstr . ' | ' . $reading . ' | ' . $release . ' | ' . $due . ' |
';
}
function noclass($event, $numlecs=1) {
global $firstday;
print '';
$oldfirstday = $firstday;
while($numlecs > 0) {
print date("D M d", $firstday) . ' ';
if(date("D", $firstday) == "Tue") { $firstday += 60 * 60 * 24 * 2; }
else if(date("D", $firstday) == "Thu") { $firstday += 60 * 60 * 24 * 5.01; }
$numlecs -= 1;
}
print ' | ';
$linkstr = '' . $event . '';
print '' . $linkstr . ' |
';
}
function exam($date, $title, $location) {
print '';
print $date;
print ' | ';
print '';
print $title;
print ' |
';
}
lecture('Introduction', 'slides/01-intro', 'Introduces the course and its contents; Discusses the history of OSs.');
lecture('Architectural Support for Operating Systems', 'slides/02-arch-support', 'Interrupts and Traps; I/O and device drivers; OS Protection; OS Structure; Booting.', 'Ch. 1 & 2');
lecture('Processes and Threads', 'slides/03-processes-threads', 'What is a process? What is a thread? How are they created and destroyed? How are processes and threads implemented?', 'Ch. 3
', 'P1(T,9/1)
MP1(Th,9/3)', '', 2);
lecture('Synchronization', 'slides/04-synchronization', 'How do threads share the same memory without stepping on each others
toes? How do threads coordinate their execution? Locks,
spinlocks, semaphores, monitors and condition variables.', 'Ch. 4 & 5
12 Commandments of Synchronization', 'P2(W,9/16)','P1(W,9/16)MP1(W,9/23)',5);
lecture('CPU Scheduling', 'slides/05-scheduling', 'How does the OS decide which user processes/threads to schedule?', 'Ch. 7', 'MP2(Th,9/24)','',1);
lecture('Deadlocks', 'slides/06-deadlocks', 'How to prevent synchronized threads from mutually blocking each other.', 'Ch. 4 & 5', 'P3(W,9/30)','P2(F,10/2)',2);
lecture('Main Memory', 'slides/07-memory', 'Memory organization. Segmentation. Page Tables.', 'Ch. 8', '','',1);
lecture('Prelim Review', 'slides/prelim1-review', 'Everything through Deadlocks', '', '','Prelim #1
(Th,10/8), STL185',1);
noclass('Fall Break', 1);
lecture('Main Memory (contd)', '', 'TLB Management. Caches. Virtual Memory. Paging.', 'Ch. 8-9', 'P4(W,10/21)','MP2(W,10/21)
P3(W,10/21)',2);
lecture('Networking', 'slides/08-networking', 'Network organization. Ethernet. ARP. DHCP. DNS. IP. TCP. BGP. Routing overview.',
'
Saltzer, Reed and Clark, End-to-End Arguments in System Design.
', 'MP3 (Th,10/22)P5(W,11/4)','P4(F,11/6 @ 3pm)',5);
lecture('Disks and RAID', 'slides/09-disksraid', 'Disk Organization. Disk Interface. RAID.', 'Ch. 12', '','MP3(W,11/11)');
lecture('Layered Block Stores and MP4', 'slides/MP4', 'Block Store Interface. Virtual Block Stores', '', 'MP4(Th,11/12)','');
lecture('File Systems', 'slides/10-filesystems', 'How are filesystems implemented, what are the performance implications for various designs? Persistence, Consistency, FAT, Unix File System, Log structured filesystems.', 'Ch. 13 & 14
Rosenblum and Ousterhout.
The Design and Implementation of a Log-Structured File System.
', '
P6(W,11/18)','P5(W,11/18)',2);
lecture('Prelim 2 Review', '', '', '', '','Prelim #2
(T,11/24), STL185');
noclass('Thanksgiving',1);
lecture('Security', 'slides/11-security', 'Basics of authentication, authorization and privacy management in operating systems.', '', '','MP4(W,12/2)
P6(W,12/2)',2);
exam('Wed, Dec 9', '4410: Final Exam',1);
?>