Class | Date | Topics covered in class |
1 | Wed 9/6 | 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/8 | 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, parameters passing to system calls,
process states, Process Control Block (PCB).
|
3 | Mon 9/11 | Process and device queues, long- and short-term scheduling, migration of
processes between various queues, process forking in C, working with fork()
system call, creating processes in Windows, process tree on Linux and Solaris.
|
4 | Tue 9/12 | Calling native applications from within Java, communication between
processes and its simulation on Java with interface BoundedBuffer.
socket programming, developing server and client applications in Java.
|
5 | Wed 9/13 | Remote procedure calls and Java RMI, intro to threads, programming C-threads,
programming threads in Java.
|
6 | Fri 9/15 | Using Java API method sleep, terminating threads in Java,
interrupting threads, developing more threaded apps in Java.
|
7 | Mon 9/18 | Waiting for a thread to complete, developing more threaded apps in Java.
|
8 | Tue 9/19 | CPU burst, CPU scheduling criteria, preemptive/non-preemptive scheduling, FCFS
scheduling, SJF scheduling, estimating the next burst time of a process.
|
9 | Wed 9/20 | Priority scheduling, the Round Robin method. implementing the RR scheduler, scheduling in various OS, scheduling problems on multiple CPUs, Solaris scheduling.
|
10 | Fri 9/22 | Scheduling algorithms of Windows and Linux, Java scheduling, working with Java priorities, working with thread gropus and pools, intro to process synchronization.
|
11 | Mon 9/25 | Race condition, non-synchronized bank accounts demo, critical code sections,
Petersen's solution to synchronization.
|
12 | Tue 9/26 | Hardware synchronization, Java implementation of Petersen's and hardware solution to synchronization.
|
13 | Wed 9/27 | Java API class semaphore, implementing semaphores, the Bounded Buffer problem and its implementation with semaphores.
|
14 | Fri 9/29 | The Readers/Writers problem, the Dining Philosophers problem, synchronized methods, solving the account deposit problem.
|
15 | Mon 10/2 | Java synchronized blocks, the wait() method, difference between notify()
and notifyAll() methods, thread synchronization with interface Lock.
|
16 | Tue 10/3 | Condition variables,
intro to deadlocks, 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/4 | Implementation of DFS, definition of the system safe state, checking for the safe state, resource allocation with Banker's algorithm.
|
18 | Fri 10/6 | Implementation and application of Banker's algorithm, examples.
|
19 | Mon 10/9 | Deadlock detection methods and recovery from deadlocks, review of Section 7.
|
20 | Tue 10/10 | 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.
|
21 | Wed 10/11 | Paging hardware issues, page tables, TLB tables,
TLB effective access time, cache types and algorithms,
managing large page tables, hierarchical tables.
|
22 | Fri 10/13 | Hash tables, inverse tables, memory protection, segmentation, Intel CPU segmentation support, handling segmentation with Linux, MS-DOS approach to segmentation, review of Chapter intro to Virtual memory.
|
23 | Mon 10/16 | Demand paging, FIFO page replacement method, programming the FIFO,
Belady's anomaly.
|
24 | Tue 10/17 | Optimal page placement algorithm, LRU and MRU algorithms, approximations
to the LRU method.
|
25 | Wed 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.
|
26 | Fri 10/20 | No class
|
27 | Mon 10/23 | Fall break
|
28 | Tue 10/24 | Fall break
|
29 | Wed 10/25 | Review of memory allocation methods, memory mapped files.
|
30 | Fri 10/27 | Allocating kernel memory, further memory allocation
issues, page placement/replacement strategies of modern OSs, review of Section
9, file structure, file operations, Linux system calls related to files,
sequential and random file access, file locking in Java.
|
31 | Mon 10/30 | Java API class File and some its methods, writing to text files and binary file
from within Java, reading files in Java, directory structure, disk structure.
|
32 | Tue 10/31 | One- and two-level directories, Linux system calls related to directories,
tree- and DAG-based directory structure, soft and hard links,
mouting file systems, file protection with access lists and groups.
|
33 | Wed 11/1 | File system structure, volume and file control blocks,
in-memory file system structures, directory implementation with linear
lists and hash tables, indexed allocation of file blocks, intro to FAT.
|
34 | Fri 11/3 | Hierarchical file blocks indexing, index tables, inodes, Unix allocation schema.
managing free disk space.
|
35 | Mon 11/6 | Intro to the File System project, Java classes
for inodes, inode and indirect blocks, file descriptors, file table.
|
36 | Tue 11/7 | Low-level disk methods (class Disk), Low-level disk methods (class Disk),
formatting method for the File System project (class FileSystem),
programming create() and open() methods.
|
37 | Wed 11/8 | handling the mapping between logical and physical file block numbers, method
getBlockNumber(), programming the read() method.
|
38 | Fri 11/10 | The write() method,
allocation of space for files, methods allocateNewBlock() and
getFreeBlock(), closing files.
|
39 | Mon 11/13 | Testing the file system,
intro to Mass-storage systems, disk mechanics, disk structure.
|
40 | Tue 11/14 | Disk scheduling, programming FIFO disc scheduling, the SSTF scheduling.
|
41 | Wed 11/15 | Programming the HDD scheduling algorithms, the C-Scan scheduling, overview of secodary storage technology, SWAP space and its usage, tertiary storage,
RAID levels, intro to ECC, overview of computer buses.
|
42 | Fri 11/17 | Restoration of information in RAID arrays,
vector tables of Intel processors, vector tables of some microcontrollers,
DMA operations.
|
43 | Mon 11/20 | Configuring Silicon Labs Simplicity Studio (SS),
basics of SS project development, structure of Thunderboard BG22 development
board, building the first microcontroller project,
retargeting I/O.
|
44 | Tue 11/21 | Midterm Exam II
|
45 | Wed 11/22 | Working with die temperature sensor, toggling LED with button presses.
|
46 | Fri 11/24 | No class (Thanksgiving)
|
47 | Mon 11/27 | Working with GPIO interrupt library, processing LETIMER interrupts.
|
48 | Tue 11/28 | Intro to Micriμm RTOS, general app structure, LED blinking with RTOS.
|
49 | Wed 11/29 | RTOS tasks, some OS data structures, creating and configuring multiple task
application.
|
50 | Fri 12/1 | Working with Semaphore object, using built-in task semaphores,
synchronizing tasks.
|
51 | Mon 12/4 | Working with event flags, using temperature/humidity sensor.
|
52 | Tue 12/5 | Working with RTOS task queues, handling mutual exclusion (critical sections).
|
53 | Wed 12/6 | Micriμm approaches to critical sections, handling kernel-aware and
not kernel-aware interruprs, overview of RTOS projects.
|
54 | Fri 12/8 | Intro to distributed computing,
logical timestamps, mutual exclusion algorithms, transaction coordination,
deadlock detection methods, intro to network security and encryption
principles, symmetric encryption principle.
|
55 | Mon 12/11 | Breaking the substitution ciphers, letter frequencies, generating large
prime numbers, generating (pseudo)-random numbers,
working with DES and AES cyphers in Java.
|
56 | Tue 12/12 | Public key cryptography, the RSA algorithm, working with RSA in Java,
intro to hash functions, working with SHA-1 and MD5, electronic signatures.
|