Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

CSE 370 - Introduction to Operating Systems

From Fall 2000

Related Books

Free with a 30 day trial from Scribd

See all
  • Be the first to comment

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>