CPS 356 Operating Systems Lecture Notes
- Introduction to operating systems & the UNIX
& C programming environment ([OSCJ] Ch 1-2, [USP] Ch 1-2,4)
- introduction
to operating systems (review of computer
organization,
C exercises)
- the
UNIX philosophy (class
UNIX page,
UNIX Tutorial for Beginners,
vi quick reference,
vi editor, UW vi
reference)
- files & directories (manipulation
& management)
-
system libraries & I/O
- Processes & threads ([OSCJ] Ch 3-4, [USP] Ch 2-6)
-
processes (identification; getpid,
creation;
fork, & termination) &
memory allocation/deallocation
-
low-level I/O (open &
close, & read &
write)
-
context switching
-
compiling C in UNIX (static vs. dynamic linking,
macros, conditional compilation, error handling,
& debugging;
RMS's gdb tutorial,
valgrind tutorial)
-
files & directories (data structures, inodes,
& hard & symbolic links)
- process manipulation (wait & exec)
-
the UNIX shell &
process environment (variables, configuration,
customization)
-
implementing I/O redirection &
interprocess communication (IPC; pipes &
FIFOs)
- compilation management (Makefiles,
make tutorial,
another make tutorial,
exercise in writing a Makefile)
-
threads (storage classes & thread-safe
functions)
- threads in Java (Oracle Java
webpage,
BlueJ,
NetBeans,
Eclipse,
Java
Thread class)
- (shell)
job control (through signals) &
terminals
-
Scheduling ([OSCJ8] Ch 5)
-
types, evaluation criteria, & algorithms
(FCFS, SJF, SRTF, RR)
-
multi-level queues &
multi-level feedback queues
- Synchronization ([OSCJ] Ch 6)
-
mutual exclusion &
the critical section problem (§§6.1-6.4)
-
semaphores (§6.5) (The
Little Book of Semaphores, Java
lang.util.concurrent.Semaphore class)
-
classical problems of synchronization (§6.6)
-
monitors (§6.7) (Java lang.util.concurrent.locks package)
-
Deadlock ([OSCJ] Ch 7)
- deadlock prevention (§§7.1-7.4)
- deadlock avoidance &
Banker's algorithm (§7.5)
(Banker's
examples)
- deadlock
detection (§7.6) &
recovery (§7.7)
-
Memory Management ([OSCJ] Ch 8)
- fundamentals (overview of hardware, logical vs.
physical address space, dynamic loading &
linking) (§§8.1-8.2)
- contiguous allocation (§8.3)
- paging (§§8.4-8.5)
- segmentation,
segmentations faults, &buffer overflows (§§8.6-8.8)
- Virtual Memory ([OSCJ] Ch 9)
- demand paging (§§9.1-9.3): Apr 12
- page replacement algorithms (FIFO, optimal, LRU; §9.4): Apr 19 21
- allocation (§9.5) &
thrashing (§9.6) &
course reflection
(terms)
Practice problems
References
[ATT] |
UNIX System Calls and Libraries -- Part 1, Version 2.1.1, AT&T, 1990. |
[C] |
C Language for Experienced Programmers, Version 2.0.0, AT&T, 1988. |
[COPL] |
R.W. Sebesta.
Concepts of Programming Languages.
Addison-Wesley, Boston, MA, Sixth edition, 2003. |
[CPL] |
B.W. Kernighan and D.M. Ritchie. The C Programming Language.
Prentice Hall, Upper Saddle River, NJ, Second edition, 1988. |
[OSC9] |
A. Silberschatz, P.B. Galvin, and G. Gagne.
Operating Systems Concepts. John Wiley and Sons, Inc., Ninth edition,
2013. |
[OSCJ8] |
A. Silberschatz, P.B. Galvin, and G. Gagne.
Operating Systems Concepts with Java.
John Wiley and Sons, Inc., Eighth edition, 2010. |
[OSIDP] |
W. Stallings.
Operating Systems: Internals and Design Principles.
Prentice Hall, Upper Saddle River, NJ, Sixth edition, 2009.
|
[PGUS] |
M.G. Sobell. A Practical Guide to the UNIX System.
Addison-Wesley, Reading, MA, Third edition, 1995.
|
[UPE] |
B.W. Kernighan and R. Pike. The UNIX Programming Environment.
Prentice Hall, Upper Saddle River, NJ, Second edition, 1984.
|
[USP] |
K.A. Robbins and S. Robbins.
UNIX Systems Programming:
Concurrency, Communication, and Threads.
Prentice Hall, Upper Saddle River, NJ, Second edition, 2003
|
© S. Perugini, Spring 2010, University of Dayton.
Permission to use ideas about
the organization of topics and any notes or material is granted,
provided suitable acknowledgments and citations are made.
|