Advanced Operating Systems (263 3800 00L)



Similar documents
Microkernels, virtualization, exokernels. Tutorial 1 CSC469

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

Kernel Types System Calls. Operating Systems. Autumn 2013 CS4023

Processes and Non-Preemptive Scheduling. Otto J. Anshus

Review from last time. CS 537 Lecture 3 OS Structure. OS structure. What you should learn from this lecture

COS 318: Operating Systems

Datacenter Operating Systems

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

Operating System Overview. Otto J. Anshus

Example of Standard API

An Implementation Of Multiprocessor Linux

Real-Time Systems Prof. Dr. Rajib Mall Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Operating System Organization. Purpose of an OS

Tools Page 1 of 13 ON PROGRAM TRANSLATION. A priori, we have two translation mechanisms available:

Chapter 6, The Operating System Machine Level

Operating Systems OS Architecture Models

OS Concepts and structure

Thomas Fahrig Senior Developer Hypervisor Team. Hypervisor Architecture Terminology Goals Basics Details

How do Users and Processes interact with the Operating System? Services for Processes. OS Structure with Services. Services for the OS Itself

3 - Introduction to Operating Systems

How To Write A Windows Operating System (Windows) (For Linux) (Windows 2) (Programming) (Operating System) (Permanent) (Powerbook) (Unix) (Amd64) (Win2) (X

Xen and the Art of. Virtualization. Ian Pratt

CS 377: Operating Systems. Outline. A review of what you ve learned, and how it applies to a real operating system. Lecture 25 - Linux Case Study

CSE 120 Principles of Operating Systems. Modules, Interfaces, Structure

Virtualization Technologies

Operatin g Systems: Internals and Design Principle s. Chapter 10 Multiprocessor and Real-Time Scheduling Seventh Edition By William Stallings

Full and Para Virtualization

ELEC 377. Operating Systems. Week 1 Class 3

First-class User Level Threads

COS 318: Operating Systems. Virtual Machine Monitors

Multi-core Programming System Overview

Introduction to Embedded Systems. Software Update Problem

Operating Systems Concepts: Chapter 7: Scheduling Strategies

Chapter 3 Operating-System Structures

COS 318: Operating Systems. Virtual Machine Monitors

Quality of Service su Linux: Passato Presente e Futuro

Core Syllabus. Version 2.6 C OPERATE KNOWLEDGE AREA: OPERATION AND SUPPORT OF INFORMATION SYSTEMS. June 2006

Chapter 1: Introduction. What is an Operating System?

Principles and characteristics of distributed systems and environments

Chapter 2 System Structures

Multiprocessor Scheduling and Scheduling in Linux Kernel 2.6


CS550. Distributed Operating Systems (Advanced Operating Systems) Instructor: Xian-He Sun

PART IV Performance oriented design, Performance testing, Performance tuning & Performance solutions. Outline. Performance oriented design

Simplest Scalable Architecture

Uses for Virtual Machines. Virtual Machines. There are several uses for virtual machines:

(Advanced Topics in) Operating Systems

Stateful Inspection Technology

Process Description and Control william stallings, maurizio pizzonia - sistemi operativi

Operating Systems 4 th Class

FAME Operating Systems

CS5460: Operating Systems

Real-Time Scheduling 1 / 39

A Unified View of Virtual Machines

Chapter 16: Virtual Machines. Operating System Concepts 9 th Edition

Road Map. Scheduling. Types of Scheduling. Scheduling. CPU Scheduling. Job Scheduling. Dickinson College Computer Science 354 Spring 2010.

Linux Process Scheduling Policy

Exokernel : An Operating System Architecture for Application-Level Resource Management. Joong Won Roh

VMware and CPU Virtualization Technology. Jack Lo Sr. Director, R&D

Operating Systems. Notice that, before you can run programs that you write in JavaScript, you need to jump through a few hoops first

Security Overview of the Integrity Virtual Machines Architecture

Virtual Machine Monitors. Dr. Marc E. Fiuczynski Research Scholar Princeton University

Cloud Operating Systems for Servers

Operating System Components and Services

Introduction. What is an Operating System?

Linux Kernel Architecture

Overview of Operating Systems Instructor: Dr. Tongping Liu

Parallels Virtuozzo Containers

Virtualization for Cloud Computing

Microkernels & Database OSs. Recovery Management in QuickSilver. DB folks: Stonebraker81. Very different philosophies

Knut Omang Ifi/Oracle 19 Oct, 2015

Real Time Programming: Concepts

An Oracle Technical White Paper November Oracle Solaris 11 Network Virtualization and Network Resource Management

The Microsoft Windows Hypervisor High Level Architecture

Chapter 1 - Web Server Management and Cluster Topology

Lecture 25 Symbian OS

Embedded Systems. 6. Real-Time Operating Systems

Chapter 5 Cloud Resource Virtualization

VMkit A lightweight hypervisor library for Barrelfish

HyperV_Mon 3.0. Hyper-V Overhead. Introduction. A Free tool from TMurgent Technologies. Version 3.0

Operating System Structure

System Structures. Services Interface Structure

Enhancing Hypervisor and Cloud Solutions Using Embedded Linux Iisko Lappalainen MontaVista

Mark Bennett. Search and the Virtual Machine

Operating System Tutorial

Proposal for Virtual Private Server Provisioning

Real-Time Operating Systems for MPSoCs

Basics of Virtualisation

Distributed Operating Systems

find model parameters, to validate models, and to develop inputs for models. c 1994 Raj Jain 7.1

Objectives. Chapter 2: Operating-System Structures. Operating System Services (Cont.) Operating System Services. Operating System Services (Cont.

CS161: Operating Systems

Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces

Lecture 6: Interrupts. CSC 469H1F Fall 2006 Angela Demke Brown

Agenda. Enterprise Application Performance Factors. Current form of Enterprise Applications. Factors to Application Performance.

Transcription:

Advanced Operating Systems (263 3800 00L) Timothy Roscoe Fall 2014 https://www.systems.ethz.ch/courses/fall2014/aos Systems Group Department of Computer Science ETH Zürich 1

Week 3: OS Architecture, Threads, and Dispatch (263 3800 00L) Timothy Roscoe Fall 2014 https://www.systems.ethz.ch/courses/fall2014/aos Systems Group Department of Computer Science ETH Zürich 2

What today is about The structure of an OS How threads can be implemented How the kernel is organized How the rest of the OS is arranged Preparation for next week's assignment: Self paging, and handling upcalls 3

OS Architecture 4

What is Operating System Architecture? Coarse grained structure of the OS How the complexity is factored Mapping onto: Programming language features Execution environment presented to applications Address spaces Hardware protection features (rings, levels, etc.) Execution patterns (subroutines, threads,. coroutines) Hardware execution (interrupts, traps, call gates) 5

Architectural models There are many, and they are models! Idealized, extreme view of how system is structured Real systems always entail compromises Hard to convey it s good to build a few Think of these as tools for thinking about OSes Each has its reasons Solve particular problems at particular times 6

1. Monolithic / componentbased systems Examples: Cedar [Swinehart et al., 1986] TinyOS [Hill et al., 2004] Oberon Singularity [Hunt and Larus, 2007] Hardware provides time multiplexing Interrupts threads (in Cedar s case) Language provides modularity & protection Module calls Inter thread communication 7

Protection based componentbased systems Examples: KeyKOS [Bromberger et al., 1992] Pebble [Bruna et al., 1999] Even simpler kernel than microkernels Kernel only mediates protection domain switches Scheduling, threads, etc. implemented in user space Aimed at: High security (very small TCB) Embedded systems (highly configurable) 8

2. Kernel based systems Examples: Unix [Thompson, 1974], VMS,Windows NT/XP/Vista/7 Hardware enforces user vs. kernel mode Machine in user space multiplexed into address spaces Kernel provides: All shared services All device abstraction 9

3. Microkernels Examples: L4, Mach, Amoeba, Chorus Kernel provides: Threads Address spaces IPC All other functionality in server processes Device drivers File systems Etc. Instead of syscalls, applications send IPC to servers 10

4. Exokernels Kernel provides minimal multiplexing of h/w All other functionality in userspace libraries Unlike microkernels, where this in servers LibraryOS concept Enables: Strong isolation between applications High degree of application specific policies 11

Exokernel systems Two different systems. Two different motivations: 1. Complexity, adaptability, performance Aegis [Kaashoek et al., 1997] 2. QoS crosstalk Nemesis [Leslie et al., 1996] Both approaches are similar: Exterminate OS abstractions Move all code possible into the application s address space library OSes 12

Aegis motivation Exterminate all OS abstractions! A traditional OS or a microkernel such as L4: Multiplexes physical resources Shared, secure access to CPU, memory, network, etc. Abstracts the same physical resources Processes/threads, address spaces, virtual file system, network stack Multiplexing is required for security... but why should an OS abstract what it multiplexes? 13

Nemesis motivation Eliminate QoS crosstalk Consider a network stack: Layered protocol implementation Multiplex at each layer Conceptually, each layer is a process C.f. early Comer books = Multiplexing point HTTP DNS Etc. TCP UDP ICMP IP Appletalk... Protocol? NIC driver 14

Consequences Pluses: Conceptually simple, easy to code Efficient resource usage Minuses: Application of packet only known at top of stack QoS every multiplexing point must schedule Disaster for multimedia / realtime mix QoS Crosstalk 15

Layered multiplexing considered harmful Mux once, down low Rx: HTTP DNS Find target app first TCP UDP Tx: Then execute protocol IP IP Etc. Construct the wire format Encap Encap Encap Check it and mux last All packets scheduled with the application NIC driver Works great with circuits! 16

Server based monolithic OS Video player Multiplexing Web browser points! Audio Server X Server Compiler Monolithic Kernel 17

Multiplexing points in operating system kernels Every server process is effectively multiplexing some resource needs to schedule it. needs to know system wide scheduling policy must be trusted to apply it has to cope with contention and locks is operating outside the control of any application 18

Microkernels? Word processor Window system Video player Network stack Compiler Complexity Nightmare! Filing system Video driver Audio driver Audio server Disk driver Network driver μkernel 19

Result: chaos and crosstalk System is full of shared servers Each with resource contention Each has no application knowledge Multiple levels of dependency No kernel scheduling algorithm can help No IPC performance will help Relevant early 90s work: SVR4 scheduler unacceptable paper Processor Capacity Reserves (complexity!) Resource Containers (ignore the problem!) 20

Nemesis Written for uniprocessor Alpha, 1992 95 64 bit single address space Not a fundamental design motivation, as in Mungi Multi service operating system Mixture of soft real time, communication oriented, interactive, batch jobs Designed for workstations Strong networking influence Published in JSAC! 21

What is (in) an application? In an Exokernel, functionally, everything: User code Network stack Filing system Window system Low level I/O Intra application communication 22

Is this actually achievable? No. But very nearly Kernel overhead scheduling fudge factor Resource contention move out of band (reservations/leases) short, bounded atomic sections 23

Nemesis Application domains Video player Threads package Word processor Coroutine package Compiler Window System Filing system Network stack Disk driver Video driver Audio driver Network driver Window System Filing system Network stack Disk driver Video driver Network driver Filing system Network stack Disk driver Network driver Nemesis Trusted Supervisor Code (NTSC) 24

Nemesis in action: 25

Programmability questions Isn t it all rather complex to move functionality into the app? No: libraries do what the kernel or servers used to do. Does the flexibility impact performance? No: protection checks are mostly off the fast path Each application can efficiently implement its policy What happens on a multiprocessor? Unclear: a multiprocessor kernel requires plenty of embedded policy (e.g. locks) Attempts to produce MP exokernels have not been as dramatically better at performance See Barrelfish later 26

Exokernel challenges Can you really expose all the hardware to the application and still stay sane? Can you multiplex the machine securely while removing (most) abstraction? Apparently, yes: Threads and processes: see scheduler activations! Networking: packet filtering Disks (file systems): block or track level protection, careful management of metadata Window system: similar; blit tiles into protected windows Self paging 27

Kernel thread models: How the kernel provides threads 28

Kernel thread models Key design choices when implementing an OS: Support for > 1 execution context in the kernel? Where is the stack for executing kernel code? Can kernel code block? If so, how? Result: the kernel thread model. 29

Kernel thread models 2 basic alternatives: 1. Per thread kernel stack: Every thread has a matching kernel stack 2. Single kernel stack: Only one stack is used in the kernel (per core). 30

Per thread kernel stack Every user thread/process has its own kernel stack Thread s kernel state implicitly stored in kernel activation stack A kernel thread blocks switch to another kernel stack Resuming: simply switch back to original stack Preemption is easy No conceptual difference between kernel and usermode example(arg1, arg2) { P1(arg1, arg2); if (need_to_block) { thread_block(); P2(arg2); } else { P3(); } /* return to user */ return SUCCESS; } 31

Single kernel stack Challenges: How can a single kernel stack support many application processes/threads? How to handle system calls that block? Two basic approaches: 1. Continuations [Draves et al., 1991] 2. Stateless kernel [Ford et al., 1999] 32

Continuations State to resume blocked thread explicitly saved in TCB Function pointer Variables Stack can be discarded and reused for new thread Resuming involves discarding current stack and restoring the continuation example(arg1, arg2) { P1(arg1, arg2); if (need_to_block) { save_context_in_tcb; thread_block(example_continue); panic("thread_block returned"); } else { P3(); } thread_syscall_return(success); } example_continue() { recover_context_from_tcb; P2(recovered arg2); thread_syscall_return(success); } 33

Stateless kernel System calls simply do not block within kernel If a system call must block: User must restart call when resources are available Kernel stack content discarded Preemption within kernel difficult Must (partially) roll back to a restart point But may not be necessary with careful design Avoid page faults within kernel code System call arguments in registers Nested page fault is fatal 34

Kernel stack model summary Per thread kernel stack Simple, flexible Kernel can always use threads No special technique for saving state when interrupted/blocked No conceptual difference between kernel and user mode Larger cache and memory footprint Used by L4Ka::Pistachio, UNIX, Linux, etc. 35

Kernel stack model summary Single kernel stack Lower cache & memory footprint (always the same stack) Continuations: Complex to program Must save state conservatively (whatever might be needed) Used by Mach, NICTA::Pistachio 36

Kernel stack model summary Single kernel stack Lower cache & memory footprint (always the same stack) Stateless kernel: Also complex to program Must request all resources prior to execution Blocking system calls must be restartable Processor provided stack mgmt. can get in the way System calls need to be atomic Used by Fluke, Nemesis, Exokernel, Barrelfish 37

Why build a stateless kernel? It is the simplest model, if all kernel invocations are: Atomic Non blocking Bounded and short running Non preemptable Guaranteed not to page fault Restrictive, but quite appropriate for a uniprocessor μkernel with no blocking IPC. 38

User thread models: Building user threads over kernel threads 39

The problem Threads are a programming language abstraction (different, possibly parallel activities) should be lightweight, in the language runtime Threads are a kernel abstraction (virtual or physical processors) way to manage big resources like CPUs Threads need to communicate (either within or between address spaces) Thread and IPC performance critical to applications 40

What are the options? 1. Implement multiple threads over a single virtual CPU (kernel thread) Perhaps many VCPUs per process 2. One user level thread per virtual CPU Multiple kernel threads in a process 3. Some combination of the above Multiplex user threads over kernel threads 41

1. Many to one threads User Kernel CPU 0 CPU 1 42

1. Many to one threads Early thread libraries Green threads (original Java VM) GNU Portable Threads Standard student exercise: implement them! Sometimes called pure user level threads No kernel support required Also (confusingly) Lightweight Processes 43

Address space layout for user level threads Thread 1 stack Stack BSS Data Text Just allocate on the heap Thread 3 stack Thread 2 stack BSS Data Text 44

User level threads Older Unices, etc. High performance 10x procedure call Scalable Flexible (application specific) Treat a process as a virtual processor But it isn t: Page faults I/O Multiprocessors 45

2. One to one threads User Kernel CPU 0 CPU 1 46

2. One to one user threads Every user thread is/has a kernel thread. Equivalent to: multiple processes sharing an address space Except that process now refers to a group of threads Most modern OS threads packages: Linux, Solaris, Windows XP, MacOSX, etc. 47

One to one user threads Thread 1 stack Stack Thread 2 stack Thread 3 stack BSS Data Text BSS Data Text 48

Kernel threads Linux, Vista, L4, etc. Excellent integration with the OS Slow similar to process switch time Inflexible kernel policy Evidence: people implemented user level threads over kernel threads anyway same old problems... 49

Comparison User level threads Cheap to create and destroy Fast to context switch Can block entire process Not just on system calls Page faults! One to one threads Easier to schedule Nicely handles blocking Memory usage (kernel stack) Slow to switch Requires kernel crossing 50

3. Many to many threads User Kernel CPU 0 CPU 1 51

2. Many to many threads Multiplex user level threads over several kernel level threads Can pin user thread to kernel thread for performance/predictability Thread migration costs are interesting 52

Issues with modern threads Hard for a runtime to tell: How many user level threads can run at a time (i.e. how many physical cores are allocated) Which user level threads can run (i.e. which physical cores are allocated) Severely limits flexibility of user level scheduler Can critically impact performance of parallel applications. 53

Scheduler Activations and Dispatch 54

Definitions Scheduling: Deciding which task to run Dispatch: How the chosen task starts (or resumes) execution 55

Scheduler activations Basic mechanism: upcall to the ULS from the kernel Context for this: a scheduler activation Structurally like a kernel thread but... created on demand in response to events (blocking, preemption, etc.) User level threads package built on top Hardware: DEC SRC Firefly workstation (7 processor VAX) 56

Scheduler activations speedup 57

Scheduler activations memory footprint 58

Psyche threads Similar: aims to remove kernel from most thread scheduling decisions, reflect kernel level events to user space Kernel and ULS share data structures (read/write, readonly) Kernel upcalls ULS ( software interrupts ) in a virtual processor for: Timer expiration Imminent preemption (err...) Start of blocking system call Unblocking of a system call Shared data structure standardises interface for blocking/unblocking threads 59

Psyche data structures 60

Interesting features of Psyche Threads given warning of imminent preemption Is there a problem here? Upcalls can be nested (stack) Likewise? Upcalls can be disabled or queued Lots of user space data structures to be pinned Unlike Scheduler Activations, doesn t handle (e.g.) page faults 61

Nemesis dispatch (and K42, Barrelfish, others ) Avoid nested upcalls Activation handler doesn t need to be reentrant Per domain data structures all user read/write! 62

Deschedule / Preemption If resume bit == 0: Processor state activation slot Else: Processor state resume slot Enter the scheduler 63

Dispatch / Reschedule If resume bit == 0: resume bit 1 Jump to activation addr on activation stack (small!) Else: Processor state resume slot c.f. disabling interrupts 64

User level schedulers in Nemesis Upcall handler gets activations on reschedule Resume always set on activation no need for reentrant ULS Picks a context slot to run from Slots are a cache for thread contexts Clears resume bit and resumes context Implementation: Alpha PALmode call (2 pipeline drains) Must be atomic (or must it?) All implemented in user level library 65

Dispatch in Barrelfish Activations: separate dispatcher per process per core Avoid Psyche like complexity No activation stack: disable mechanism (á la Nemesis) Multiple upcall entries (from K42): Preemption / reschedule Page fault Exception etc. User level thread schedulers span address spaces across cores (dispatchers) 66

Summary of dispatch Plenty of ways to deliver processor to an application Expose underlying scheduler decisions give more control to user level thread scheduler On uniprocessor (e.g. Nemesis) gives flexibility On multiprocessor (e.g. Psyche) gives performance across cores 67