networks and operating systems chapter 11: introduction to ... · networks and operating systems...

Post on 09-May-2020

29 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Networks and Operating Systems Chapter 11:

Introduction to Operating Systems (252-0062-00)

Donald Kossmann & Torsten Hoefler

Frühjahrssemester 2012

© Systems Group | Department of Computer Science | ETH Zürich

Last time

• Virtual circuit switching

• Packet switching

• Multiprotocol switching

• Address Resolution Protocol

• Spanning tree algorithm

• Virtual LANs

Today: We start on Operating Systems!

• Introduction: Why?

• Roles of the OS

• Referee

• Illusionist

• Glue

• Structure of an OS

3

Goals

• Demystify operating systems themselves

– What is an OS? What does it do?

– What is its structure?

– How do the OS and applications relate to each other?

– What services does the OS provide?

• Quintessential “systems” problem

– Non-idealizable / non-reducible

– Scaling, emergent properties

– Concurrency and asynchrony

The Book

• On the web: http://ospp.cs.washington.edu/

Also worth a look

• Jerome H. Saltzer and M. Frans Kaashoek: “Principles of Computer System Design”

• Focus on principles, with illustrative examples

Also worth a look

• Andrew S. Tanebaum: “Modern Operating Systems”

• Must be at least 3rd Edition!

• Very broad – lots of references to recent (2006) research.

Introduction to Operating Systems

Why learn about Operating Systems?

• One of the most complex topics in Computer Science! – Very few simplifying assumptions

– Dealing with the real world

– Intersection of many areas

• Mainstream OSes are large: – Windows 7 ~ 50 million lines of code

– Linux rapidly catching up in complexity

• Most other software systems are a subset – Games, browsers, databases, servers, cloud, etc.

Why learn about Operating Systems?

• One of the most complex topics in Computer Science! – Very few simplifying assumptions

– Dealing with the real world

– Intersection of many areas

• Mainstream OSes are large: – Windows 7 ~ 50 million lines of code

– Linux rapidly catching up in complexity (~15 million LOC)

• Most other software systems are a subset – Games, browsers, databases, servers, cloud, etc.

Why learn about Operating Systems?

• One of the most complex topics in Computer Science! – Very few simplifying assumptions

– Dealing with the real world

– Intersection of many areas

• Mainstream OSes are large: – Windows 7 ~ 50 million lines of code

– Linux rapidly catching up in complexity (~15 million LOC)

• Most other software systems are a subset – Games, browsers, databases, servers, cloud, etc.

There are lots of operating systems concepts…

• Systems calls

• Concurrency and asynchrony

• Processes and threads

• Security, authorization, protection

• Memory, virtual memory, and paging

• Files and file systems, data management

• I/O: Devices, Interrupts, DMA

• Network interfaces and protocol stacks

There are lots of operating systems…

Goals: what makes a good OS?

Goals: what makes a good OS?

• Reliability: does it keep working?

– And availability

Goals: what makes a good OS?

• Reliability: does it keep working?

– And availability

• Security: can it be compromised?

– And isolation: is it fair?

Goals: what makes a good OS?

• Reliability: does it keep working?

– And availability

• Security: can it be compromised?

– And isolation: is it fair?

• Portability: how easily can it be retargeted?

Goals: what makes a good OS?

• Reliability: does it keep working?

– And availability

• Security: can it be compromised?

– And isolation: is it fair?

• Portability: how easily can it be retargeted?

• Performance: how fast/cheap/hungry is it?

Goals: what makes a good OS?

• Reliability: does it keep working?

– And availability

• Security: can it be compromised?

– And isolation: is it fair?

• Portability: how easily can it be retargeted?

• Performance: how fast/cheap/hungry is it?

• Adoption: will people use it?

Operating Systems

Operating System

Applications

Hardware

Operating Systems

Operating System

Applications

Hardware

Operating Systems (rest of this course!)

Operating Systems

Operating System

Applications

Hardware

Parallel Programming

Operating Systems (rest of this course!)

Operating Systems

Operating System

Applications

Hardware

Computer Architecture and Systems Programming

Parallel Programming

Operating Systems (rest of this course!)

Operating System Roles

OS roles

Referee Illusionist

Glue

The Referee:

Operating System

Hardware

System calls

Resource Manager

Application Application Application

The OS as Referee

• Sharing: – Multiplex hardware among applications

• CPU, memory, devices

– Applications shouldn’t need to be aware of each other

• Protection: – Ensure one application can’t r/w another’s data

• In memory, on disk, over network

– Ensure one application can’t use another’s resources • CPU, storage space, bandwidth, …

• Communication: – Protected applications must still communicate

The OS as Referee

• Sharing: – Multiplex hardware among applications

• CPU, memory, devices

– Applications shouldn’t need to be aware of each other

• Protection: – Ensure one application can’t r/w another’s data

• In memory, on disk, over network

– Ensure one application can’t use another’s resources • CPU, storage space, bandwidth, …

• Communication: – Protected applications must still communicate

The OS as Referee

• Sharing: – Multiplex hardware among applications

• CPU, memory, devices

– Applications shouldn’t need to be aware of each other

• Protection: – Ensure one application can’t r/w another’s data

• In memory, on disk, over network

– Ensure one application can’t use another’s resources • CPU, storage space, bandwidth, …

• Communication: – Protected applications must still communicate

Resource management goals

• Fairness:

– No starvation, every application makes progress

• Efficiency:

– Best use of complete machine resources

– Minimize e.g. power consumption

• Predictability:

– Guarantee real-time performance

Resource management goals

• Fairness:

– No starvation, every application makes progress

• Efficiency:

– Best use of complete machine resources

– Minimize e.g. power consumption

• Predictability:

– Guarantee real-time performance

All in mutual contradiction

Example: Threads

• Threads are virtual CPUs

– Physical resource: CPUs

– Virtual resource: Threads

– Mechanism: pre-emption, timeslicing, context switching, scheduling

• More on this later in the course…

The Illusionist

Virtualization:

• OS creates illusion of a “real” resource

– Processor, storage, network, links, …

• Virtual resource looks a bit like a physical resource

• However, is frequently quite different…

– Simpler, larger, better, …

How?

1. Multiplexing

– Divide resources up among clients

2. Emulation

– Create the illusion of a resource using software

3. Aggregation

– Join multiple resources together to create a new one

Why?

1. Sharing – Enable multiple clients of a single resource

2. Sandboxing – Prevent a client from accessing other resources

3. Decoupling – Avoid tying a client to a particular instance of a

resource

4. Abstraction – Make a resource easier to use

Example: Virtual Memory

• Easier memory to manage

– Physical resource: RAM

– Virtual resource: Virtual Memory

– Method: Multiplexing

– Mechanism: virtual address translation

Example: Paged virtual memory

• More memory than you really have

– Physical resource: RAM and disk

– Virtual resource: paged virtual memory

– Method: multiplexing and emulation

– Mechanism: virtual memory + paging to/from disk

• Much more on this later in the course…

Example: virtual machines

• Quite popular topic commercially right now: – Xen, VMware, HyperV, kvm, etc.

• Many uses: – Run one OS on another

– Consolidate servers

– Migrate running machines around datacenter

– Run hundreds of “honeypot” machines

– Deterministic replay of whole machines

– Etc.

Example: Files (or database!)

• Virtual resource: persistant memory

• Physical resource: disk

• Method: multiplexing, emulation

• Mechanism: block allocation, metadata

• Again, more later…

Example: Windows (not the Microsoft OS)

• Physical resource: Frame buffer and/or GPU

• Method: Multiplexing and emulation

• Mechanism: Windows as separate bitmaps/textures

Example: virtual circuits

• Physical resource: network link

• Virtualization method: multiplexing

• Mechanism: VC identifiers, VC switching

1

2 3

4

VCI=346 VCI=1044

VCI=1044 VCI=56

Virtual circuits

Real circuits

Example: VLANs

42

• Methods: multiplexing

• Mechanisms: port assignment, tags

A

E G H

I

J

K S2 S1

B C D

F

M

N

N

S2 S1

Glue: the OS as Abstract Machine

Operating System

Applications

Hardware

Virtual machine interface

Physical machine interface

The OS as Glue

• Provides high-level abstractions

– Easier to program to

– Shared functionality for all applications

– Ties together disparate functions and services

• Extends hardware with added functionality

– Direct programming of hardware unnecessary

• Hides details of hardware

– Applications decoupled from particular devices

Services provided by an OS

• Program execution – Load program, execute on 1 or more processors

• Access to I/O devices – Disk, network, keyboard, screen,…

• Protection and access control – For files, connections, etc.

• Error detection and reporting – Trap handling, etc.

• Accounting and auditing – Statistics, billing, forensics, etc.

Operating System Structure

General OS structure

Kernel

Privileged mode

User mode

CPU Device Device

Application

System Library

Application

System Library

Server process (daemon)

System Library

System calls

CPU

Privileged Mode and User Mode

• As we saw in Computer Architecture, most CPUs have a “privileged mode”:

– ia32 protection rings

– VAX kernel mode

– Etc.

• Most Operating Systems use this for protection

– In particular, protecting the OS from applications!

General OS structure

Kernel

Privileged mode

User mode

Application

System Library

Application

System Library

Server process (daemon)

System Library

System calls

CPU Device Device CPU

Kernel

• That part of the OS which runs in privileged mode

– Large part of Unix and Windows (except libraries)

– Small part of L4, Barrelfish, etc. (microkernels)

– Does not exist in some embedded systems

• Also known as:

– Nucleus, nub, supervisor, …

The kernel is a program!

• Kernel is just a (special) computer program.

• Typically an event-driven server.

• Responds to multiple entry points:

– System calls

– Hardware interrupts

– Program traps

• May also include internal threads.

General OS structure

Kernel

Privileged mode

User mode

Application

System Library

Application

System Library

Server process (daemon)

System Library

System calls

CPU Device Device CPU

System Libraries

• Convenience functions

– strcmp(), etc.

– Common functionality

• System call wrappers

– Create and execute system calls from high-level languages

– See ‘man syscalls’ on Linux

General OS structure

Kernel

Privileged mode

User mode

Application

System Library

Application

System Library

Server process (daemon)

System Library

System calls

CPU Device Device CPU

Daemons

• Processes which are part of the OS

– Microkernels: most of the OS

– Linux: increasingly large quantity

• Advantages:

– Modularity, fault tolerance

– Easier to schedule…

Entering and exiting the kernel

When is the kernel entered?

• Startup

• Exception: caused by user program

• Interrupt: caused by “something else”

• System calls

Recall: System Calls

• RPC to the kernel

• Kernel is a series of syscall event handlers

• Mechanism is hardware-dependent

System calls

Privileged mode

User mode

Recall: System Calls

• RPC to the kernel

• Kernel is a series of syscall event handlers

• Mechanism is hardware-dependent

System calls

Privileged mode

User mode

User process runs

Recall: System Calls

• RPC to the kernel

• Kernel is a series of syscall event handlers

• Mechanism is hardware-dependent

System calls

Privileged mode

User mode

User process runs Execute syscall

Recall: System Calls

• RPC to the kernel

• Kernel is a series of syscall event handlers

• Mechanism is hardware-dependent

System calls

Privileged mode

User mode

User process runs Execute syscall

Recall: System Calls

• RPC to the kernel

• Kernel is a series of syscall event handlers

• Mechanism is hardware-dependent

System calls

Privileged mode

User mode

User process runs

Execute kernel code

Execute syscall

Recall: System Calls

• RPC to the kernel

• Kernel is a series of syscall event handlers

• Mechanism is hardware-dependent

System calls

Privileged mode

User mode

User process runs Process resumes

Execute kernel code

Execute syscall

System call arguments

Syscalls are the way a program requests services from the OS kernel.

Implementation varies:

• Passed in processor registers

• Stored in memory (address in register)

• Pushed on the stack

• System library (libc) wraps as a C function

• Kernel code wraps handler as C call

When is the kernel exited?

• Creating a new process

– Including startup

• Resuming a process after a trap

– Exception, interrupt or system call

• User-level upcall

– Much like an interrupt, but to user-level

• Switching to another process

top related