• Non ci sono risultati.

Corso di Informatica

N/A
N/A
Protected

Academic year: 2021

Condividi "Corso di Informatica"

Copied!
10
0
0

Testo completo

(1)

09/08/2013

M. Malatesta 1-Nucleo e processi-15 1

Modulo T3

1-Nucleo e processi

Corso di Informatica

Prerequisiti

 Concetto stack

 Programmazione elementare

 Struttura elementare del computer

 Concetto intuitivo di sottoprogramma

(2)

09/08/2013

M. Malatesta 1-Nucleo e processi-15 3

Introduzione

Vediamo più da vicino ora il nucleo e i processi che esso è in grado di gestire.

Come fa il nucleo a far avanzare in parallelo più processi?

Come fanno i vari processi ad essere indipendenti?

Cosa vuol dire che un processo “avanza”?

Come individuare l’avanzamento di un processo?

A queste domande diamo una risposta in questa Unità.

Esecuzione parallela

Nell’ottica di perseguire il massimo sfruttamento possibile della risorsa CPU sono state introdotte tecniche di parallelismo che prevedono la presenza di più di un processore. Pertanto, distinguiamo:

1. multitasking

2. multiprogrammazione 3. multielaborazione

(3)

09/08/2013

M. Malatesta 1-Nucleo e processi-15 5

Esecuzione parallela

- multitasking

Il multitasking di tipo più semplice si realizza con 2 soli processori:

 CPU

 Processore di I/O

Questa tecnica consiste nell’avere più programmi indipendenti caricati in memoria. Qualora uno di essi faccia richiesta di I/O, la sua esecuzione viene delegata al processore di I/O, mentre la CPU può passare ad eseguire un altro programma tra quelli presenti in memoria.

Esecuzione parallela

- multiprogrammazione

La multiprogrammazione è una evoluzione del multitasking che prevede l’aggiunta di tecniche per la protezione della memoria che rendono effettivamente indipendenti le aree di essa destinate ciascuna ad un diverso programma.

In sostanza si tratta di uno pseudo-parallelismo che prevede che la CPU operi tra i vari programmi, mentre in parallelo operano le periferiche.

(4)

09/08/2013

M. Malatesta 1-Nucleo e processi-15 7

Esecuzione parallela

- multielaborazione

La multielaborazione (multiprocessing) è una evoluzione della

multiprogrammazione adottata nel caso di elaboratori con più CPU e più processori di I/O.

I processori di I/O assumono un nome diverso a seconda del tipo di elaboratore:

 DMA(Direct Memory Access) nel caso dei personal computer;

 Canale di I/Onegli elaboratori di grosse dimensioni (mainframe).

Parallelismo e processi

Il concetto di processo che abbiamo intuitivamente introdotto, nasce a causa del fatto che l’esecuzione di un programma su un processore può più volte essere sospesa in un certo intervallo di tempo.

Analogamente in un certo intervallo di tempo, un processore può eseguire sequenze di istruzioni appartenenti a programmi diversi.

In pratica, un processo può essere:

 un programma in esecuzione;

un’attività asincrona (leggere un file da disco)

(5)

09/08/2013

M. Malatesta 1-Nucleo e processi-15 9

Definizione di processo

Il processo P(X) associato al programma X rappresenta la sequenza di azioni svolte da un processore P per eseguire

le istruzioni di X.

Gerarchie di processi

Come sappiamo, un processo può generare, in modo gerarchico, altri processi detti processi figli o sottoprocessi.

In ambiente UNIX, ad esempio, il processo che nasce al momento del boot è chiamato init.

Da questo, successivamente, nascono i processi:

 di configurazione della macchina

 dei terminali

 degli utenti

Esistono anche altri processi, trasparenti agli utenti, ma visibili nella process table, che restano in vita durante tutto il periodo

(6)

09/08/2013

M. Malatesta 1-Nucleo e processi-15 11

Il nucleo e le system call

Tra i vari compiti del nucleo c’è la gestione dei processi, una serie di operazioni che possono anche essere eseguite da programma, invocando apposite routine di sistema (generalmente in linguaggio C) che sono le system call(SC).

Nella gestione dei processi da programma, sono previste le seguenti operazioni:

 creazione

 sospensione

 terminazione

In questa sede diamo una panoramica delle funzionalità delle chiamate di sistema, rimandando al corso di programmazione avanzata il loro effettivo utilizzo all’interno di programmi

Creazione di processi

Un processo può esere creato ad esempio facendo doppio click su un’icona o istanziando in un programma P (ad esempio scritto in C) una delle due chiamate di sistema seguenti:

 fork(): crea un processo P’, figlio di P e indipendente da questo; i due processi avanzano entrambi in parallelo;

 exec (program): sostituisce il processo P chiamante con quello P’

generato dall’esecuzione di program.

Il fatto che la SC exec() sostituisce P con

(7)

09/08/2013

M. Malatesta 1-Nucleo e processi-15 13

Creazione di processi

- fallimento di una SC

A volte, una SC fallisce, ossia non può produrre l’azione richiesta, per una serie di motivi; in genere il fallimento di una SC si verifica quando essa restituisce il valore -1.

È bene che il programmatore preveda nel suo programma un controllo sul successo o meno della SC.

Ad esempio, le due chiamate possono fallire per varie cause:

 la fork() può fallire se, ad esempio la tabella dei processi è piena e non c’è più spazio per allocare i dati di un nuovo processo;

 la exec() può fallire se, ad esempio, il file program, che specifica il programma da mandare in esecuzione, non esiste.

Avanzamento di processi

Poichè il concetto di processo coinvolge la nozione di tempo, come sappiamo è preferibile parlare di stato di avanzamento di un processo P(X)all’ìstante t, piuttosto che di esecuzione di X.

Ma come fa il nucleo a tenere traccia dello stato di avanzamento di ogni processo presente nel sistema?

(8)

09/08/2013

M. Malatesta 1-Nucleo e processi-15 15

Avanzamento di processi

- descrittore di processo

Per poter gestire i processi il nucleo deve disporre di tutte le informazioni ad essi relative. Queste informazioni sono contenute in una struttura dati detta descrittore di processoo PCB (Process Control Block), appartenente allo spazio di indirizzamento del processo.

Alcune delle informazioni più importanti nel PCB sono:

 pid(process identifier), numero intero che individua univocamente il processo;

 identificatore del padre (ppid);

 priorità del processo;

 puntatore alla lista dei figli;

 puntatore alla lista delle aree di memoria usate;

 puntatore alla lista delle risorse usate;

 area di salvataggio dello stato della CPU (per le interruzioni). Segue 

Avanzamento di processi

- descrittore di processo

 valore del program counter

 valori dei registri della CPU (stack pointer, registro indice, ecc)

 elenco dei file in uso

 contabilizzazione delle risorse

(9)

09/08/2013

M. Malatesta 1-Nucleo e processi-15 17

Terminazione di processi

Un processo viene terminato con la chiamata di sistema al nucleo

 kill(pid)

dove pid indica il process identifier del processo da terminare.

Altre system call sono reperibili nella documentazione del linguaggio C avanzato.

Ovviamente, altri casi in cui un processo termina sono quando il programma tenta un’operazione illecita, o quando si verifica un errore irrecuperabile

Argomenti

 Esecuzione parallela – multitasking

– multiprogrammazione – multielaborazione

 Parallelismo e processi

 Definizione di processo

 Gerarchie di processi

 Il nucleo e le system call

 Creazione di processi – fallimento di una SC

(10)

09/08/2013

M. Malatesta 1-Nucleo e processi-15 19

Altre fonti di informazione

 A. Lorenzi, D.Rossi – I fondamenti della programmazione-ATLAS

Riferimenti

Documenti correlati

Per i procedimenti speciali, il patteggiamento allargato - con il limite di pena applicabile su richiesta delle parti portato ad otto anni di reclusione solo o congiunta a pena

Lo studente dovrà acquisire una conoscenza di base dell’informatica e dei software di grafica, raster e vettoriale.. Tali conoscenze saranno utili per creare, gestire, finalizzare

Lo studente sarà in grado di applicare le conoscenze del Linguaggio C e delle metodologie di progettazione dei programmi per la soluzione di problemi relativi a casi di

Lo studente dovrà acquisire conoscenza e comprensione degli aspetti teorici e pratici della sicurezza di sistemi informativi e della loro difesa da attacchi informatici via

-          Saper utilizzare il linguaggio binario ed i sistemi di numerazione -          Conoscere le basi della programmazione (programmazione

Bambino: (più deciso) Sì, ma lei mi deve ascoltare perché questa notte abbiamo ricevuto una buona notizia?. Una notizia che sarà per tutto il popolo e visto che qui c'è

Il sistema operativo, quando c’è bisogno di eseguire un nuovo servizio (e quindi di mandare in esecuzione un nuovo processo) decide di mandarlo in esecuzione sul processore che

− una variabile d’istanza di un oggetto viene allocata (nello heap) quando l’oggetto viene creato heap. − una variabile d’istanza viene deallocata quando l’oggetto