Il sistema operativo è un software che sovrintende al funzionamento del calcolatore eseguendo compiti differenti



Documenti analoghi
Architettura hardware

CPU. Maurizio Palesi

Architettura del calcolatore

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

STRUTTURE DEI SISTEMI DI CALCOLO

Software che sovrintende al funzionamento del computer eseguendo compiti diversi:

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Architettura di un sistema di calcolo

La memoria centrale (RAM)

Il Sistema Operativo (1)

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore

Il calcolatore elettronico. Parte dei lucidi sono stati gentilmente forniti dal Prof. Beraldi

C. P. U. MEMORIA CENTRALE

Contenuti. Visione macroscopica Hardware Software. 1 Introduzione. 2 Rappresentazione dell informazione. 3 Architettura del calcolatore

Introduzione ai sistemi operativi

Informatica per la Storia dell Arte. Anno Accademico 2014/2015

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario

Esame di INFORMATICA

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Architettura di un computer

Ing. Paolo Domenici PREFAZIONE

In un modello a strati il SO si pone come un guscio (shell) tra la macchina reale (HW) e le applicazioni 1 :

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Il Sistema Operativo

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

La memoria - generalità

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

Software di base. Corso di Fondamenti di Informatica

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Software relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi

Informatica: il sistema operativo

Il sistema operativo. Sistema operativo. Multiprogrammazione. Il sistema operativo. Gestione della CPU

Architettura dei calcolatori II parte Memorie

Il software. la parte contro cui si può solo imprecare. Il software

Strutture di Memoria 1

Struttura del calcolatore

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Calcolo numerico e programmazione Architettura dei calcolatori

Come funziona un sistema di elaborazione

Introduzione all'architettura dei Calcolatori

Parte II.2 Elaboratore

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

SOFTWARE. È l insieme delle istruzioni che è necessario fornire alla macchina per il suo funzionamento. Vi sono due categorie di software:

INFORMATICA. Il Sistema Operativo. di Roberta Molinari

DMA Accesso Diretto alla Memoria

Approccio stratificato

Gestione della memoria centrale

Dispensa di Informatica I.1

Corso di Sistemi di Elaborazione delle informazioni

Architettura dei computer

SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI

Corso di Informatica

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA)

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

Introduzione alla programmazione in C

Corso di Informatica

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?

Introduzione al MATLAB c Parte 2

Un sistema operativo è un insieme di programmi che consentono ad un utente di

Lezione 3: Architettura del calcolatore

Informatica - A.A. 2010/11

Architettura di un calcolatore

Corso di Informatica

ARCHITETTURA DELL ELABORATORE

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Il Sistema Operativo. Di cosa parleremo? Come si esegue un programma. La nozione di processo. Il sistema operativo

All interno del computer si possono individuare 5 componenti principali: SCHEDA MADRE. MICROPROCESSORE che contiene la CPU MEMORIA RAM MEMORIA ROM

Architettura di un calcolatore: introduzione

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

La Macchina Virtuale

Corsi Speciali Abilitanti Indirizzo 2: Fisico-Matematico Modulo Didattico: Elementi di Informatica Classi: 48/A TEST D INGRESSO

Architettura dei calcolatori I parte Introduzione, CPU

Corso di Calcolatori Elettronici I A.A Il processore Lezione 18

Il computer: primi elementi

Hardware di un Computer

FONDAMENTI di INFORMATICA L. Mezzalira

Il memory manager. Gestione della memoria centrale

Richiami di informatica e programmazione

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

CdL in Medicina Veterinaria - STPA AA

Sistema operativo: Gestione della memoria

Il Software. Il software del PC. Il BIOS

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico pagina 1

Gerarchia delle memorie

Memoria Secondaria o di Massa

Sistemi Operativi (modulo di Informatica II) Sottosistema di I/O

CONCETTI BASE dell'informatica Cose che non si possono non sapere!

LINGUAGGI DI PROGRAMMAZIONE

Sistemi Operativi (modulo di Informatica II) I processi

Il processore - CPU (CENTRAL PROCESSING UNIT)

Architettura hardware

Sistemi Operativi Kernel

Laboratorio di Informatica

Linguaggi di programmazione

Il processore - CPU. PDF created with pdffactory trial version

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

Cos e` un Sistema Operativo? Cos è un sistema operativo?

Transcript:

Reti e problematiche di Rete I sistemi operativi Enrico Cavalli Anno Accademico 2008-20092009 Introduzione ai sistemi operativi 1

Il sistema operativo Il sistema operativo è un software che sovrintende al funzionamento del calcolatore eseguendo compiti differenti visione dell utente di un PC visione dell utente di un grande sistema visione del programmatore Il sistema operativo può essere esaminato da diversi punti di vista e questo ne rende a volte complicata la descrizione Il sistema operativo: Gestisce l interazione utente computer Funge da interfaccia tra applicazioni e le risorse del sistema Gestisce la condivisione delle risorse; Ottimizza l uso delle risorse Fornisce servizi per lo sviluppo del software e l amministrazione del sistema. Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 3 Il sistema operativo Esempi: Linux/Unix, Windows XP, Windows Vista o Mac OS X Interazione utente-computer o applicazione computer sono aspetti differenti della medesima esigenza: nascondere la complessità dell hardware Gestione, condivisione, ottimizzazione dell uso delle risorse CPU Memoria I / O Disco I / O I moderni sistemi sono multiprogrammati: Multiutenza Multitasking Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 4 2

Il sistema operativo Fornisce servizi per l amministrazione del sistema Esempio in ambiente Windows Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 5 Architettura H/S dei sistemi Architettura a strati del sistema e differente visione da parte dei diversi attori che compaiono in un sistema per l elaborazione dei dati Programmatori di sistema Software Applicativo Word Processor Fogli elettronici Sistemi contabili Grafica Videogiochi Web Browser Programmi per CAD... Software di Sistema ShellComandi Interpreti Compilatori Loader Debugger Editor DBMS... Sistema Operativo Hardware Programmatori di applicazioni CALL EXEC( ) API - Application Programmer Interface Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 6 3

Shell dei comandi L utente interagisce tramite la shell dei comandi: - Shell grafiche, shell a caratteri con linee di comandi Shell dei Comandi Sistema Operativo C:\>copy ec.bat ec_copia.bat 1 file copiati. C:\>del eccopia.bat Impossibile trovare C:\eccopia.bat C:\>del ec_copia.bat C:\>date Data corrente: 02/08/2007 Immettere nuova data: (gg/mm/aa) C:\>time Ora corrente: 15.07.33,39 Immettere nuova ora: 15.05 C:\> C:\> prompt del sistema Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 7 Shell dei comandi Visualizza il Prompt di sistema Leggi la stringa con comando e parametri Analizza comando do print(prompt); read(stringa); Analizza(Stringa,Cmd,Param,Errore); if (Errore > 0) Messaggio(Errore); else Esegui(Cmd,Param); endif; forever; Sì Errore? No Messaggio di errore Esegui il comando La logica della shell Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 8 4

Sistema Operativo Il sistema operativo è un programma che è sempre in esecuzione durante tutte le attività del calcolatore ed è eseguito in modalità riservata. Sempre in esecuzione: il codice del sistema operativo è sempre presente nella memoria centrale pronto per l esecuzione. Nucleo (o kernel) del sistema operativo. Modalità riservata o modo supervisore o modalità kernel o modo di sistema. Nella modalità riservata il processore può eseguire tutte le istruzioni del set di istruzioni macchina. In modalità utente il processore può eseguire un insieme ristretto di istruzioni. Sono escluse, per ragioni di sicurezza, alcune istruzioni la cui esecuzione è permessa solo al sistema operativo. Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 9 Computer anni 40-50 Programma in esecuzione Assenza di sistemi operativi Uso del linguaggio macchina ( poi assembler ) Uso open shop del sistema Memoria Il programmatore deve: Caricare in memoria il contenuto di un pacco di schede con l assemblatore Tradurre il programma assembler e produrre un pacco di schede con la traduzione in codice macchina del programma letto Caricare ed eseguire il programma tradotto, dopo avere inserito nel lettore le schede con i dati da elaborare. Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 10 5

Computer anni 40-50 Primi rudimentali sistemi operativi per ridurre il tempo di set up del del programma - sistemi batch o monitor - monoprogrammazione Linguaggi di programmazione FORTRAN (Formula Transformation) nel 1958 $JOB NomeJob, NomeUtente, Parametri $FORTRAN DIMENSION X(100) JCL Job Control Language Interprete JCL Routine di servizio Programmi utente e di sistema Memoria...... 999 STOP END SUBROUTINE SUB1(PAR1, PAR2)... END SUBROUTINE SUB2... END $LOAD $RUN 150 75 1238 12.5 13.75 $END Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 11 Anni 60: multiprogrammazione Sistema Operativo Sistemi batch multi programmati Importanza del grado di multiprogrammazione P 1 P 2 Memoria Esigenze della multiprogrammazione: - Implementare politiche di protezione della memoria per evitare interferenze dannose tra i programmi in esecuzione; - Controllare che un programma in esecuzione non monopolizzi il sistema; - Limitare l intervento della CPU nelle operazioni di lettura e scrittura dei dati grazie al DMA (Direct Memory Access); - Gestione delle interruzioni; - Implementare tecniche di spooling nelle operazioni di input/output. Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 12 6

Anni 60: multiprogrammazione Protezione della memoria: uso di Registri Limite 25512 38748 Sistema Operativo P 1 P 2 Memoria Presenza di timer e capacità di gestire le interruzioni dei programmi, cioè di tenere conto del loro stato per poter riprendere l esecuzione di un programma interrotto DMA (Direct Memory Access): è un dispositivo in grado di operare il trasferimento dei dati tra memoria e unità periferica senza coinvolgere il processore. L azione del DMA è iniziata dal processore che lo informa su origine, destinazione e quantità di dati da trasferire. Il processore si mette a fare altro mentre il DMA esegue in parallelo il trasferimento dei dati. Dopo aver trasferito i dati il DMA invia un segnale al processore per indicare il completamento dell operazione di I/O. Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 13 Spooling delle periferiche Lo spooling, che prende il nome dall acronimo SPOOL (Simultaneous Peripheral Operation On Line), risolve il problema delle operazioni simultanee sulle periferiche 1 2 2 La scrittura sulle periferiche è gestita dal sistema operativo che provvede a serializzare le operazioni di output dei programmi impedendo interferenze dannose 1. I programmi scrivono i dati in appositi file su disco, inviando l output non più alla periferica fisica ma a periferiche virtuali assegnate e gestite dal sistema operativo 2. Quando l output è completato il sistema operativo lo invia alla periferica opportuna Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 14 7

I vantaggi della multiprogrammazione Esecuzione parallela di P 1 e P 2 : in ogni istante c è un solo programma che occupa il processore ma in breve tempo sia P 1 che P 2 sono eseguiti dal processore I due programmi sono eseguiti in 7 ms con la CPU occupata per 4 ms ( 57% del tempo totale) mentre con l esecuzione sequenziale la CPU è attiva per 4 ms ( 36% del tempo totale ) Se il primo dei programmi a partire è P 2 il tempo di completamento è di 6.5 ms con la CPU impegnata per 4 ms (62% del tempo totale) Introducendo P 3, eseguito in 2 ms (0,5 I/O, 1 CPU, 0.5 I/O), si osserva che i tre programmi sono completati in 7 ms con la CPU impegnata per 5 ms (71% del tempo totale) L esempio evidenzia l Importanza del grado di multiprogrammazione, dell ordine di esecuzione dei programmi e delle loro caratteristiche specifiche per l efficienza complessiva del sistema. P 1 P 2 P 1 : 0,5ms CPU, 3ms I/O, 0,5ms CPU, 2ms I/O P 2 : 1ms I/O, 3ms CPU, 1ms I/O P 3 0 1 2 3 4 5 6 7 t Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 15 Sistemi a priorità e time-sharing In base al comportamento i programmi si classificano in programmi: CPU bound: che impegnano molto la CPU e fanno poco I/O I/O bound: che occupano poco la CPU ed eseguono molto I/O I sistemi batch multiprogrammati favoriscono i processi CPU bound che, una volta in possesso della CPU, la tengono fin che vogliono. Particolarmente sfavoriti sono i processi interattivi a terminale dove si desiderano tempi di risposti brevi Due approcci differenti alla multiprogrammazione: Multiprogrammazione guidata dalle priorità Sistemi time sharing: suddivisione del tempo in time slice (quantum) Priorità e time sharing sono accomunati dal fatto che un programma in esecuzione può essere interrotto per cedere la CPU a un altro pronto per l esecuzione Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 16 8

Sistemi a priorità e time sharing Priorità P 4 P 3 P 2 P 1 CPU Multiprogrammazione con priorità: i programmi sono inviati alla CPU in ordine di priorità. P 1 ha priorità maggiore di P 2. P 2 ha priorità superiore a P 3. P 3 ha priorità superiore a P 4. Time Sharing P 4 P 5 P 6 CPU P 3 P 2 P 1 Nel time sharing i programmi sono eseguiti a turno circolarmente per un quantum di tempo Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 17 Sistemi recenti Più recentemente con l avvento dei personal computer si sono sviluppati sistemi operativi dove oltre ai precedenti obiettivi diventa fondamentale la semplicità d uso del sistema: si affermano pertanto le interfacce grafiche e le shell di comandi grafiche Nei sistemi operativi moderni è richiesta anche la capacità di sovrintendere il funzionamento di sistemi con più processori dove il parallelismo nell esecuzione dei programmi è reale e non solo simulato per effetto della multiprogrammazione Un architettura a molti processori che si ormai affermata è la cosi detta architettura a multi processore simmetrico SMP (Simmetric Multi Processor) CPU CPU CPU CPU Memoria Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 18 9

Funzioni e struttura del sistema operativo Il sistema operativo gestisce e ottimizza l uso delle risorse: Processore: il s.o. assegna il processore ai programmi in attesa di esecuzione, operando opportune scelte Memoria centrale: un programma in esecuzione risiede in memoria, il s.o. deve essere in grado di allocare porzioni di memoria ai programmi Dispositivi di I/O: i programmi in esecuzione richiedono servizi per il trasferimento dei dati al s.o. che opera i trasferimenti richiesti cercando di recuperare gli eventuali errori Informazioni: i calcolatori si usano per gestire informazioni: sono archiviate nel sistema per essere recuperate ed elaborate. Le informazioni sono manipolate come file Tenere conto dello stato delle risorse Avere una politica per operare scelte nell allocazione delle risorse. Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 19 Modello a strati del sistema operativo Shell dei comandi Gestione delle informazioni Gestione delle periferiche Gestione della memoria Processi e processore Hardware Ogni livello assolve a compiti specifici utilizzando i servizi offerti dallo strato inferiore e offrendo servizi al livello superiore Ogni livello è visto come una macchina virtuale in grado di fornire servizi Ogni livello opera sulla macchina virtuale del livello inferiore e costruisce una macchina virtuale più potente per il livello superiore Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 20 10

Architettura microkernel Gestione della memoria Gestione dell I/O Microkernel Hardware Processi e processore Gestione delle Informazioni Solo il microkernel è eseguito in modalità riservata Shell dei comandi Nel microkernel il nucleo esegue un minimo di funzioni, quali la gestione del processore, delle interruzioni e la comunicazione tra processi. Tutte le altre operazioni sono eseguite come applicazioni in modalità utente Lo scopo è realizzare sistemi operativi semplici e flessibili: manutenzione e evoluzione sono semplici come l aggiornamento di un applicazione. Nei s.o. a microkernel le diverse componenti del sistema operativo comunicano tra di loro scambiandosi messaggi: ideale per i sistemi distribuiti Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 21 Architettura del computer 11

Architettura del computer Unità Centrale CPU Controllore dispositivo Controllore dispositivo Rete di comunicazione I moduli sono collegati tramite il bus di sistema Controllore memoria Controllore del disco Controllore dispositivo Controllore dispositivo Memoria centrale Disco Unità centrale: CPU e Memoria Dispositivi periferici, classificabili in dispositivi: per l interazione con l utente usabili solo dalla macchina per - la memorizzazione delle informazioni - il trasferimento dei dati Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 23 Memoria centrale - RAM Indirizzi Dimensione della memoria 0 1 2 3 4...... 104 105 106.... N... LOAD R1,104 ADD R1,105............ Ampiezza della parola di memoria - Un array di parole di memoria - Indicata come Random Access Memory - Volatile, Veloce, Costosa - Contiene sia dati che istruzioni, sotto forma di bit 2 3 Istruzioni Dati Capacità: Pochi GB.. Pochi TB 1 MB = 2 20 byte 10 6 byte 1 GB = 2 30 byte 10 9 byte 1 TB = 2 40 byte 10 12 byte Parole di memoria: 32-64 - 128 bit Tempo di accesso alla RAM: Diversi nsec: 20-150 nsec 1 ns = 10-9 sec 1 µs = 10-6 sec 1 ms = 10-3 sec Tempo di accesso al disco: 10-100 msec Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 24 12

Il processore CPU Moduli di I/O Unità di Controllo PC RI Memoria Controllore dispositivo Controllore dispositivo Controllore dispositivo I/O AR I/O BR MAR MBR R1 R2 RN Unità Logico Aritmetica Registri di sistema: non modificabili dai programmi utente Registri utente: 1-128 Tempo di esecuzione istruzioni: pochi ns Tempo di trasferimento dai registri alla ALU: pochi ns Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 25 Ciclo di esecuzione delle istruzioni PC = Start Preleva istruzione PC = PC+1 Esegui istruzione Prelevamento Esecuzione /* -------------------------------------- */ /* Ciclo di esecuzione delle Istruzioni */ /* -------------------------------------- */ PC = IndirizzoPrimaIstruzione; do RI = Memoria[PC]; PC = PC + 1; Ciclo delle Istruzioni EseguiIstruzione(RI); while (RI <> HALT); HALT arresta il processore Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 26 13

Stack Pointer PUSH SP POP PUSH Operando: SP++; Memoria[SP] = Memoria[Operando]; Registri generali: R1, R2,.. RN e anche SP, Stack Pointer Registri di sistema: non modificabili dall utente: PC, IR, MBR, MAR, I/O AR, I/O BR, PSW PSW: Program Status Word Nella PSW: i codici condizione POP Operando: Memoria[Operando] = Memoria[SP]; SP--; Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 27 Le istruzioni del linguaggio macchina Op Code Registro Indirizzo Operando 8 bit 3 bit 21 bit Istruzione simbolica Descrizione LOAD Rx,Indirizzo Rx = Memoria[Indirizzo]; STORE Rx, Indirizzo Memoria[Indirizzo] = Rx; PUSH Indirizzo SP++; Memoria[SP] = Memoria[Indirizzo]; POP Indirizzo Memoria[Indirizzo] = Memoria[SP]; SP--; ADD Rx, Indirizzo Rx = Rx + Memoria[Indirizzo]; SUB Rx, Indirizzo Rx = Rx - Memoria[Indirizzo]; MUL Rx, Indirizzo Rx = Rx * Memoria[Indirizzo]; DIV Rx, Indirizzo Rx = Rx / Memoria[Indirizzo]; CMP Rx, Indirizzo Confronta Rx con Memoria[Indirizzo]; JMP Indirizzo PC = Indirizzo; JMPEQ Indirizzo if (CodiceCondizione==0) PC=Indirizzo; JMPLT Indirizzo if (CodiceCondizione<0) PC=Indirizzo; JMPGT Indirizzo if (CodiceCondizione>0) PC=Indirizzo; HALT Ferma il processore Rx Un registro utente Memoria[X] Una parola di memoria PC Program Counter SP Stack Pointer Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 28 14

Esempi(1) /* --------------------------------------------------------- */ /* S=A+B; collocato in memoria all indirizzo 100 */ /* --------------------------------------------------------- */... 0100 20 -- A 0101 15 -- B 0102 -- S 0103 LOAD R0,0100 -- A nel registro R0 0104 ADD R0,0101 -- A + B in R0 0105 STORE R0,0102 -- salva il risultato in S 0106 HALT -- fine... Istruzione A B S R0 103 20 15-104 105 106 Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 29 Esempi(2) /* --------------------------------------------------------- */ /* P=2 N collocato in memoria a partire dalla locazione 2500 */ /* --------------------------------------------------------- */... 2500 7 -- N 2501 1 -- La costante 1 2502 2 -- La costante 2 2 N per N >= 0 e 2503 -- P i dati in memoria 2504 LOAD R0,2501 -- 1 in R0 2505 LOAD R1,2502 -- 2 in R1 2506 LOAD R2,2501 -- 1 in R2 dove si forma P 2507 LOAD R3,2500 -- N in R3 2508 JMPEQ 2512 -- Se N=0 fine 2509 MUL R2,R1 -- P = P*2 2510 SUB R3,R0 -- N = N-1 2511 JMPGT 2509 -- Iterazione per N>0 2512 STORE R2,2503 -- Salva il risultato in P... Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 30 15

Impossibile visualizzare l'immagine. La memoria del La memoria Cache Con la memoria cache si costruiscono sistemi di memoria a più livelli abbinando memorie piccole veloci costose a memorie di grande dimensione (lente ed economiche) in modo che il sistema abbia capacità pari a quella della più grande e velocità (quasi) uguale alla più veloce delle due CPU 1 2 Cache Memoria centrale t C tm Cache hit: p > 0.95 Il processore cerca la parola nella memoria cache 1: se c è la usa, (t c ). Se la parola cercata non è in cache il processore la preleva dalla memoria centrale (t M ), la ricopia nella cache(t c ) e la usa. Inoltre il trasferimento 2, dalla memoria centrale alla cache avviene per blocchi Tempo medio di accesso: T m = t c + (1 - p) t M, t c cache, t M memoria, p probabilità di successo (cache hit) nel trovare la parola in cache Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 31 Principio di località Si osservano sperimentalmente cache hit superiori al 90% che sono giustificati teoricamente dai principi di località: Principio di località temporale: se un programma accede a una parola di memoria è probabile che in un breve intervallo di tempo acceda di nuovo alla stessa cella di memoria (si pensi ai loop) Principio di località spaziale: un programma che accede a una parola di memoria accederà probabilmente, entro breve tempo, a celle di memoria vicine. E questa la ragione per cui i trasferimenti dalla memoria centrale alla cache avvengono a blocchi Il principio di località vale per istruzioni e dati, ma istruzioni e dati sono in zone distanti della memoria Cache dati Cache istruzioni T m = t c + (1 - p) t M Cache a più livelli per aumentare p Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 32 16

Impossibile visualizzare l'immagine. La memoria del Gerarchia di memorie Tempo di accesso 1 ns Livelli della gerarchia Registri del processore Capacità < 1 KB Frequenza di accesso 2 5 ns Memorie cache 1 2 MB 20 200 ns Memoria centrale 1 4 GB 20 30 ms Dischi magnetici 50 500 GB molti secondi Nastri magnetici - Dischi ottici 100 GB Valori per personal computer 2008 T Disco /T RAM = 20ms/200ns = 2 10 7 ns/200ns = 10 5 Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 33 Il linguaggio usato 17

Impossibile visualizzare l'immagine. La memoria del Costanti e variabili const PI = 3.1415; const LIMITE = 10; const PROMPT = C:\> ; int M, N; int Base(=2); double Risultato; string Nome, Cognome; char InizialeNome; boolean Finito; La costante PROMPT è una stringa di caratteri La variabile intera Base è inizializzata a 2 InizialeNome è una variabile di tipo carattere typedef enum {Bloccato,Sospeso,Pronto,InEsecuzione} statoprocesso; typedef enum {Lun, Mar, Mer, Gio, Ven, Sab, Dom} giorno; typedef enum {0, 1} bit; /* ------------------------------------------------------------ */ /* La enumerazione dei valori implica un ordinamento: */ /* Lun < Mar < Mer < Gio < Ven < Sab < Dom */ /* ------------------------------------------------------------ */ statoprocesso Sp1, Sp2,Sp3; giorno GiornoSettimana; La variabile Flag potrà assumere i soli valori 0 e 1 bit Flag; Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 35 Array e strutture typedef char string[512]; typedef char riga[120]; riga PrimaRiga, UltimaRiga; riga Pagina[55]; int Buffer[200]; definizione del tipo string PrimaRiga e UltimaRiga: di tipo riga Pagina: array di 55 variabili di tipo riga Buffer: array di 200 interi PrimaRiga[1] Buffer[5] Pagina[20] Pagina[55] Pagina[19][0] Pagina[54] Pagina[54][119] Il secondo carattere di PrimaRiga Il sesto intero di Buffer La riga 20 di Pagina Errore: l ultimo elemento è Pagina[54] Il primo carattere della riga 20 di Pagina La 55-esima riga Pagina Ultimo carattere, ultima riga di Pagina Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 36 18

Impossibile visualizzare l'immagine. La memoria del Array e strutture typedef struct { string Marca; string Modello; int Prezzo; int Potenza; float Consumo; } automobile; automobile Fiat500, Serie3; Fiat500.Potenza La componente Potenza di Fiat500 Fiat500.Prezzo La componente Prezzo di Fiat500 Serie3.Consumo La componente Consumo di Serie3 Serie3.Marca = BMW ; Marca di Serie3: il valore BMV Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 37 Istruzione di assegnamento /*--------------------------------------------------------------- * int M, N, Bit *---------------------------------------------------------------*/ M = M + 1; Incrementa m di 1 Bit = N % 2; Resto della divisione: (7%3 = 1) N++; Incrementa N di 1 /*--------------------------------------------------------------- * boolean Errore, Uguale, Diverso * double A,B,C,Delta,X *---------------------------------------------------------------*/ Errore = N<2 OR N>10; Uguale = M == N; Diverso = M <> N; Delta = B*B 4*A*C; X1 := (-B + sqrt(delta))/(2*a); sqrt(delta): radice di Delta /*---------------------------------------------------------------- * automobile Fiat500 *---------------------------------------------------------------*/ Fiat500.Prezzo = 10200; Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 38 19

Impossibile visualizzare l'immagine. La memoria del Input / Output /*--------------------------------------------------------------- * int M, Anno; *---------------------------------------------------------------*/ read ( M ); Anno = M++; print ( Valore di M =, M ); print ( Valore di Anno =, Anno ); Se il file di input contiene il valore 1492, sul file di output viene scritto: Valore di M = 1492 Valore di Anno = 1493 Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 39 Strutture di controllo(1) /*--------------------------------------------------------------- * int Dato1, Dato2, Buffer; * Istruzioni che scambiano i contenuti di Dato1 e Dato2 *---------------------------------------------------------------*/ begin Buffer = Dato1; Dato1 = Dato2; Dato2 = Buffer; end; /* -------------------------------------------------------------- * Due possibili modi per calcolare il valore assoluto di Dato * ------------------------------------------------------------- */ double Dato, Valass;...... if ( Dato >= 0.0 ) Valass = Dato; Valass = Dato; if ( Dato < 0.0 ) else Valass = -Dato; Valass = -Dato; endif; endif; Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 40 20

Impossibile visualizzare l'immagine. La memoria del Strutture di controllo(2) /*--------------------------------------------------------------- * Classificazione di un carattere secondo differenti tipi *---------------------------------------------------------------*/ char Car; typedef enum {maiuscolo, minuscolo, numerico, punto, altrotipo} tipo; tipo TipoCarattere;... read ( Car ); if ( Car>= a and Car<= z ) TipoCarattere = minuscolo; elseif ( Car>= A and Car<= Z ) TipoCarattere = maiuscolo; elseif ( Car>= 0 and Car <= 9 ) TipoCarattere = numerico; elseif ( Car ==. ) TipoCarattere = punto; else TipoCarattere = altrotipo; endif; Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 41 Strutture di controllo(3) /*--------------------------------------------------------------- * Lettura e somma di una serie di dati acquisiti da tastiera. * La presenza di un Dato <= 0 informa che tutti i dati della * serie sono stati letti *---------------------------------------------------------------*/ double Dato, Somma; Somma = 0.0; While itera per vero read(dato); while ( Dato > 0.0 ) Controllo: all inizio del blocco Somma = Somma + Dato; Iterazioni: zero o più iterazioni read (Dato); endwhile; /*---------------------------------------------------------------*/ boolean Bloccato;... while ( Bloccato ) endwhile; prosegui esecuzione Una while che non fa nulla. Quando Bloccato vale true il programma esegue continuamente il test di controllo all inizio del blocco while Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 42 21

Impossibile visualizzare l'immagine. La memoria del Strutture di controllo(4) /* ------------------------------------------------------------- * Lettura controllata di una variabile intera di nome Anno * Un valore legale di Anno deve essere compreso tra 2000 e 2020 * ------------------------------------------------------------- */ int Anno; string Prompt; boolean Errore; Prompt = Un intero compreso tra 2000 e 2020 : ; do print (Prompt); read (Anno); Errore = Anno<2000 or Anno>2020; if (Errore) print( Errore nei dati\n ); endif; while (Errore); print( xyz\n ); File di output: scrive: xyz e si posiziona sulla riga successiva per la prossima scrittura. Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 43 Strutture di controllo(5) /* ------------------------------------------------------------- * Il ciclo infinito è reso con l istruzione: do.. forever; * ------------------------------------------------------------- */ do Istruzione; forever; while(true) Istruzione; endwhile; ; do Istruzione; while(true); /* ------------------------------------------------------------- * Conteggio degli spazi contenuti in una stringa * ------------------------------------------------------------- */ string Stringa(=... ); int Spazi, Lung, Pos; char Carattere, Spazio(= ); Lung = len(stringa); Spazi = 0; for (Pos=0; Pos<Lung; Pos++; ) Carattere = Stringa[Pos]; if ( Carattere == Spazio ) Spazi++; endif; endfor; for( Pos=0;Pos<Lung;Pos++; ) S; endfor; viene eseguita nel seguente modo: Pos = 0; while ( Pos<Lung ) S; Pos++; endwhile; Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 44 22

Impossibile visualizzare l'immagine. La memoria del Sottoprogrammi(1) tipo_restituito nome_function ( parametri ) begin dichiarazioni_tipi_variabili_costanti_function; istruzioni_che_compongono_la_function; end; /* ------------------------------------------------------------- * NumeroSpazi restituisce il numero di spazi di una stringa * ------------------------------------------------------------- */ int NumeroSpazi( string Riga ) begin int Lunghezza, Pos, ContaSpazi; char Spazio(= ); Lunghezza = len(riga); ContaSpazi = 0; for( Pos=0; Pos <Lunghezza; Pos++ ) if (Riga[Pos] == Spazio) ContaSpazi++; endif; endfor; return ContaSpazi; end; return Espressione; Termina l esecuzione della funzione restituendo al chiamante il valore contenuto in Espressione Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 45 Sottoprogrammi(2) /* ------------------------------------------------------------- * Uso della funzione NumeroSpazi * ------------------------------------------------------------- */ string stringa; Stringa = Questa è una stringa di caratteri ; print ( Nella frase, Stringa ); print ( ci sono:, NumeroSpazi(Stringa), spazi. ); /* ------------------------------------------------------------- * Scambia sottoprogramma di tipo procedura * ------------------------------------------------------------- */ void Scambia(int &Par1, int &Par2) begin int Temp; Temp = Par1; Par1 = Par2; Par2 = Temp; end; Un sottoprogramma di tipo procedura non restituisce nulla: void Scambia(...) In una procedura non c è istruzione return Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 46 23

Impossibile visualizzare l'immagine. La memoria del Struttura di un programma(1) /* ------------------------------------------------------------- * Struttura generale di un programma * ------------------------------------------------------------- */ // dichiarazioni globali void main() begin // ----------------------------------------------- // dichiarazioni di tipi, costanti, variabili // dichiarazione dei sottoprogrammi utilizzati // ----------------------------------------------- istruzioni_che_compongono_il_programma; end; // Codice dei sottoprogrammi dichiarati Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 47 Struttura di un programma(2) /* ------------------------------------------------------------- * Struttura generale di un programma * ------------------------------------------------------------- */ void main() begin int Inizio, Fine; void Scambia(); //------------------------------------------------------- // main può accedere alle sole variabili: // Inizio, Fine e alla procedura Scambia //------------------------------------------------------- Inizio = 20; Fine = 5; if ( Inizio > Fine ) Scambia(); endif;... end; void Scambia() begin int Temp; //-------------------------------------------------------- // Scambia può accedere a: Inizio, Fine e Temp //-------------------------------------------------------- Temp = Inizio; Inizio = Fine ; Fine = Temp; end; Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 48 24

Struttura di un programma(3) /* ------------------------------------------------------ * Struttura di un programma * con moduli paralleli * ------------------------------------------------------ */ begin end; Blocco1; parbegin Procedura1( parametri ); Procedura2( parametri ); Procedura3( parametri ); parend; Blocco2; Blocco3; Blocco1 Proc1( ) Proc2( ) Blocco2 Blocco3 Proc3( ) Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 49 25