OS History and OS Structures

Similar documents
Lecture 2 Fundamental OS Concepts. Bo 2018, Spring

Opera&ng Systems: Principles and Prac&ce. Tom Anderson

Introduction to the Process David E. Culler CS162 Operating Systems and Systems Programming Lecture 2 Sept 3, 2014

Operating Systems: Principles and Practice. Mark Zbikowski Gary Kimura (kudos to Tom Anderson)

Spring It takes a really bad school to ruin a good student and a really fantastic school to rescue a bad student. Dennis J.

Disciplina Sistemas de Computação

The Kernel Abstrac/on

Operating Systems. Minati De. Lecture 1: Introduction. Department of Mathematics, Indian Institute of Technology Delhi, India.

Main Points. Address Transla+on Concept. Flexible Address Transla+on. Efficient Address Transla+on

Lecture 2: Processes. CSE 120: Principles of Opera9ng Systems. UC San Diego: Summer Session I, 2009 Frank Uyeda

CSE Opera*ng System Principles

CSE 153 Design of Operating Systems

Background. IBM sold expensive mainframes to large organiza<ons. Monitor sits between one or more OSes and HW

CS 152 Computer Architecture and Engineering CS252 Graduate Computer Architecture. Lecture 9 Virtual Memory

Lecture 8: Memory Management

Background. IBM sold expensive mainframes to large organiza<ons. Monitor sits between one or more OSes and HW

CSci 5103 Operating Systems. Jon Weissman. Administrivia

Opera&ng Systems ECE344

Single and mul,threaded processes

Alterna(ve Architectures

Page 1. Virtual Machines (Recap)" Nachos: Virtual OS Environment" System Virtual Machines: Layers of OSs"

Processes. CS 475, Spring 2018 Concurrent & Distributed Systems

CSE Opera+ng System Principles

Virtual Memory: Concepts

Address spaces and memory management

Caching and Demand- Paged Virtual Memory

CSE Opera+ng System Principles

Processes. Dr. Yingwu Zhu

CSE Opera,ng System Principles

Operating Systems CMPSCI 377 Spring Mark Corner University of Massachusetts Amherst

CSE 153 Design of Operating Systems Fall 18

Lecture 2: Architectural Support for OSes

CS162 Operating Systems and Systems Programming Lecture 3. Concurrency: Processes, Threads, and Address Spaces. Review: History of OS

CSE 153 Design of Operating Systems

Page 1. Virtual Machines (Recap)" Nachos: Virtual OS Environment (Recap)" System VMs: Layers of OSs (Recap)"

Opera.ng Systems History and Overview

Virtual Memory: Concepts

Virtual Memory B: Objec5ves

CSE 120 Principles of Operating Systems

Operating systems Architecture

CS5460: Operating Systems

CSE 306: Opera.ng Systems Opera.ng Systems History and Overview

Kernels & Processes The Structure of the Operating System

16 Sharing Main Memory Segmentation and Paging

Processes and Threads

Background: Operating Systems

Slide 6-1. Processes. Operating Systems: A Modern Perspective, Chapter 6. Copyright 2004 Pearson Education, Inc.

Networks and Operating Systems Chapter 11: Introduction to Operating Systems

CSCI 6411: Operating Systems. Acknowledgements: Some slide material derived from Silberschatz, et al.

CS 5460/6460 Operating Systems

CSE 120 Principles of Operating Systems

15 Sharing Main Memory Segmentation and Paging

ELEC 377 Operating Systems. Week 1 Class 2

Opera&ng Systems ECE344

This lecture. Virtual Memory. Virtual memory (VM) CS Instructor: Sanjeev Se(a

COS 318: Operating Systems

Anne Bracy CS 3410 Computer Science Cornell University

Recall: Four fundamental OS concepts. Recall: give the illusion of multiple processors? Process Control Block

Anne Bracy CS 3410 Computer Science Cornell University

Lecture 2: Memory in C

CSC369 Lecture 2. Larry Zhang, September 21, 2015

Lecture 4: Memory Management & The Programming Interface

Last 2 Classes: Introduction to Operating Systems & C++ tutorial. Today: OS and Computer Architecture

Threads and Concurrency

csci3411: Operating Systems

The Kernel Abstraction. Chapter 2 OSPP Part I

Introduction to System Programming

Introduction. CS3026 Operating Systems Lecture 01

Xen and the Art of Virtualiza2on

Protection and System Calls. Otto J. Anshus

Operating Systems: Internals and Design Principles. Chapter 2 Operating System Overview Seventh Edition By William Stallings

CPSC/ECE 3220 Fall 2017 Exam Give the definition (note: not the roles) for an operating system as stated in the textbook. (2 pts.

CSCI 350 Ch. 1 Introduction to OS. Mark Redekopp Ramesh Govindan and Michael Shindler

Process Scheduling Queues

Introduction to Operating Systems. Chapter Chapter

csci3411: Operating Systems

CS 326: Operating Systems. Process Execution. Lecture 5

Operating Systems. Pablo Prieto Torralbo. 1. Introduction DEPARTMENT OF COMPUTER ENGINEERING

Syscalls, exceptions, and interrupts, oh my!

Operating System. Operating System Overview. Structure of a Computer System. Structure of a Computer System. Structure of a Computer System

Architectural Support for Operating Systems

Operating System Architecture. CS3026 Operating Systems Lecture 03

CSC369 Lecture 2. Larry Zhang

The Kernel Abstraction

Threads. COMP 401 Fall 2017 Lecture 22

Midterm 1. Administrivia. Virtualizing Resources. CS162 Operating Systems and Systems Programming Lecture 12. Address Translation

Threads and Concurrency

What s the difference between threads/processes. Operating Systems

9/19/18. COS 318: Operating Systems. Overview. Important Times. Hardware of A Typical Computer. Today CPU. I/O bus. Network

Questions answered in this lecture: CS 537 Lecture 19 Threads and Cooperation. What s in a process? Organizing a Process

Distributed Systems Operation System Support

ecture 33 Virtual Memory Friedland and Weaver Computer Science 61C Spring 2017 April 12th, 2017

CS162 Operating Systems and Systems Programming Lecture 12. Protection (continued) Address Translation

Roadmap. Tevfik Koşar. CSE 421/521 - Operating Systems Fall Lecture - II OS Structures. University at Buffalo. OS Design and Implementation

OS Design Approaches. Roadmap. System Calls. Tevfik Koşar. Operating System Design and Implementation. CSE 421/521 - Operating Systems Fall 2013

CS 465 Final Review. Fall 2017 Prof. Daniel Menasce

CS370 Operating Systems

CSE351 Inaugural Edi7on Spring

Today s Topics. u Thread implementation. l Non-preemptive versus preemptive threads. l Kernel vs. user threads

Confinement (Running Untrusted Programs)

Transcription:

OS History and OS Structures Karthik Dantu CSE 421/521: Opera>ng Systems Slides adopted from CS162 class at Berkeley, CSE 451 at U-Washington and CSE 421 by Prof Kosar at UB

Join Piazza Ac>on Items From Last Class Look through assignment#0 Set up development environment: VirtualBox + Ubuntu 16.04 Implement assignment and test in the environment Form groups

What is an OS? Users SoYware to manage a computer s resources for its users and applica>ons User-mode Kernel-mode APP System Library APP System Library Kernel-user Interface (Abstract virtual machine) APP System Library File System Virtual Memory TCP/IP Networking Scheduling Hardware Abstraction Layer Hardware-Specific Software and Device Drivers Hardware Processors Address Translation Disk Graphics Processor Network

Computer Performance Over Time 1981 1997 2014 Factor (2014/1981) Uniprocessor speed (MIPS) 1 200 2500 2.5K CPUs per computer 1 1 10+ 10+ Processor MIPS/$ $100K $25 $0.20 500K DRAM Capacity (MiB)/$ 0.002 2 1K 500K Disk Capacity (GiB)/$ 0.003 7 25K 10M Home Internet 300 bps 256 Kbps 20 Mbps 100K 10 Mbps 100 Mbps 10 Gbps Machine room network 1000 (shared) (switched) (switched) Ratio of users to computers 100:1 1:1 1:several 100+

Early Opera>ng Systems: Serial Opera>ons One applica>on at a >me Had complete control of hardware OS was run>me library Users would stand in line to use the computer Batch systems Keep CPU busy by having a queue of jobs OS would load next job while current one runs Users would submit jobs, and wait, and wait, and

Time-Sharing Opera>ng Systems: Client-Server Age Mul>ple users on computer at same >me Mul>programming: run mul>ple programs at same >me Interac>ve performance: try to complete everyone s tasks quickly As computers became cer, more important to op>mize for user >me, not computer >me

Today s Opera>ng Systems: Smartphones Embedded systems Laptops Tablets Virtual machines Data center servers Computers C

Tomorrow s Opera>ng Systems Giant-scale data centers Increasing numbers of processors per computer Increasing numbers of computers per user Very large scale storage Mark Weiser: Ubiquitous and Pervasive Compu>ng

OS History

Unix History First developed in 1969 by Ken Thompson and Dennis Ritchie of the Research Group at Bell Laboratories; incorporated features of other opera>ng systems, especially MULTICS The third version was wriden in C, which was developed at Bell Labs specifically to support UNIX The most influen>al of the non-bell Labs and non-at&t UNIX development groups University of California at Berkeley (Berkeley SoYware Distribu>ons - BSD) 4BSD UNIX resulted from DARPA funding to develop a standard UNIX system for government use Developed for the VAX, 4.3BSD is one of the most influen>al versions, and has been ported to many other planorms Several standardiza>on projects seek to consolidate the variant flavors of UNIX leading to one programming interface to UNIX

Timeline of Unix versions

What is an OS? Users SoYware to manage a computer s resources for its users and applica>ons User-mode Kernel-mode APP System Library APP System Library Kernel-user Interface (Abstract virtual machine) APP System Library File System Virtual Memory TCP/IP Networking Scheduling Hardware Abstraction Layer Hardware-Specific Software and Device Drivers Hardware Processors Address Translation Disk Graphics Processor Network

Opera>ng System Roles Referee: Resource alloca>on among users, applica>ons Isola>on of different users, applica>ons from each other Communica>on between users, applica>ons Illusionist Each applica>on appears to have the en>re machine to itself Infinite number of processors, (near) infinite amount of memory, reliable storage, reliable network transport Glue Libraries, user interface widgets,

Example: File Systems Referee Prevent users from accessing each other s files without permission Even ayer a file is dele>ng and its space re-used Illusionist Files can grow (nearly) arbitrarily large Files persist even when the machine crashes in the middle of a save Glue Named directories, prinn,

Ques>on What (hardware, soyware) do you need to be able to run an untrustworthy applica>on?

OS Challenges - Correctness Reliability Does the system do what it was designed to do? Availability What por>on of the >me is the system working? Mean Time To Failure (MTTF), Mean Time to Repair Security Can the system be compromised by an adacker? Privacy Data is accessible only to authorized users

OS Challenges Wide Applicability Portability For programs: Applica>on programming interface (API) Abstract virtual machine (AVM) For the opera>ng system Hardware abstrac>on layer Users User-mode Kernel-mode APP System Library File System TCP/IP Networking APP System Library Kernel-user Interface (Abstract virtual machine) Hardware Abstraction Layer Hardware-Specific Software and Device Drivers Virtual Memory APP System Library Scheduling Hardware Processors Address Translation Disk Graphics Processor Network

OS Challenges - Performance Latency/response >me How long does an opera>on take to complete? Throughput How many opera>ons can be done per unit of >me? Overhead How much extra work is done by the OS? Fairness How equal is the performance received by different users? Predictability How consistent is the performance over >me?

OPERATING SYSTEMS STRUCTURES

Today: Four Fundamental OS Concepts Thread Single unique execu>on context: fully describes program state Program Counter, Registers, Execu>on Flags, Stack Address space (with transla>on) Programs execute in an address space that is dis>nct from the memory space of the physical machine Process An instance of an execu>ng program is a process consis,ng of an address space and one or more threads of control Dual mode opera>on / Protec>on Only the system has the ability to access certain resources The OS and the hardware are protected from user programs and user programs are isolated from one another by controlling the transla,on from program virtual addresses to machine physical addresses

OS Bodom Line: Run Programs Program Source Executable OS 0xFFF editor int main() { ; } compiler data instructions Load & Execute Memory foo.c a.out data Load instruc>on and data segments of executable file into memory Create and Transfer control to program Provide services to program While protec>ng OS and program PC: instructions registers Processor 0x000

Instruc>on Fetch/De/Execute Cycle The instruc>on cycle Processor next Memory PC: Instruction fetch instruction De de Registers Execute ALU data

What happens during program execu>on? R0 R31 F0 F30 PC Fetch Exec Execu>on sequence: Fetch Instruc>on at PC De Execute (possibly using registers) Write results to registers/mem PC = Next Instruc>on(PC) Repeat Addr 2 32-1 Data1 Data0 Inst237 Inst236 Inst5 Inst4 Inst3 Inst2 Inst1 Inst0 Addr 0 PC PC PC PC

First OS Concept: Thread of Control Certain registers hold the context of thread Stack pointer holds the address of the top of Other conven>ons: Frame pointer, Heap pointer, Data May be defined by the instruc>on set architecture or by compiler conven>ons Thread: Single unique execu>on context Program Counter, Registers, Execu>on Flags, Stack A thread is execu>ng on a processor when it is resident in the processor registers. PC register holds the address of execu>ng instruc>on in the thread Registers hold the root state of the thread. The rest is in memory

Second OS Concept: Program s Address Space Address space the set of accessible addresses + state associated with them: For a 32-bit processor there are 2 32 = 4 billion addresses 0xFFF What happens when you read or write to an address? Perhaps nothing Perhaps acts like regular memory Perhaps ignores writes Perhaps causes I/O opera>on (Memory-mapped I/O) Perhaps causes excep>on (fault) 0x000

Address Space: In a Picture PC: SP: 0xFFF Processor registers instruction Code Segment 0x000 What s in the segment? Sta>c data segment? What s in the Stack Segment? How is it allocated? How big is it? What s in the Heap Segment? How is it allocated? How big?

Mul>programming - Mul>ple Threads of Control Proc 1 Proc 2 Proc n OS CPU

How can we give the illusion of mul>ple processors? vcpu1 vcpu2 vcpu3 Shared Memory vcpu1 vcpu2 vcpu3 vcpu1 vcpu2 Time Assume a single processor. How do we provide the illusion of mul>ple processors? Mul>plex in >me! Each virtual CPU needs a structure to hold: Program Counter (PC), Stack Pointer (SP) Registers (Integer, Floa>ng point, others?) How switch from one virtual CPU to the next? Save PC, SP, and registers in current state block Load PC, SP, and registers from new state block What triggers switch? Timer, voluntary yield, I/O, other things

The Basic Problem of Concurrency The basic problem of concurrency involves resources: Hardware: single CPU, single DRAM, single I/O devices Mul>programming API: processes think they have exclusive access to shared resources OS has to coordinate all ac>vity Mul>ple processes, I/O interrupts, How can it keep all these things straight? Basic Idea: Use Virtual Machine abstrac>on Simple machine abstrac>on for processes Mul>plex these abstract machines

Proper>es of this simple mul>programming technique All virtual CPUs share same non-cpu resources I/O devices the same Memory the same Consequence of sharing: Each thread can access the data of every other thread (good for sharing, bad for protec>on) Threads can share instruc>ons (good for sharing, bad for protec>on) Can threads overwrite OS func>ons? This (unprotected) model is common in: Embedded applica>ons Windows 3.1/Early Macintosh (switch only with yield) Windows 95 ME (switch with both yield and >mer)

Protec>on Opera>ng System must protect itself from user programs Reliability: compromising the opera>ng system generally causes it to crash Security: limit the scope of what processes can do Privacy: limit each process to the data it is permided to access Fairness: each should be limited to its appropriate share of system resources (CPU >me, memory, I/O, etc) It must protect User programs from one another Primary Mechanism: limit the transla>on from program address space to physical memory space Can only touch what is mapped into process address space Addi>onal Mechanisms: Privileged instruc>ons, in/out instruc>ons, special registers syscall processing, subsystem implementa>on (e.g., file access rights, etc)

Third OS Concept: Process Process: execu>on environment with Restricted Rights Address Space with One or More Threads Owns memory (address space) Owns file descriptors, file system context, Encapsulate one or more threads sharing process resources Why processes? Protected from each other! OS Protected from them Processes provides memory protec>on Threads more efficient than processes (later) Fundamental tradeoff between protec>on and efficiency Communica>on easier within a process Communica>on harder between processes Applica>on instance consists of one or more processes E.g., Facebook app on your phone

Single and Mul>threaded Processes Threads encapsulate concurrency: Ac>ve component Address spaces encapsulate protec>on: Passive part Keeps buggy program from trashing the system Why have mul>ple threads per address space? E.g., web server

Fourth OS Concept: Dual Mode Opera>on Hardware provides at least two modes: Kernel mode (or supervisor or protected ) User mode: Normal programs executed What is needed in the hardware to support dual mode opera>on? A bit of state (user/system mode bit) Certain opera>ons / ac>ons only permided in system/kernel mode In user mode they fail or trap User à Kernel transi>on sets system mode AND saves the user PC Opera>ng system carefully puts aside user state then performs the necessary opera>ons Kernel à User transi>on clears system mode AND restores appropriate user PC return-from-interrupt

User/Kernel (Privileged) Mode syscall exec User Mode interrupt exception rtn rfi Kernel Mode exit Limited HW access Full HW access

Simple Protec>on: Base and Bound 0000 (B&B) 0000 0100 Base 0010 Program address 1010 1000 >= 1000 Bound 1100 < 1100 FFFF

Simple Protec>on: Base and Bound 0000 (B&B) 0000 0100 Base 0010 Program address 1010 1000 >= 1000 Addresses translated when program is loaded Bound 1100 Requires reloca>ng loader S>ll protects OS and isolates program No addi>on on address path < 1100 FFFF

Another idea: Address Space Transla>on Program operates in an address space that is dis>nct from the physical memory space of the machine 0x000 Processor translator Memory 0xFFF

A simple address transla>on with Base and 0000 Bound Addresses translated on-the-fly 0000 Base Address 0010 Program address 0010 1000 1000 Bound < 0100 1100 Can the program touch OS? Can it touch other programs? FFFF

Proc 1 Tying it together: Simple B&B: OS loads Proc 2 OS Proc n process 0000 sysmode Base 1 xxxx 0000 1000 Bound xxxx FFFF upc PC regs xxxx 1100 3000 3080 FFFF

Proc 1 Simple B&B: OS gets ready to execute Proc 2 Proc n process RTU 0000 OS sysmode Base 1 1000 0000 1000 Bound 1100 FFFF Privileged Inst: set special registers upc PC regs 0001 00FF 1100 3000 3080 RTU FFFF

Simple B&B: User Code Running Proc 1 Proc 2 Proc n 0000 OS sysmode Base 0 1000 0000 1000 How does kernel switch between processes? Bound First ques>on: How to return to system? upc PC regs 1100 xxxx 0001 00FF FFFF 1100 3000 3080 FFFF

3 types of Mode Transfer Syscall Process requests a system service, e.g., exit Like a func>on call, but outside the process Does not have the address of the system func>on to call Like a Remote Procedure Call (RPC) for later Marshall the syscall id and args in registers and exec syscall Interrupt External asynchronous event triggers context switch e. g., Timer, I/O device Independent of user process Trap or Excep>on Internal synchronous event in process triggers context switch e.g., Protec>on viola>on (segmenta>on fault), Divide by zero, All 3 are an UNPROGRAMMED CONTROL TRANSFER Where does it go?

How do we get the system target address of the unprogrammed control transfer?

Interrupt Vector interrupt number (i) Address and properties of each interrupt handler intrphandler_i () {. }

Simple B&B: User => Kernel Proc 1 Proc 2 Proc n 0000 OS sysmode Base 0 1000 0000 1000 Bound 1100 FFFF upc PC regs How to return to system? xxxx 0000 1234 00FF 1100 3000 3080 FFFF

Simple B&B: Interrupt Proc 1 Proc 2 Proc n 0000 OS sysmode Base 1 1000 0000 1000 Bound 1100 FFFF upc PC regs How to save registers and set up system? 0000 1234 IntrpVector[i] 00FF 1100 3000 3080 FFFF

Simple B&B: Switch User Process Proc 1 Proc 2 Proc n RTU 0000 OS 1000 1100 0000 1234 regs 00FF sysmode Base Bound upc PC regs How to save registers and set up system? 1 3000 0080 0000 0248 0001 0124 00D0 0000 FFFF 1000 1100 3000 3080 FFFF

Simple B&B: resume Proc 1 Proc 2 Proc n RTU 0000 OS 1000 1100 0000 1234 regs 00FF sysmode Base Bound upc PC regs How to save registers and set up system? 0 3000 0080 xxxx xxxx 000 0248 00D0 0000 FFFF 1000 1100 3000 3080 FFFF

Conclusion: Four fundamental OS concepts Thread Single unique execu>on context Program Counter, Registers, Execu>on Flags, Stack Address Space with Transla>on Programs execute in an address space that is dis>nct from the memory space of the physical machine Process An instance of an execu>ng program is a process consis,ng of an address space and one or more threads of control Dual Mode opera>on/protec>on Only the system has the ability to access certain resources The OS and the hardware are protected from user programs and user programs are isolated from one another by controlling the transla,on from program virtual addresses to machine physical addresses