Introduction
Why Study OS? Understand model of operation Learn to design an OS Easier to see how to use the system Enables you to write efficient code Learn to design an OS Even so, OS is pure overhead of real work Application programs have the real value to person who buys the computer
System Overview A computer system consists of hardware and software that are combined to provide a tool to solve specific problems Hardware includes CPU, memory, disks, printers, screen, keyboard, mouse ... Software includes System software A general environment to create specific applications Application software A tool to solve a specific problem
Perspectives of the Computer cut malloc() print open() read-disk start-printer send save fork() track-mouse Application Software Application Software Application Software System Software System Software System Software Hardware Hardware Hardware End User View (b) Application Programmer View (c) OS Programmer View
System Software (“Middleware”) Independent of applications, but common to all Examples C library functions A window system A database management system Resource management functions
Purpose of an OS (What is Resource Management?) Process: An executing program Resource: Anything that is needed for a process to run Memory Space on a disk The CPU “An OS creates resource abstractions” “An OS manages resource sharing”
Abstract Resources User Interface Application Abstract Resources (API) Middleware OS Resources (OS Interface) OS Hardware Resources
Hardware Resources Processor: execute instructions Memory: store programs and data Input/output (I/O)controllers: transfer to and from devices Disk devices: long-term storage Other devices: conversion between internal and external data representations
Hardware Resources – cont.
Hardware Interface – cont. Everything that a programmer needs to know in order to write programs that perform desired operation on the hardware Disk drive is an example Disk interface provides functions to move disk head, transfer data Monitor Monitor interface provides functions to move the cursor, display characters/graphics
Software Classification System software Provides a general programming environment in which programmers can create specific applications Application software Intended to solve a specific problem
Software Classification - continued Loader OS Database Management System Window Application Programmer System Software Libraries Compiler Hardware Command Line Interpreter Software API
What is an Operating System? The operating system is the part of the system software that manages the use of the hardware used by other system software and all application software It is the system program that acts between the hardware and the user programs
What is an Operating System? - continued It provides services to user programs Through system calls / message passing File system services Memory services I/O services It hides hardware from user programs When your program shows a message on the monitor, it does not need to know the details When your program generates a new file, it does not need to know where the free space is on your hard drive
Differences between OS and System Software Major differences between OS and general system software General system software relies on the abstractions provided by OS OS abstracts the hardware directly OS provides the fundamental trusted mechanisms for resource sharing A general purpose OS is domain-independent
Operating System Functions Resource manager manage hardware and software resources Resource abstraction and sharing A nicer environment implement a virtual machine for processes to run in A program in execution is called a process a nicer environment than the bare hardware
Resource Management Functions Transform physical resources to logical resources Resource abstraction Make the hardware resources easier to use Multiplex one physical resource to several logical resources Create multiple, logical copies of resources Schedule physical and logical resources Decide who gets to use the resources
Resource Abstraction Provides an abstract model of the operation of hardware components Like data abstraction in Object-Oriented programming Interface functions Internal functions and status Eliminates the tedious details that a programmer would otherwise have to handle
A Disk Device Abstraction Three interface functions load(block, length, device) Copies block of memory to device buffer seek(device, track) Positions read/write head out(device, sector) Writes the data to disk sector
A Disk Device Abstraction – cont. An abstract function for writing a block of memory to disk write(char *block, int len, int device, int track, int sector) { ... load(block, length, device); seek(device, track); out(device, sector); }
A Disk Device Abstraction – cont. load(…); seek(…); out(…); void write() { seek(…) out(…) } int fprintf(…) { ... write(…) … (a) Direct Control (b) write() abstraction (c) fprintf() Application Programmer OS Programmer
Resource Abstraction – cont. The dark side … While simplifying the way application programmers can control hardware, abstraction can limit the flexibility by which specific hardware can be manipulated Certain operations may be impossible to achieve using the abstraction
Resource Sharing Concurrent execution Parallel execution Two or more processes appear to be (or actually are) executing at the same time Parallel execution Two or more processing actually executing simultaneously Processes which are concurrent, or parallel, must share the computer
… … … Abstract Machines Abstract Machines Idea Program Result Physical
Resource Sharing Two types of sharing Time multiplexed sharing time-sharing schedule a serially-reusable resource among several users Space multiplexed sharing space-sharing divide a multiple-use resource up among several users
Resource Sharing To control sharing, must be able to isolate resources OS usually provides mechanism to isolate, then selectively allows sharing How to isolate resources How to be sure that sharing is acceptable Concurrency
The OS as a Conductor The OS coordinates the sharing and use of all the components in the computer
Multiprogramming … … Abstract Machine Pi Abstract Machine Pj Abstract Machine Pk … OS Resource Sharing Pi Memory Pk Memory … Pj Memory Time-multiplexed Physical Processor Space-multiplexed Physical Memory
Multiprogramming(2) Technique for sharing the CPU among runnable processes Process may be blocked on I/O Process may be blocked waiting for other resource, including the CPU While one process is blocked, another might be able to run Multiprogramming OS accomplishes CPU sharing “automatically” – scheduling Reduces time to run all processes
How Multiprogramming Works Process 1 Process 2 Process 3 Time-multiplexed CPU Process 4 Space-multiplexed Memory
Speeding Up the Car Wash Vacuum Inside Wash Dry (a) The Sequential Car Wash Vacuum Inside Wash Dry (b) The Parallel Car Wash
Time-multiplexing the Processor - Resulted in concurrent execution or concurrency
Time-multiplexing the Processor – cont. Using the processor I/O operation / paused ti Pi’s Total Execution Time, ti (a) Pi’s Use of Machine Resources P1 P2 Pi PN … (b) All Processes’ Use of Machine Resources Improves performance
Space-multiplexing Memory
Time-multiplexing I/O Devices
Space-multiplexing the Disk
Issues in Resource Sharing Resource isolation and sharing Protection Prevent unauthorized access of resources by one process when they are currently allocated to another Sharing Resource allocation Scheduling
Do We Need an OS? Not always But they are very useful When resource abstraction or sharing is not needed Some programs run “stand-alone” Early computers did not have a sophisticated OS OS was evolved along the hardware technology But they are very useful Reusable functions Easier to use than the bare hardware
History of Operating Systems First generation 1945 - 1955 vacuum tubes, plug boards – user plugs-in program
The first computers Electronic Numerical Integrator And Computer (ENIAC) Mathematical Analyzer, Numeric Integrator And Computer(MANIAC)
History of Operating Systems Second generation 1955 - 1965 transistors, batch systems – multiple programs on Disk Third generation 1965 – 1980 ICs and multiprogramming - user interaction (time-sharing) Fourth generation 1980 – present personal computers – graphic user-interface Networks – file & computing services Web-computing, Handheld devices , Cellular phones, Cloud computing…
How Bill Gates became rich… 1974: Intel releases the 8080 processor, needs an OS CP/M OS Please! develop an OS Gary Kildall
How Bill Gates became rich… (cont’d) 4/7/2019 How Bill Gates became rich… (cont’d) 1974: Intel releases the 8080 processor, needs an OS CP/M OS becomes de facto standard for micros Kildall develops CP/M for 8080 Gary Kildall
How Bill Gates became rich… (cont’d) 1980: IBM designs IBM PC, needs an OS Can you find an OS for our PC? Can’t reach agreement Gary Kildall Please meet IBM, they need an OS
How Bill Gates became rich… (cont’d) 1980: IBM designs IBM PC, needs an OS Kildall didn’t work out. Please develop an OS! I’d like to buy the DOS OS Sure, it’s yours for $75,000
How Bill Gates became rich… (cont’d) 1980: IBM designs IBM PC, needs an OS May I retain the rights for MS-DOS? Sure, why not!!
How Bill Gates became rich… (cont’d) Well, this is 20:20 hind vision…
Operating Systems Strategies Several different strategies have been used Earliest computers were dedicated to a single program and there was no multiprogramming and no OS Batch systems Timesharing systems There are a few other recent strategies Personal computers and workstations Embedded systems Small, communicating computers Network technology
Batch Processing Systems Reduce setup time by batching similar jobs Automatic job sequencing – automatically transfers control from one job to another. First rudimentary operating system. Resident monitor initial control in monitor control transfers to job when job completes control transfers back to monitor
Batch Processing Systems - continued Job 19 Input Spooler Output Spooler Job 3 Input Spool Output Spool
Memory Layout for a Simple Batch System
Batch Processing Uses multiprogramming Job (file of OS commands) prepared offline Batch of jobs given to OS at one time OS processes jobs one-after-the-other No human-computer interaction OS optimizes resource utilization Batch processing (as an option) still used today
Spooling Overlap I/O of one job with computation of another job. While executing one job, the OS Reads next job from card reader into a storage area on the disk (job queue). Outputs printout of previous job from disk to printer. Job pool – data structure that allows the OS to select which job to run next in order to increase CPU utilization
Multi-programmed Batch Systems Several jobs are kept in main memory at the same time, and the CPU is multiplexed among them.
OS Features for Multi-programming I/O routine supplied by the system Memory management – the system must allocate the memory to several jobs CPU scheduling – the system must choose among several jobs ready to run Allocation of devices
Time-sharing Systems The goal is to enable users to interact with the computer system Batch processing systems do not allow user interactions On-line communication between the user and the system is provided When the operating system finishes the execution of one command, it seeks the next “control statement” not from a card reader, but rather from the user’s keyboard. On-line system must be available for users to access data and code.
Time-sharing Systems - continued Physical Machine Abstract Machines … Command Result
Timesharing Systems – cont’d Uses multiprogramming Support interactive computing model (Illusion of multiple consoles) Different scheduling & memory allocation strategies than batch Tends to propagate processes Considerable attention to resource isolation (security & protection) Tend to optimize response time
Personal-computer Systems Personal computers – computer system dedicated to a single user. I/O devices – keyboards, mice, display screens, small printers. User convenience and responsiveness. Can adopt technology developed for larger operating system often individuals have sole use of computer and do not need advanced CPU utilization of protection features.
Personal-computer Systems - continued Win32 API Windows CE (Pocket PC) Windows 95/98/Me Windows NT/2000/XP Win32 API Subset Win32 API SubSet
Embedded Systems Often used as a control device in a dedicated application such as controlling scientific experiments, medical imaging systems, industrial control systems, and some display systems. Well-defined fixed-time constraints. Hard real-time system. Secondary storage limited or absent, data stored in short-term memory, or read-only memory (ROM) Conflicts with time-sharing systems, not supported by general-purpose operating systems. Soft real-time system Limited utility in industrial control or robotics Useful in applications (multimedia, virtual reality) requiring advanced operating-system features.
Parallel systems Multiprocessor systems with more than one CPU in close communication. Tightly coupled system – processors share memory and a clock; communication usually takes place through the shared memory. Advantages of parallel system: Increased throughput Economical Increased reliability graceful degradation fail-soft systems
Distributed Systems Distribute the computation among several physical processors Loosely coupled system – each processor has its own local memory; processors communicate with one another through various communications lines, such as high-speed buses or telephone lines Advantages of distributed systems Resources Sharing Computation speed up – load sharing Reliability Communications
Distributed systems - cont. Network operating system provides file sharing provides communication scheme runs independently from other computers on the network Distributed operating system less autonomy between computers gives the impression there is a single operating system controlling the network.
Migration of Operating-System Concepts and Features
Evolution of Modern OS Timesharing Network OS PC & Wkstation Batch Real-Time Memory Mgmt Protection Scheduling Files Devices System software Human-Computer Interface Client-Server Model Protocols Small Computer Network storage, Resource management