Overview of Operating Systems
Introduction to Operating Systems: Module 0
Course Introduction Course Overview
Objectives Topics Prerequisite knowledge
Course Material Texbooks eBooks Course homepage
Helpful links Syllabus
D2L Assignments, quizzes
http://cs.uwm.edu/~cs537/
Objectives
Understand the principles of OS design concentration on systems which are
• general-purpose
• multi-user
• single processor
See how OS design can impact program performance Understand concurrency, and learn of the problems (such
as race conditions) and tools used to solve them (such as semaphores)
Learn major features of the POSIX API as implemented by Solaris
Core course topics
Computer architecture & OS foundations Process management
Concurrency Synchronization
Memory management CPU scheduling File systems
Prerequisite knowledge
The C++ programming language Assembly language for some machine Some familiarity with UNIX Basic graph theory Understanding of basic probability
Conditional probability Expected value
What is an operating system?
Functions of an Operating System Control resource allocation Provide a user an environment for doing work
Traditional Design Approaches Layers, modules, microkernel, monolithic
Traditional Types of Operating Systems General Purpose
Multiprocessor Distributed Real-time
Functions of an OS: Resource Management
Time management - temporal properties CPU and disk transfer scheduling
Space management main and secondary storage allocation
Synchronization and deadlock handling IPC, race condition, coordination
Accounting and status information resource usage tracking
Functions of an OS: User Environment
Transforms bare hardware machine into higher level abstractions
Execution environment process implementation
The processor does not know about processes file manipulation
Blocks and sectors file names and directories interrupt handling
Serial device event button click I/O actions
Delayed block write scheduled Save a file
What can understanding the OS do for me?
The machine code executed while your program is running is determined by the C++ statements in your program, the compiler and libraries, and the operating system
CPU
C++ program
C++Compiler
Library
Library
Library
Library
Operating System