• Non ci sono risultati.

Sistemi in Tempo Reale

N/A
N/A
Protected

Academic year: 2021

Condividi "Sistemi in Tempo Reale"

Copied!
51
0
0

Testo completo

(1)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Laurea Specialistica in Ingegneria dell'Automazione

Sistemi in Tempo Reale

Giuseppe Lipari

Introduzione alla concorrenza

(2)

Fundamentals

Algorithm:

It is the logical procedure to solve a certain problem

It is informally specified a a sequence of elementary steps that an “execution machine” must follow to solve the problem

It is not necessarily expressed in a formal programming language!

Program:

It is the implementation of an algorithm in a programming language

Can be executed several times with dufferent inputs

Process:

An instance of a program that given a sequence of inputs produces a set of outputs

(3)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Operating System

An operating system is a program that

Provides an “abstraction” of the physical machine

Provides a simple interface to the machine

Each part of the interface is a “service”

An OS is also a resource manager

With the term “resource” we denote all physical entities of a computing machine

The OS provides access to the physical resources

The OS provides abstract resources (for example, a

file, a virtual page in memory, etc.)

(4)

Levels of abstraction

Kim Lisa Bill

Main Board Keyboard Network Card Printer

Operating System

Interface (System API)

Virtual Memory Scheduler Virtual File Sys.

Device Driver

Device Driver

Device Driver

Device Driver

Device Driver

Device Driver Web

Browser Shell Videogame Printer

Daemon User Level

Programmer Level

System Level

HW Level

(5)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Abstraction mechanisms

Why abstraction?

Programming the HW directly has several drawbacks

It is difficult and error-prone

It is not portable

Suppose you want to write a program that reads a text file from disk and outputs it on the screen

Without a proper interface it is virtually impossible!

(6)

Abstraction Mechanisms

Application programming interface (API)

Provides a convenient and uniform way to access to one service so that

HW details are hidden to the high level programmer

One application does not depend on the HW

The programmer can concentrate on higher level tasks

Example

For reading a file, linux and many other unix OS provide the open(), read() system calls that, given a “file name”

allow to load the data from an external support

(7)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Classification of Operating Systems

The OS provides an abstraction of a physical machine

To allow portability

To make programmer’s life easier

The level of abstraction depends on the application context

It means that the kind of services an OS provides depend on which kind of services the application requires

General purpouses OS should provide a wide range of services to satisfy as many users as possible

Specialised OS provide only a group of specialised services

OS can be classified depending on the application context

General purpouse (windows, linux, etc), servers, micro-kernel, embedded OS, real-time OS

(8)

Services

Virtual processor

An OS provides “concurrency” between processes

Many processes are executed at the same time in the same system

Each process executes for a fraction of the processor bandwidth (as it were on a dedicated slower processor)

Provided by the scheduling sub-system

Provided by almost all OS, from nano-kernels to

general-purpouse systems

(9)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Services

Virtual memory

Physical memory is limited;

In old systems, the number of concurrent processes was limited by the amount of physical memory

IDEA: extend the physical memory by using a “fast”

mass storage system (disk)

Some of the processes stay in memory, some are temporarily saved on the disk

When a process must be executed, if it is on the disk it is first loaded in memory and then executed

This technique is called “swapping”

(10)

Virtual memory and physical memory

Virtual memory is very large (virtually infinite!)

The program functionality does not depend on the size of the memory Process E

Process D Process C Process B Process A

Process E Process A Process C

CPU A

C E

B D

B D

Physical memory Disk Virtual memory

A D B E C

A D B E C

Process B A

Process B Process A

(11)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Virtual Memory

Advantages

Virtual infinite memory

The program is not limited by the size of the physical memory

Disadvantages

If we have too many programs, we spend most of the time swapping back and forth

Performance degradation!

Not suitable for real-time systems

It is not possible to guarantee a short response time because it depends on the program location

(12)

Virtual File System

Basic concepts

File: sequence of data bytes

It can be on a mass storage (hard disk, cd-rom, etc.)

It can be on special virtual devices (i.e. RAM disks)

It can be on a remote system!

Directory: list of files

Usually organised in a tree

Represents how files are organised on the mass storage system

Virtualisation

In most OS, external serial devices (like the console or the video terminal) can be seen as files (i.e. stdin, stout , stderr)

(13)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Virtual file system

A good virtual file system provides additional features:

Buffering & caching

For optimising I/O from block devices

Transactions

For example the Reiser FS

Fault tolerance capabilities

For example, the RAID system

Virtual file system is not provided by all OS categories

Micro and nano kernels do not even provide a file system!

(14)

Processes

(15)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Process

The fundamental concept in any operating system is the “process”

A process is an executing program

An OS can execute many processes at the same time (concurrency)

Processes have separate memory addresses

They cannot directly share variable

Processes are mostly used in general purpouse OS

(16)

Process Control Block

It contains all the data concerning one process

All PCBs are stored in the Process Table

PID PPID

UID Page table

File Table Handles

State Statistics

...

Process Table

(17)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

The role of PCB

Virtually every routine in the OS will access the PCBs

The scheduler

The Virtual memory

The Virtual File System

Interrupt handlers (I/O devices)

...

It can only be accessed by the OS!

The user can access some of the information in the PCB by using appropriate system calls

The PCB is a critical point of any OS!

(18)

Memory layout of a Process

In some system, the PCB is in the “other data”

section

Text

Initialized Data BSS

Stack Heap Other data

(19)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Memory protection

Every process has its own memory space

Part of it is “private to the process”

Part of it can be shared with other processes

For examples: two processes that are instances of the same program will probably share the TEXT part

If two processes want to communicate by shared memory, they can share a portion of the data segment

Text

Initialized Data BSS

Stack Heap Other data

Initialized Data Stack

Heap Other data

(20)

Memory Protection

By default, two processes cannot share their memory

If one process tries to access a memory location

outside its space, a processor exception is raised (trap) and the process is terminated

The famous “Segmentation Fault” error!!

We will come back to this when we study the Virtual

Memory

(21)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Processes and Threads

(22)

Processes

We can distinguish two aspects in a process

Resource Ownership

A process includes a virtual address space, a process image (code + data)

It is allocated a set of resources, like file descriptors, I/O channels, etc

Scheduling/Execution

The execution of a process follows an ececution path, and generates a trace (sequence of internal states)

It has a state (ready, Running, etc.)

And scheduling parameters (priority, time left in the round, etc.)

(23)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Multi-threading

Many OS separate these aspects, by providing the concept of thread

The process is the “resource owner”

The thread is the “scheduling entity”

One process can consists of one or more threads

Threads are sometime called (improperly) lightweight processes

Therefore, on process can have many different (and

concurrent) traces of execution!

(24)

Single threaded Process Model

In the single-threaded process model one process has only one thread

One address space

One stack

One PCB only

(25)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Multi-threaded process model

In the multi-threaded process model each

process can have many threads

One address space

One PCB

Many stacks

Many TCB (Thread Control blocks)

The threads are

scheduled directly by the

global scheduler

(26)

Threads

Generally, processes do not share memory

To communicate between process, it is necessary to user OS primitives

Process switch is more complex because we have to change address space

Two threads in the same process share the same address space

They can access the same variables in memory

Communication between threads is simpler

Thread switch has less overhead

(27)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Processes vs. Threads

Processes are mainly used to compete for some resource

For example, two different users run two separate applications that need to print a file

The printer is a shared resource, the two processes compete for the printer

Threads are mainly used to collaborate to some goal

For example, one complex calculation can be split in two parallel phases, each thread does one phase

In a multi-processor machine the two threads go in parallel and the calculation becomes faster

(28)

1. wait

Example - I

 Consider a Word Processor application

 Main cycle

1. Wait for input from the keyboard 2. Update the document

3. Format the document 4. Check for syntax errors

5. Check for other events (i.e. temporary save) 6. Return to 1

 One single process would be a waste of time!

2. update

3. format

4. syntax

5. Other events

1. wait

(29)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Example - II

Problems

Most of the time, the program waits for input

Idea, while waiting we could perform some other task

Activities 3 and 4 (formatting and syntax checking) are very time consuming

Idea: let’s do them while waiting for input

Solution with multiple processes

One process waits for input

Another process periodically formats the document

A third process periodically performs a syntax checking

A fourth process visualize the document

Input

Process Format

Process Syntax

Process Graphic

Process

(30)

Example - III

Problem with multiple processes

All processes needs to access the same data structure, the document

Which process holds the data structure?

Solution 1: message passing

A dedicated process holds the data, all the others communicate with it to read/update the data

Very inefficient!

Input

Process Format

Process Syntax

Process Graphic

Process

(31)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Example - IV

Another solution...

Solution 2: shared memory

One process holds the data and makes that part of its memory shareable with the others

Still not very efficient:

We have a lot of process switches

Memory handling becomes very complex

(32)

Why using threads

Speed of creation

Creating a thread takes far less time than creating a process

Speed of switching

Thread switch is faster than process switch

Shared memory

Threads of the same process run in the same memory space

They can naturally access the same data!

Input

Thread Format

Thread Syntax

Thread Graphic

Thread

(33)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Threads support in OS

Different OS implement threads in different ways

Some OS supports directly only processes

Threads are implemented as “special processes”

Some OS supports only threads

Processes are threads’ groups

Some OS natively supports both concepts

For example Windows NT

We will come back to this part later, after we have studied the problem of synchronization

By now we need to abstract away the different

implementations

(34)

Summary

Important concepts

Process: provides the abstraction of memory space

Threads: provide the abstraction of execution trace

The scheduler manages threads!

Processes do not normally share memory

Two threads of the same process share memory

We need to explore all the different ways in which two threads can communicate

Shared memory

Message passing

In the next section we will only refer to threads

(35)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

The thread control block

In a OS that supports threads

Each thread is assigned a TCB (Thread Control Block)

The PCB holds mainly information about memory

The TCB holds information about the state of the thread

TID PID CR

IP SP

Other Reg.

State Priority Time left

...

Thread Table

(36)

Thread states

The OS can execute many threads at the same time

Each thread, during its lifetime can be in one of the following states

Starting (the thread is being created)

Ready (the thread is ready to be executed)

Executing (the thread is executing)

Blocked (the thread is waiting on a condition)

Terminating (the thread is about to terminate)

(37)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Thread states

a) Creation The thread is created

b) Dispatch The thread is selected to execute c) Preemption The thread leaves the processor

d) Wait on condition The thread is blocked on a condition e) Condition true The thread is unblocked

f) Exit The thread terminates

Start Ready Running

Terminate Blocked

a

b

c

e d f

(38)

Thread queues

Single processor

CPU

Ready queue

Admit

Preemption Dispatch

Blocked queue

Wait condition Event occurs

(39)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Thread queues

Multi-processor with migration

CPU

Ready queue

Admit

Preemption

Dispatch

Blocked queue

Wait condition Event occurs

CPU

CPU

(40)

Multiple blocking queues

CPU

Ready queue

Admit

Preemption Dispatch

Wait condition 1 Event occurs

Wait condition 2 Event occurs

(41)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Modes of operation (revised)

Every modern processor supports at least 2 modes of operation

User

Supervisor

The Control Register (CR) contains one bit that tells us in which mode the processor is running

Operating system routines run in supervisor mode

They need to operate freely on every part of the hardware with no restriction

User code runs into user mode

Mode switch

Every time we go from user to supervisor mode or viceversa

(42)

Mode switch

It can happen in one of the following cases

Interrupts or traps

In this case, before calling the interrupt handler, the processor goes in supervisor mode and disables interrupts

Traps are interrupts that are raised when a critical error occurs (for example, division by zero, or page fault)

Returning from the interrupt restores the previous mode

Invoking a special instruction

In the Intel family, it is the INT instruction

This instruction is similar to an interrupt

It takes a number that identifies a “service”

All OS calls are invoked by calling INT

Returning from the handler restores the previous mode

(43)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Saves parameters on the stack

Executes INT 20h

1. Change to supervisor mode 2. Save context

3. Execute the function open 4. Restores the context

5. IRET

Back to user mode

Delete parameters from the stack

Example of system call

The “open” system call can potentially block the thread!

In that case we have a

“context switch”

int fd,n;

char buff[100];

fd = open(“Dummy.txt”, O_RDONLY);

n = read(fd, buff, 100);

(44)

Context switch

It happens when

The thread has been “preempted” by another higher priority thread

The thread blocks on some condition

In time-sharing systems, the thread has completed its “round”

and it is the turn of some other thread

We must be able to restore the thread later

Therefore we must save its state before switching to another thread

(45)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

The “exec” pointer

Every OS has one pointer (“exec”) to the TCB of the running thread

The status of the “exec” thread is RUNNING

When a context switch occurs,

The status of the “exec” thread is changed to BLOCKING or READY

The scheduler is called

The scheduler selects another “exec” from the ready

queue

(46)

System call with context switch

Saves parameters on stack

INT 20h

Change to supervisor mode

Save context in the TCB of “exec” (including SP)

Execute the code

The thread change status and goes into BLOCKING mode

Calls the scheduler

Moves “exec” into the blocking queue

Selects another thread to go into RUNNING mode

Now exec points to the new process

Restores the context of “exec” (including SP)

This changes the stack

IRET

Returns to where the new thread was interrupted

(47)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Stacks

exec

Param.

CR IP

PID PPID

CR IP SP

Other Reg.

State Priority Time left

...

Stack TCB

CR IP SP

Other Reg.

Param.

CR IP

CR IP SP

Other Reg.

State Priority Time left

...

Stack TCB

Blocking Blockingexec

CR IP SP

Other Reg.

TID PID

PID PPID

TID PID

(48)

Context switch

This is only an example

Every OS has little variations on the same theme

For example, in most cases, registers are saved on the stack, not on the TCB

You can try to look into some real OS

Linux

Free BSD

Shark (http://shark.sssup.it)

Every OS is different!

(49)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Time sharing systems

In time sharing systems,

Every thread can execute for maximum one round

For example, 10msec

At the end of the round, the processor is given to another thread

Context Switch

CPU

Ready queue

CPU CPU CPU

Timer interrupt

(50)

Interrupt with context switch

It is very similar to the INT with context switch

An interrupt arrives

Change to supervisor mode

Save CR and IP

Save processor context

Execute the interrupt handler

Call the scheduler

This may change the “exec” pointer

IRET

(51)

Date: 8/03/2004 Ingegneria dell'Automazione: Sistemi in Tempo Reale Giuseppe Lipari

Causes for a context switch

A context switch can be

Voluntary: the thread calls a blocking primitive, i.e. it executes an INT

For example, by calling a read() on a blocking device

Non-voluntary: an interrupt arrives that causes the context switch

It can be the timer interrupt , in time-sharing systems

It can be an I/O device which unblocks a blocked process with a higher priority

Riferimenti

Documenti correlati

Il sistema deve essere in grado di rispondere agli eventi esterni (sistema reattivo) entro un certo tempo limite (sistema real-time). Esempio in un sistema di controllo con periodo

In the previous example, the problem is that after the function str_swap() returns, the address of the allocated memory is lost (it was stored in a local variable), so we cannot

– If one process tries to access a memory location outside its space, a processor exception is raised (trap) and the.. process

 one blocked thread must be removed from state RUNNING and be moved in the semaphore blocking queue.

 a closed chain of threads exists such that each thread holds at least one resources needed by the next thread in the chain.  then a deadlock

Browser Shell Videogame Printer.

– If number of processors = 1 -> threads execute in time- sharing. – If number of processors < number of

– The handler saves the registers that will be modified on the stack. – Executes the interrupt