Class | Date | Topics covered in class |
1 | Wed 9/4 | Getting started; syllabus, grading policy, course outline, online services,
submission of assignments, defining operating systems, computer systems
organization, int80 demo, Interrupt processing, I/O structure, DMA.
|
2 | Fri 9/6 | Storage hierarchy, cashing, multiprogramming, job scheduling and
multiprocessing, time sharing, intro to processes, user mode and kernel
mode, process management, memory management, storage management, CLI shells,
system call implementation,
|
3 | Mon 9/9 | Parameters passing to system calls, process states, Process Control Block
(PCB), process and device queues, long- and short-term scheduling, migration
of processes between various queues.
|
4 | Tue 9/10 | Process forking in C, working with fork() system call, creating processes
in Windows, process tree on Linux and Solaris,
calling native applications from within Java.
|
5 | Wed 9/11 | Communication between processes and its simulation on Java with interface
BoundedBuffer.
|
6 | Fri 9/13 | Socket programming, developing server and client applications in Java,
remote procedure calls and Java RMI, intro to threads, programming C-threads.
|
7 | Mon 9/16 | Programming threads in Java, using Java API method join().
|
8 | Tue 9/17 | Using Java API method sleep(), terminating threads in Java, interrupting
threads, developing more threaded apps in Java,
CPU burst, CPU scheduling criteria, preemptive/non-preemptive scheduling.
|
9 | Wed 9/18 | FCFS scheduling, SJF scheduling, programming scheduling algorithms in Java.
|
10 | Fri 9/20 | Estimating the next burst time of a process, Priority scheduling, the
Round Robin method, implementing the RR scheduler, scheduling in various OS,
scheduling problems on multiple CPUs, Solaris scheduling.
|
11 | Mon 9/23 | Intro to process synchronization,
Race condition, non-synchronized bank accounts demo, critical code
sections, Petersen's solution to synchronization.
|
12 | Tue 9/24 | Hardware synchronization, Java implementation of Petersen's and hardware
solution to synchronization, Java API class Semaphore.
|
13 | Wed 9/25 | The Bounded Buffer problem and its implementation with semaphores.
the Readers/Writers problem.
|
14 | Fri 9/27 | The Dining Philosophers problem, life and dead locks, synchronized methods,
solving the account deposit problem, Java synchronized blocks, the wait()
method.
|
15 | Mon 9/30 | Difference between notify() and notifyAll() methods, thread synchronization
with interface Lock, Condition variables, intro to deadlocks.
|
16 | Tue 10/1 | Necessary conditions for existence of deadlocks, the resource-process graph, graph-theoretic approach to the single-instance resource allocation problem, handling the general case, DFS and loop detection algorithm.
|
17 | Wed 10/2 | Implementation of DFS, definition of the system safe state,
checking for the safe state, Banker's algorithm.
|
18 | Fri 10/4 | Resource allocation with Banker's algorithm,
Implementation and application of Banker's algorithm, examples,
deadlock detection methods and recovery from deadlocks.
|
19 | Mon 10/7 | Review of Section 7, intro to memory management, logical and physical
addresses, types of binding, swapping, MMU and its usage, consecutive
memory allocation, internal and external fragmentation, paging approach to
the segmentation problem, address translation.
|
20 | Tue 10/8 | Paging hardware issues, page tables, TLB tables, TLB effective access time,
cache types and algorithms, managing large page tables, hierarchical tables.
|
21 | Wed 10/9 | No class (committee meeting in Madison)
|
22 | Fri 10/11 | No class (Commitee meeting in Madison)
|
23 | Mon 10/14 | Hash tables, inverse tables, memory protection, segmentation, Intel CPU
segmentation support.
|
24 | Tue 10/15 | Handling segmentation in Linux, MS-DOS approach to segmentation, review of
Chapter intro to Virtual memory, demand paging, FIFO page replacement method,
programming the FIFO, Belady's anomaly.
|
25 | Wed 10/16 | Optimal page placement algorithm, LRU and MRU algorithms, approximations to the LRU method.
|
26 | Fri 10/18 | LRU and MRU algorithms, approximations to the LRU method, page access bits, the second chance algorithm, minimum number of pages, local and global page allocation, trashing, intro to the process working set, memory mapped files.
|
27 | Mon 10/21 | Allocating kernel memory, further memory allocation issues,
page placement/replacement strategies of modern OSs, review of Section 9.
|
28 | Tue 10/22 | File structure, file operations, Linux system calls related to files, working
with files in Java, file locking in Java.
|
29 | Wed 10/23 | Writing to text files and binary file from within Java, reading files in Java,
sequential and random file access, directory structure, disk structure.
|
30 | Fri 10/25 | One- and two-level directories, Linux system calls related to directories,
tree- and DAG-based directory structure, soft and hard links, mounting file
systems, file protection with access lists and groups.
|
31 | Mon 10/28 | Fall break
|
32 | Tue 10/29 | Fall break
|
33 | Wed 10/30 | File system structure, volume and file control blocks, in-memory file system
structures, directory implementation with linear lists and hash tables.
|
34 | Fri 11/1 | Intro to FAT, structure of disc partitions, indexed allocation of file blocks.
|
35 | Mon 11/4 | Hierarchical file blocks indexing, index tables, inodes,
Unix allocation schema, managing free disk space.
|
36 | Tue 11/5 | Intro to the File System project, Java classes for inodes, inode and
indirect blocks, file descriptors, file table.
|
37 | Wed 11/6 | Low-level disk methods (class Disk),
formatting method for the File System project (class FileSystem),
programming create() and open() methods.
|
38 | Fri 11/8 | Handling the mapping between logical and physical file block numbers,
method getBlockNumber(), programming the read() method.
|
39 | Mon 11/11 | The write() method, allocation of space for files, methods allocateNewBlock()
and getFreeBlock(), closing files.
|
40 | Tue 11/12 | Review and testing the file system.
|
41 | Wed 11/13 | Intro to Mass-storage systems, disk mechanics, disk structure,
disk scheduling, programming FIFO disc scheduling, the SSTF scheduling.
|
42 | Fri 11/15 | Programming the HDD scheduling algorithms, the C-Scan scheduling,
overview of secondary storage technology, SWAP space and its usage,
tertiary storage, RAID levels, intro to ECC.
|
43 | Mon 11/18 | Configuring Silicon Labs Simplicity Studio (SSv5), basics of SS project
development, structure of Thunderboard BG22 development board, building the
first microcontroller project, retargeting I/O.
|
44 | Tue 11/19 | No class (Jury duty call)
|
45 | Wed 11/20 | Working with GPIO interrupt library, configuring LETIMER.
|
46 | Fri 11/22 | Processing LETIMER interrupts, getting chip die temperature (TEMPDRV driver).
|
47 | Mon 11/25 | No class (visit to UWEC)
|
48 | Tue 11/26 | Intro to Micriμm RTOS, general app structure, LED blinking with RTOS.
|
49 | Wed 11/27 | RTOS tasks, some OS data structures, creating and configuring multiple task
applications, working with Semaphores.
|
50 | Fri 11/29 | No class (Thanksgiving)
|
51 | Mon 12/2 | Using built-in task semaphores, working with event flags, using
temperature/humidity sensor.
|
52 | Tue 12/3 | Working with RTOS task queues, handling mutual exclusion (critical sections).
|
53 | Wed 12/4 | Micriμm approaches to critical sections, handling kernel-aware and not
kernel-aware interruprs, overview of RTOS projects.
|