Overview of Operating Systems Introduction to Operating Systems: Module 0 Course Introduction Course Overview Objectives Topics Prerequisite Course knowledge Material Texbooks eBooks Course homepage http://cs.uwm.edu/~cs537/ Helpful links Syllabus D2L Assignments, quizzes Objectives Understand the principles of OS concentration on systems which are design • 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 Layers, Design Approaches modules, microkernel, monolithic Traditional Types General Purpose Multiprocessor Distributed Real-time of Operating Systems Functions of an OS: Resource Management Time management - temporal properties CPU Space and disk transfer scheduling management main and secondary storage allocation Synchronization IPC, and deadlock handling race condition, coordination Accounting resource and status information usage tracking Functions of an OS: User Environment Transforms bare hardware machine into higher level abstractions Execution environment process The file implementation processor does not know about processes manipulation Blocks interrupt Serial I/O and sectors file names and directories handling device event button click 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 C++ program Library C++ Compiler Library Operating System Library Library CPU