CSE 370 - Introduction to Operating Systems


Published on

From Fall 2000

Published in: Education, Technology
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

CSE 370 - Introduction to Operating Systems

  1. 1. CSE 380 Introduction to Operating Systems Insup Lee Fall 00
  2. 2. What is an Operating System? <ul><li>A piece of software that provides a convenient, efficient environment for the execution of user programs. </li></ul>Hardware Operating systems Systems software Applications software Users
  3. 3. Resource Abstraction and Sharing <ul><li>Hides the details of how the hardware operates </li></ul><ul><li>Provides an abstract model of the operation of hardware components </li></ul><ul><ul><li>generalize hardware behavior </li></ul></ul><ul><ul><li>limit the flexibility in which hardware can be manipulated </li></ul></ul><ul><li>Computation model: processes, threads </li></ul><ul><li>Resources: memory, disk, files, cpu, etc. </li></ul>
  4. 4. Why do we need an operating system? <ul><li>User viewpoint -- provide user interface, command interpreter, directory structure, utility programs (compilers, editors, filters) </li></ul><ul><li>Program environment viewpoint -- enhance the bare machine higher-level I/O, structure files, notion of independent processes, improved store (size, protection) </li></ul><ul><li>Efficiency viewpoint -- replace a human operator scheduling jobs, storing I/O (files), invoking necessary programs such as compiler </li></ul><ul><li>Economic viewpoint -- allow concurrent uses and good scheduling of resources </li></ul><ul><li>So, the goals are to make the system convenient to use (via system calls) and to manage resources efficiently. </li></ul>
  5. 5. Evolution of an OS <ul><li>Hardware upgrades </li></ul><ul><li>New types of hardware </li></ul><ul><li>New services </li></ul><ul><li>Fixes </li></ul>
  6. 6. Brief History of Operating Systems <ul><li>1940's -- First Computers </li></ul><ul><li>1950's -- Batch Processing </li></ul><ul><li>1960's -- Multiprogramming (timesharing) </li></ul><ul><li>1970's -- Minicomputers & Microprocessors </li></ul><ul><li>Late 1970's, 1980's -- Networking, Distributed Systems, Parallel Systems </li></ul><ul><li>1990's and Beyond -- PC’s, WWW, Mobile Systems </li></ul>
  7. 7. 1940's -- First Computers <ul><li>Computer dedicated to one user/programmer at a time. Program loaded manually by programmer, using console switches. Debugging using console lights. </li></ul><ul><li>Advantages: </li></ul><ul><ul><li>Interactive (user gets immediate response) </li></ul></ul><ul><li>Disadvantages: </li></ul><ul><ul><li>Expensive machine idle most of time, because people are slow. </li></ul></ul><ul><ul><li>Programming & debugging are tedious. </li></ul></ul><ul><ul><li>Each program must include code to operate peripherals -- error prone, device dependencies. </li></ul></ul><ul><li>Libraries of subroutines to drive peripherals are example of typical OS service. </li></ul>
  8. 8. 1950's -- Batch Processing <ul><li>User/programmer submits a deck of cards that describes a job to be executed. </li></ul><ul><li>Jobs submitted by various users are sequenced automatically by a resident monitor. </li></ul><ul><li>Tape drives available for batching of input and spooling of output. </li></ul><ul><li>Advantages: </li></ul><ul><ul><li>Computer system is kept busier. </li></ul></ul><ul><li>Disadvantages: </li></ul><ul><ul><li>No longer interactive; longer turnaround time. </li></ul></ul><ul><ul><li>CPU is still idle for I/O-bound jobs. </li></ul></ul><ul><li>OS issues -- command processor (JCL), protection of resident monitor from user programs, loading of user programs after monitor. </li></ul>
  9. 9. 1960's -- Multiprogramming (timesharing) <ul><li>The advent of the I/O processor made simultaneous I/O and CPU processing possible. </li></ul><ul><li>CPU is multiplexed (shared) among a number of jobs -- while one job waiting for I/O, another can use CPU. </li></ul><ul><li>Advantages: </li></ul><ul><ul><li>Interactiveness is restored. </li></ul></ul><ul><ul><li>CPU is kept busy. </li></ul></ul><ul><li>Disadvantages: </li></ul><ul><ul><li>Hardware and O.S. required become significantly more complex. </li></ul></ul><ul><li>Timesharing - switch CPU among jobs for pre-defined time interval </li></ul><ul><li>Most O.S. issues arise from trying to support multiprogramming -- CPU scheduling, deadlock, protection, memory management, virtual memory, etc. </li></ul><ul><li>CTSS (Compatible Time Sharing System), Multics </li></ul>
  10. 10. 1970's - Minicomputers & Microprocessors <ul><li>Trend toward many small to mid-range personal computers, rather than a single mainframe. </li></ul><ul><li>Early minicomputers and microprocessors were small, so there was some regression to earlier OS ideas. </li></ul><ul><ul><li>e.g. DOS on PC is still essentially a batch system similar to those used in 1960, with some modern OS ideas thrown in (e.g., hierarchical file system). </li></ul></ul><ul><li>This trend is changing rapidly because of powerful new microprocessors. </li></ul><ul><li>Also, the user interface became more important. </li></ul><ul><li>UNIX, DOS </li></ul>
  11. 11. Late 1970's, 1980's - Networking <ul><li>Powerful workstations (e.g., PDP, VAX, Sunstations, etc.) </li></ul><ul><li>Local area networks (e.g., Ethernet, Token ring) and long-distance network (Arpanet) </li></ul><ul><li>Networks organized with clients and servers </li></ul><ul><li>Decentralization of computing requires more communication (e.g., resource sharing) </li></ul><ul><li>O.S. issues -- network communication protocols, data encryption, security, reliability, consistency of distributed data </li></ul><ul><li>Real-Time Systems – timing constraints, deadlines, QoS (90’s term) </li></ul>
  12. 12. 1990's and Beyond <ul><li>Parallel Computing (tera-flops) </li></ul><ul><li>Powerful PCs, Multimedia computers </li></ul><ul><li>High-speed, long-distance communication links to send large amounts of data, including graphical, audio and video </li></ul><ul><li>World Wide Web </li></ul><ul><li>Electronic notebooks using wireless communication technologies </li></ul><ul><li>O.S. issues -- Large heterogeneous systems, mobile computing, etc. </li></ul>
  13. 13. Basic OS Concepts <ul><li>Processes: programs in execution </li></ul><ul><li>Resources (e.g., files, memory, display) </li></ul><ul><ul><li>A process must request it from the OS </li></ul></ul><ul><ul><li>The process is blocked until it is allocated </li></ul></ul><ul><li>System calls </li></ul><ul><li>Shell -- command interpreter </li></ul>
  14. 14. Services provided by OS <ul><li>Program creation </li></ul><ul><li>Program execution </li></ul><ul><li>Access to I/O devices </li></ul><ul><li>Controlled access to files </li></ul><ul><li>Error detection and response </li></ul><ul><ul><li>hardware errors (e.g., memory error, device failures) </li></ul></ul><ul><ul><li>software errors (e.g., overflow, out of memory boundary) </li></ul></ul><ul><li>Accounting </li></ul><ul><ul><li>collect usage statistics, monitor performance </li></ul></ul>
  15. 15. Services Provided by OS (2) <ul><li>CPU scheduling: allocate computing time among several processes </li></ul><ul><li>Memory management: allocate main memory among several processes </li></ul><ul><li>Swapping: move processes and their data between main memory and secondary storage </li></ul><ul><li>I/O device drivers: specialized code required to operate I/O devices </li></ul><ul><li>File system: organize mass storage (disk) into files and directories </li></ul><ul><li>Utilities: date/time, accounting, file copy, etc. </li></ul><ul><li>Command interpreter: allow users to enter commands interactively </li></ul><ul><li>System calls: allow user programs access to O.S. services </li></ul><ul><li>Protection: keep processes from interfering with each other and system </li></ul><ul><li>Communication & Resource sharing: allow users/processes to communicate (over networks) and share resources (e.g., laser printers, disks, etc.) </li></ul><ul><li>Security: protect machines from intruders, worms and viruses </li></ul>
  16. 16. Factors in OS Design <ul><li>Engineering factors: </li></ul><ul><ul><li>Performance/Efficiency -- CPU utilization, resource utilization (e.g. disks), response time </li></ul></ul><ul><ul><li>Correctness/Reliability -- error-free (no software crashes) </li></ul></ul><ul><ul><li>Maintainability -- modular construction, clearly defined interfaces, well-documented </li></ul></ul><ul><ul><li>Small in size-- main memory and secondary storage valuable, larger means more error-prone, larger means takes longer to write </li></ul></ul><ul><li>Non-engineering factors: </li></ul><ul><ul><li>Commercial factors </li></ul></ul><ul><ul><li>Standards and open systems </li></ul></ul>
  17. 17. Operating System Structure <ul><li>Monolithic Systems </li></ul><ul><li>Layered Systems </li></ul><ul><li>Virtual Machines </li></ul><ul><li>Client-Server Model </li></ul>