introduction to operating systems cs-2301, b-term 20091 introduction to operating systems cs-2301,...

57
Introduction to O perating Systems CS-2301, B-Term 20 09 1 Introduction to Operating Systems CS-2301, System Programming for Non-Majors (Slides include materials from The C Programming Language, 2 nd edition, by Kernighan and Ritchie and from C: How to Program, 5 th and 6 th editions, by Deitel and Deitel)

Post on 19-Dec-2015

230 views

Category:

Documents


0 download

TRANSCRIPT

Introduction to Operating Systems

CS-2301, B-Term 2009 1

Introduction to Operating Systems

CS-2301, System Programmingfor Non-Majors

(Slides include materials from The C Programming Language, 2nd edition, by Kernighan and Ritchie and from C: How to Program, 5th and 6th editions, by Deitel and Deitel)

Introduction to Operating Systems

CS-2301, B-Term 2009 2

Why an Intro to Operating Systems?

• This is a System Programming Course• For people who are not CS majors

• (Nearly) every programming task in real-life includes working with an OS

• Inevitably will have to deal with principle OS features

• Even if not knowledgeable in their designs

Introduction to Operating Systems

CS-2301, B-Term 2009 3

Class Discussion

What is an Operating System?

(Laptops closed, please!)

Introduction to Operating Systems

CS-2301, B-Term 2009 4

What Operating Systemshave you Used?

(Other than Windows, Linux, Mac-OS, Unix)

Introduction to Operating Systems

CS-2301, B-Term 2009 5

What is an Operating System?

• Characteristics– Large, complex set of

programs

– Long-lived, evolving

– Worked on by many people for many years

• Functions– Creates abstractions

– Multiplexes concurrent activities

– Manages resources

– Mediates access to hardware devices

– Provides a variety of services to users and applications

– …

Large = 108–109 lines of code

(Windows and Linux)

107 line of code for a real-time OS.

Some systems smaller

Introduction to Operating Systems

CS-2301, B-Term 2009 6

Definition – Abstraction

• The distillation of a complex mechanism into a simple, conceptual model

• User of abstraction does not need to worry about details

• Implementer of abstraction does not need to worry about how user will use it

• within limits

We have already had this notion in the

definition of fu

nction

in C

Abstraction

is a collection of functions

and data for creating a simple model

Introduction to Operating Systems

CS-2301, B-Term 2009 7

What is an Operating System?

• Characteristics– Large, complex set of

programs

– Long-lived, evolving

– Worked on by many people for many years

• Functions– Creates abstractions

– Multiplexes concurrent activities

– Manages resources

– Mediates access to hardware devices

– Provides a variety of services to users and applications

– …

What operating system services

have we used already in this

course?

Introduction to Operating Systems

CS-2301, B-Term 2009 8

Operating Systems

• Typically– Long-lived– Frequently extended and updated– Worked on by many developers– Used and, maybe, abused by a variety of users with

varying expertise and expectations

• Essential to create an acceptable computing environment to create and execute other programs that achieve business or personal goals

Introduction to Operating Systems

CS-2301, B-Term 2009 9

Important new category

E.g.:– WindowsLinuxUnix

Kinds of operating systems

• Mainframe Operating Systems• Server Operating Systems• Multiprocessor Operating Systems• Personal Computer Operating Systems• Mobile Phone Operating Systems• Handheld Computer Operating Systems• Embedded Operating Systems• Sensor Node Operating Systems• Real-time Operating Systems• Smart-card Operating Systems• …

Introduction to Operating Systems

CS-2301, B-Term 2009 10

Some operating systems you may(or may not) have heard about

• z/OS

• VMS/Open VMS

• VxWorks

• RT Linux

• QNX Neutrino

• eCOS

• BrickOS/LeJos

• TinyOS

• Arduino

• …

• iPhone OS

• Android

• Symbian

• Blackberry OS

• PalmOS/Garnet

• Windows Mobile

• …

Introduction to Operating Systems

CS-2301, B-Term 2009 11

OS and Hardware

• OS mediates programs’ access to hardware– Computation – CPU– Storage – volatile (memory) and persistent

(disk)– Networks – NIC, protocols– I/O devices – sound cards, keyboards, displays

Introduction to Operating Systems

CS-2301, B-Term 2009 12

Four Fundamental Abstractions

• Processes & threads• Multiplexing of processor(s) to create the illusion of

many of them

• Virtual memory• Multiplexing of physical memory and disk blocks to

create illusion of own memory per process

• Files – i.e., persistent storage• Organizing principles about long-term data storage

• Sockets & Connections• Organizing principles about network communication

Introduction to Operating Systems

CS-2301, B-Term 2009 13

Four Fundamental Abstractions

• Processes & threads• Multiplexing of processor(s) to create the illusion of

many of them

• Virtual memory• Multiplexing of physical memory and disk blocks to

create illusion of own memory per process

• Files – i.e., persistent storage• Organizing principles about long-term data storage

• Sockets & Connections• Organizing principles about network communication

Introduction to Operating Systems

CS-2301, B-Term 2009 14

Definition – Process

• A particular execution of a program• Different from all other executions of that program

• Different from executions of other programs

• The OS uses one or more CPUs to make it seem like each process has its own CPU

• Can execute at same time!

• Uses interrupts to manage and enforce multiplexing of CPU

Introduction to Operating Systems

CS-2301, B-Term 2009 15

Definition – Interrupt

• A mechanism by which the processor suspends execution of the current, running program and gives control to the OS

• OS saves the state of the interrupted program so that it can be restarted later

• OS then takes appropriate action

Introduction to Operating Systems

CS-2301, B-Term 2009 16

Why Processes?

• Enables programmers – to completely disengage from issues of

concurrent execution of independent programs– to build applications with more than one

concurrent activity

• Enables independent applications to share a computing system– Safely!

Introduction to Operating Systems

CS-2301, B-Term 2009 17

Why Processes (continued)?

• Exploit modern processors– Capable of executing multiple, simultaneous,

program executions– Interleaved at instruction level or even memory

access level

• Moore’s Law:–– Integrated circuit components shrink in size by

50% every 18 months– Double in speed every 18 months

Modern limitation due to power

dissipation.

Introduction to Operating Systems

CS-2301, B-Term 2009 18

Resources Assigned to a Process

• Memory• Virtual or real

• Processor time• Priorities• Deadlines for real-time activities

• Privileges• Security, authentication, etc.

• Files and file space• For long-term storage, temporary storage

• Devices• For input and output activity, sensors, etc.

Introduction to Operating Systems

CS-2301, B-Term 2009 19

Resources (continued)

• Managed by OS

• Protection and isolation from other processes

• Allocation according to defined policies

• Enforcement of limits, etc.

• …

Introduction to Operating Systems

CS-2301, B-Term 2009 20

Shell / Command Prompt

• Linux Shell is a process• Windows Command Prompt is a process

• Created when• you log on or connect to system (e.g., via PuTTY)• Open Command Prompt, konsole, xterm , etc., window

– Reads what you type (and displays it in your window)

– Interprets lines as commands and arguments– Creates a process for each command, passes args– (Typically) waits for process to complete before

interpreting next line

Introduction to Operating Systems

CS-2301, B-Term 2009 21

Window Manager

• Window Manager is a process• Tracks mouse movements, key clicks, menu actions

• “Open” an application means …• Create process for that application; give it a window

• “Open” a document means …• If application is not open, create process for it

• Pass document as argument to application

Introduction to Operating Systems

CS-2301, B-Term 2009 22

Creating and Deleting Processes

A process is created …– … at system boot time

• The first process• Built-in processes – e.g., in embedded systems

OR

– … by another process• Possibly in response to an action by a (human) user

A process is deleted …– When its program exits– By another process – killed or paused (by debugger)– When system crashes or shuts down

Introduction to Operating Systems

CS-2301, B-Term 2009 23

Questions about Processes?

Introduction to Operating Systems

CS-2301, B-Term 2009 24

Four Fundamental Abstractions

• Processes & threads• Multiplexing of processor(s) to create the illusion of

many of them

• Virtual memory• Multiplexing of physical memory and disk blocks to

create illusion of separate memory per process

• Files – i.e., persistent storage• Organizing principles about long-term data storage

• Sockets & Connections• Organizing principles about network communication

Introduction to Operating Systems

CS-2301, B-Term 2009 25

Virtual Memory

• Definition:– the illusion that a process has its own, independent memory

• (Often) more memory than machine has installed

• May be implemented using interrupts, pages, and disk blocks

• Swapping fast enough so process is unaware

• May be implemented by partitioning• Swapping not necessary for real-time activities

Introduction to Operating Systems

CS-2301, B-Term 2009 26

Independence of Virtual Memories

• A process cannot even see the virtual memory of another process

• A process cannot even see the memory used by the OS

• I.e., no possible pointer value can point to something in a different virtual memory

• Separate, parallel universes• Except where explicitly linked together

Introduction to Operating Systems

CS-2301, B-Term 2009 27

Typical Virtual Memory for Process(Windows & Linux)

0x00000000

0xFFFFFFFF

address space

program code(text)

static data

heap(dynamically allocated)

stack(dynamically allocated)

PC

SP

Introduction to Operating Systems

CS-2301, B-Term 2009 28

Typical Virtual Memory for Process(Windows & Linux)

0x00000000

0xFFFFFFFF

address space

program code(text)

static data

heap(dynamically allocated)

stack(dynamically allocated)

PC

SP

Every process has one of these.

Independent of all others.

Introduction to Operating Systems

CS-2301, B-Term 2009 29

Virtual Memory (continued)

• Typical virtual memory size – 4 GBytes• Per process — even in a 1 GByte computer!

• “Inactive” pages are not resident in RAM• Reference results in interrupt called a page fault

• OS brings in page from disk, (maybe) swaps one out

• Unused pages not filled in by OS• Dereferencing pointer results in Segmentation Fault

• New pages created by OS as needed• When stack or heap grows or programs are loaded

Introduction to Operating Systems

CS-2301, B-Term 2009 30

Virtual Memory in Embedded Systems

• Implemented by partitioning RAM

• No swapping in or out• May not even have a disk!

Also in smart-phoneoperating systems

Introduction to Operating Systems

CS-2301, B-Term 2009 31

Virtual Memories in Embedded System

OS Kernel

stack

Process 1

stack

Process 2

0x00000000

0x0000FFFF

Physical

memory

stack

Process 3

Introduction to Operating Systems

CS-2301, B-Term 2009 32

Questions about Processesor Virtual Memory?

Not in Kernighan & Ritchie

Introduction to Operating Systems

CS-2301, B-Term 2009 33

Threads

• A refinement of concept of process• Short for “thread of control”

• Concurrent execution of a function within the context of a process

• Needs own stack in order to call other functions• Shares heap, static data, and code with other threads

of same process

• Reason• Application may need to manage concurrency of its

own computation with external events

Introduction to Operating Systems

CS-2301, B-Term 2009 34

Virtual Memory for Multiple Threads

0x00000000

0xFFFFFFFF

Virtual

address space

code(text)

static data

heap

thread 1 stack

PC (T2)

SP (T2)thread 2 stack

thread 3 stack

SP (T1)

SP (T3)

PC (T1)

PC (T3)

Introduction to Operating Systems

CS-2301, B-Term 2009 35

Why Threads?

• To enable development of applications with concurrent activities inside them

• Need to share data (difficult with separate processes)

• Examples• Web server over common data pages

• Transaction processor over common data base

• Applications within a mobile phone or PDA

• Applications with different speeds of devices

• …

Introduction to Operating Systems

CS-2301, B-Term 2009 36

Thread Interface – POSIX standard

#include <pthread.h>• int pthread_create(pthread_t *thread, const

pthread_attr_t *attr, void*(*start_routine) (void), void *arg)– creates a new thread of control– new thread begins executing at start_routine

• pthread_exit(void *value_ptr)– terminates the calling thread

• pthread_join(pthread_t thread, void **value_ptr)– blocks the calling thread until the thread specified terminates

• pthread_t pthread_self() – Returns the calling thread's identifier

Introduction to Operating Systems

CS-2301, B-Term 2009 37

Thread Interface – POSIX standard

#include <pthread.h>• int pthread_create(pthread_t *thread, const

pthread_attr_t *attr, void*(*start_routine) (void), void *arg)– creates a new thread of control– new thread begins executing at start_routine

• pthread_exit(void *value_ptr)– terminates the calling thread

• pthread_join(pthread_t thread, void **value_ptr)– blocks the calling thread until the thread specified terminates

• pthread_t pthread_self() – Returns the calling thread's identifier

Pointer to

a functi

on–

see §5.7 of K

& R

Introduction to Operating Systems

CS-2301, B-Term 2009 38

Thread Interface – POSIX standard

#include <pthread.h>• int pthread_create(pthread_t *thread, const

pthread_attr_t *attr, void*(*start_routine) (void), void *arg)– creates a new thread of control– new thread begins executing at start_routine

• pthread_exit(void *value_ptr)– terminates the calling thread

• pthread_join(pthread_t thread, void **value_ptr)– blocks the calling thread until the thread specified terminates

• pthread_t pthread_self() – Returns the calling thread's identifier

Arguments to that

function

Introduction to Operating Systems

CS-2301, B-Term 2009 39

Thread Example

pthread_create(tp, &f, &args)

pthread_join(tp)

main function

main function

main function

f

g

f

h

f

Introduction to Operating Systems

CS-2301, B-Term 2009 40

Thread Example

pthread_create(tp, &f, &args)

pthread_join(tp)

main function

main function

main function

f

g

f

h

f

Two threads run at the same time

Introduction to Operating Systems

CS-2301, B-Term 2009 41

Why Threads?

• To enable development of applications with concurrent activities inside them

• Need to share data (difficult with separate virtual memories)

• Examples• Web server over common data pages

• Transaction processor over common data base

• Applications within a mobile phone or PDA

• Applications with different speeds of devices

• …

Introduction to Operating Systems

CS-2301, B-Term 2009 42

Example Thread Application

• One or more threads to get data from sensor• 1000 times per second; cannot afford to miss a

reading• Places data on queue

• Another thread processes and displays data• Removes and processes each data item from queue• Displays system state on control panel

• User thread• Allows operator to adjust system parameters• While other threads are still running

Introduction to Operating Systems

CS-2301, B-Term 2009 43

Additional Functions & Data Required

• pthread_mutex_t — mutual exclusion lock– Enables a thread to “lock” some data so that

other threads do not touch in mid-operation

• pthread_cond_t — condition variable– Enables a thread to wait for an event to happen– Signaled by another thread

• See man pages for details

Introduction to Operating Systems

CS-2301, B-Term 2009 44

Questions about Threads?

Not in Kernighan & Ritchie

Introduction to Operating Systems

CS-2301, B-Term 2009 45

Four fundamental Abstractions

• Processes & threads• Multiplexing of processor(s) to create the illusion of

many of them

• Virtual memory• Multiplexing of physical memory and disk blocks to

create illusion of own memory per process

• Files & persistent storage• Organizing principles about long-term data storage

• Sockets & connections• Organizing principles about network communication

Introduction to Operating Systems

CS-2301, B-Term 2009 46

Definition – File

• A (potentially) large amount of information or data that lives a (potentially) very long time

• Often much larger than the memory of the computer• Often much longer than any computation• Sometimes longer than life of machine itself

• (Usually) organized as a linear array of bytes or blocks

• Internal structure is imposed by application• (Occasionally) blocks may be variable length

• (Often) requiring concurrent access by multiple threads or processes

• Even by processes on different machines!

Introduction to Operating Systems

CS-2301, B-Term 2009 47

Implementations of Files

• Usually on disks (or devices that mimic disks)

• Magnetic – hard drive or floppy

• Optical – CD, DVD

• Flash drives – electronic memory, organized as disks

• Requirement• Preserve data contents during power-off or disasters

• Directory / Folder• Special kind of file that contains links pointing to other files

• Associates names with files

Introduction to Operating Systems

CS-2301, B-Term 2009 48

Implementations of Files

• Usually on disks (or devices that mimic disks)

• Magnetic – hard drive or floppy

• Optical – CD, DVD

• Flash drives – electronic memory, organized as disks

• Requirement• Preserve data contents during power-off or disasters

• Directory / Folder• Special kind of file that contains links pointing to other files

• Associates names with files

Older systems also used

magnetic tape, paper

tape, trays of punched

cards, etc.

Introduction to Operating Systems

CS-2301, B-Term 2009 49

File Access in C

• See Kernighan & Ritchie, Chapter 8• Raw file access• Without simplifying stream functions – e.g.,

– scanf, fscanf, printf, fprintf, fgetc, etc.• read and write raw disk blocks• Seek to a file position

– lseek, fseek — sets file pointer to specified location

– Subsequent read, write, etc., start there– ftell – returns file pointer

Introduction to Operating Systems

CS-2301, B-Term 2009 50

Organizations of Files

• Contiguous• Blocks stored contiguously on storage medium

• E.g., CD, DVD, some large database systems

• Access time to any block is O(1)

• Linked• Blocks linked together – File Allocation Table (FAT)

• Access time is O(n)

• Indexed• Blocks accessed via tree of index blocks (i-nodes)

• Access time is O(log n)

• However, base of logarithm may be very large (>100)

Introduction to Operating Systems

CS-2301, B-Term 2009 51

Organizations of Files

• Contiguous• Blocks stored contiguously on storage medium

• E.g., CD, DVD, some large database systems

• Access time to any block is O(1)

• Linked• Blocks linked together – File Allocation Table (FAT)

• Access time is O(n)

• Indexed• Blocks accessed via tree of index blocks (i-nodes)

• Access time is O(log n)

• However, base of logarithm may be very large (>100)

NTFS and Linux file

systems on hard drives

Introduction to Operating Systems

CS-2301, B-Term 2009 52

Organizations of Files

• Contiguous• Blocks stored contiguously on storage medium

• E.g., CD, DVD, some large database systems

• Access time to any block is O(1)

• Linked• Blocks linked together – File Allocation Table (FAT)

• Access time is O(n)

• Indexed• Blocks accessed via tree of index blocks (i-nodes)

• Access time is O(log n)

• However, base of logarithm may be very large (>100)

Typical camera chips,

flash drives, floppies

Introduction to Operating Systems

CS-2301, B-Term 2009 53

Questions about Files?

Introduction to Operating Systems

CS-2301, B-Term 2009 54

Four fundamental Abstractions

• Processes & threads• Multiplexing of processor(s) to create the illusion of

many of them

• Virtual memory• Multiplexing of physical memory and disk blocks to

create illusion of own memory per process

• Files & persistent storage• Organizing principles about long-term data storage

• Sockets & connections• Organizing principles about network communication

Introduction to Operating Systems

CS-2301, B-Term 2009 55

Sockets and Connections

• Connection: – a serial conversation over a network between two end

points• e.g., processes, threads, tasks on different computers

– organized as a sequence of messages or datagrams– distinct from all other connections

• Socket:– An end point of a connection– An abstraction that allows a process to send or receive

only the information of that connection– Multiplexed on network with all other connections

Introduction to Operating Systems

CS-2301, B-Term 2009 56

Sockets and Connections

• Defer to another course– CS-4513, Distributed Systems– CS-4514, Computer Networks

Introduction to Operating Systems

CS-2301, B-Term 2009 57

General Questions?