Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Introduzione all'Informatica: Dati, Informazioni, Conoscenza e Architettura di Von Neumann, Dispense di Elementi di Informatica

Programma di studio per l’esame finale

Tipologia: Dispense

2018/2019

Caricato il 13/11/2019

Utente sconosciuto
Utente sconosciuto 🇮🇹

1 / 27

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Il termine “Informatica”
Deriva dal francese informatique coniato negli anni ’60 da Philippe Dreyfus.
Ottenuto come contrazione dei termini “information” e “automatique”.
Usato per indicare la disciplina tecnico- scientifica, che si occupa della progettazione
e costruzione di macchine in grado di trattare, o elaborare, in modo automatico
l’informazione.
Trattamento dell’Informazione
In generale, il trattamento dell'informazione è
l'elaborazione dell'informazione in
qualunque
modo rilevabile da un osservatore:
• Stampare un file di testo da parte di un sistema informatico (cambia il supporto).
•Eseguire operazioni aritmetiche (si trasformano i numeri).
• Archiviare foto digitali.
• Effettuare ricerche su Google.
• Scrivere un post sulla bacheca di Facebook.
I Calcolatori (Elaboratori) Elettronici (1/2)
Svolgono un lavoro che per l’uomo è naturale, ma:
• lo fanno rapidamente;
•sono infaticabili;
•riescono a gestire enormi quantità di dati;
• in alcuni casi permettono di superare vincoli temporali e spaziali.
...
A differenza degli elettrodomestici sono programmabili e possono essere adattati a
risolvere qualsiasi tipo di problema che possa tradursi in un numero finito di operazioni.
I Calcolatori (Elaboratori) Elettronici (2/2)
L’informazione che ha attirato l’attenzione dell’uomo verso la realizzazione di
elaboratori è quella espressa in forma quantitativa e, in particolare, numerica.
Per tale motivo si è diffuso il termine “
calcolatore” (in inglese computer) che viene
usato spesso in alternativa a “elaboratore”
In inglese, computer science è la traduzione del nostro termine “ informatica”.
Alan
Alan Turing (Londra, 23 giugno 1912 – Wilmslow, 7 giugno 1954) è stato un matematico,
logico e crittografo britannico, considerato uno dei padri dell'informatica e uno dei più
grandi matematici del XX secolo.
Turing è solitamente considerato il
padre della scienza informatica e dell'intelligenza
artificiale per la sua formalizzazione dei concetti di algoritmo e calcolo mediante la
macchina di Turing.
La Macchina di Turing
La Macchina di Turing è una macchina che ha uno stato, ha capacità di leggere e
scrivere su un nastro e può cambiare stato.
Perché si usa?
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b

Anteprima parziale del testo

Scarica Introduzione all'Informatica: Dati, Informazioni, Conoscenza e Architettura di Von Neumann e più Dispense in PDF di Elementi di Informatica solo su Docsity!

Il termine “Informatica” Deriva dal francese informatique coniato negli anni ’60 da Philippe Dreyfus. Ottenuto come contrazione dei termini “information” e “automatique”. Usato per indicare la disciplina tecnico- scientifica, che si occupa della progettazione e costruzione di macchine in grado di trattare, o elaborare, in modo automatico l’informazione.

Trattamento dell’Informazione In generale, il trattamento dell'informazione è l'elaborazione dell'informazione in qualunque modo rilevabile da un osservatore:

  • Stampare un file di testo da parte di un sistema informatico (cambia il supporto). •Eseguire operazioni aritmetiche (si trasformano i numeri).
  • Archiviare foto digitali.
  • Effettuare ricerche su Google.
  • Scrivere un post sulla bacheca di Facebook.

I Calcolatori (Elaboratori) Elettronici (1/2) Svolgono un lavoro che per l’uomo è naturale, ma:

  • lo fanno rapidamente; •sono infaticabili; •riescono a gestire enormi quantità di dati;
  • in alcuni casi permettono di superare vincoli temporali e spaziali. ... A differenza degli elettrodomestici sono programmabili e possono essere adattati a risolvere qualsiasi tipo di problema che possa tradursi in un numero finito di operazioni.

I Calcolatori (Elaboratori) Elettronici (2/2) L’informazione che ha attirato l’attenzione dell’uomo verso la realizzazione di elaboratori è quella espressa in forma quantitativa e, in particolare, numerica. Per tale motivo si è diffuso il termine “ calcolatore ” (in inglese computer) che viene usato spesso in alternativa a “ elaboratore ” In inglese, computer science è la traduzione del nostro termine “ informatica ”.

Alan Alan Turing (Londra, 23 giugno 1912 – Wilmslow, 7 giugno 1954) è stato un matematico, logico e crittografo britannico, considerato uno dei padri dell'informatica e uno dei più grandi matematici del XX secolo. Turing è solitamente considerato il padre della scienza informatica e dell'intelligenza artificiale per la sua formalizzazione dei concetti di algoritmo e calcolo mediante la macchina di Turing.

La Macchina di Turing La Macchina di Turing è una macchina che ha uno stato, ha capacità di leggere e scrivere su un nastro e può cambiare stato. Perché si usa?

La Macchina di Turing esegue algoritmi Tramite la Macchina di Turing si dimostra la calcolabilità (se un problema si può risolvere o meno con un calcolatore).

John Von Neumann John Von Neumann (Budapest, 28 dicembre 1903 – Washington, 8 febbraio 1957), è stato un matematico, fisico e informatico ungherese naturalizzato statunitense. A lui si devono contributi fondamentali in numerosi campi tra cui l’informatica. Quando conosce ENIAC , un primordiale computer dalle capacità limitate e utile per eseguire solo operazioni predeterminate, studia come migliorarla con l'intuizione avuta da Turing (10 anni prima): permettere al computer (hardware) di eseguire le istruzioni codificate in un programma (software). Siamo nel 1945. L'EDVAC (Electronic Discrete Variables Automatic Computer) è la prima macchina digitale programmabile tramite un software basata su quella che sarà poi definita l'architettura di Von Neumann.

Information & Communication Technology (1/2) In alternativa al termine “informatica” viene utilizzato spesso il termine “ tecnologia dell’informazione ” (dall’inglese Information Technology o IT). Negli ultimi decenni le capacità dei singoli calcolatori sono notevolmente aumentate, grazie alla loro interconnessione in rete. I calcolatori sono diventati degli strumenti di comunicazione.

Information & Communication Technology (2/2) La convergenza tra la tecnologia dell’informazione e le telecomunicazioni ha dato vita ad una disciplina che prende il nome di Information & Communication Technology (ICT)

Il termine “Informazione” (1/2) Nei nostri discorsi: •Mezzi di informazione

  • Società dell’informazione
  • Tecnologie dell’informazione •Potere dell’informazione •Monopolio dell’informazione Nell’ambito dell’informatica il significato del termine “informazione” messo spesso in relazione con quello di “ dato ” e di “ conoscenza ”. Il termine “Informazione” (2/2) CONOSCENZA INFORMAZIONI DATI La temperatura corporea di 39,5 di Tizio viene considerata un segnale d’allarme. La temperatura corporea di Tizio è 39,5 misurata in gradi centigradi.

Dati, Informazioni e Conoscenza

Hardware e software L’hardware è la parte del computer che puoi prendere a calci; il software quella contro cui puoi solo imprecare.” Jeff Pesis. L’hardware è un attore ed il software una sceneggiatura : l’hardware esegue operazioni diverse a seconda del tipo di software usato.”

I due livelli delle tecnologie informatiche Il termine hardware indica la struttura fisica dei dispositivi (o macchine informatiche), costituita di norma da componenti elettronici (computer, monitor, stampante, cavi telefonici, antenne, etc.) che svolgono specifiche funzioni nel trattamento e nella trasmissione delle informazioni. Il termine software indica il livello logico (in contrapposizione con quello fisico dell’hardware), cioè l’insieme delle istruzioni che consentono all’hardware di svolgere i propri compiti.

Rappresentazione dell’Informazione L’informazione è rappresentata dai dati che, a loro volta, sono espressi in forma di simboli. La stessa informazione può essere codificata con simboli e modalità diverse: 1963 -> simboli “0”, “1”, “2”, ... MCMLXIII -> simboli della codifica romana Millenovecentosessantatre -> rappresentazione testuale …

Rappresentazione dell’Informazione nei Calcolatori (1/2) Consideriamo un alfabeto ridotto che contiene solo i simboli “0” e “1” Un bit ( contrazione di binary digit ) è un simbolo scelto sull’alfabeto {0, 1}. Nei calcolatori ogni elemento (numeri, testo, audio, video, istruzioni ...) viene rappresentato esclusivamente con sequenze di bit. I dati (ma anche le istruzioni) vengono codificati con sequenze di bit.

Rappresentazione dell’Informazione nei Calcolatori (2/2) Per elaborare, trasmettere e memorizzare l’informazione abbiamo bisogno di codificarla : •Livello alto Linguaggio (numeri). •Livello basso. •Alfabeto ({0,1} oppure {0,..., 9} oppure ...) •Regole di codifica (binaria o decimale o ...)Supporto/Tecnologia (transistor di un computer o foglio di carta o ...) ... La codifica dell’informazione è l’operazione con la quale l’informazione viene scritta su un supporto fisico. La decodifica è, invece, l’operazione con la quale l’informazione viene letta dal supporto fisico.

Perché codificare l’informazione? Per trattare (memorizzare, elaborare, trasmettere, etc.) l’informazione: •si codifica l’informazione disponibile scrivendo su un supporto fisico; •si decodifica l’informazione corrispondente al risultato dell’elaborazione leggendo dal supporto fisico.

Un esempio semplice: l’interruttore Due sole possibilità: •Spento •Acceso L’informazione sullo stato dell’interruttore corrisponde dunque alla scelta fra due sole alternative. Codifica dell’Informazione in binario 1 bit rappresenta lo stato dell’interruttore Interruttore acceso: 1 Interruttore spento: 0

Codifica di un’Informazione con più di due stati Nel nostro esempio, abbiamo deciso di utilizzare un bit per rappresentare lo stato di ciascuna delle lampadine del semaforo. In questo modo, con 3 bit potremmo rappresentare tutti gli stati possibili del semaforo. Nel caso del semaforo, le alternative disponibili sono comunque poche.

Codifica dei caratteri Si, ma ... ... è possibile applicare queste idee alla rappresentazione di informazione più complessa, ad esempio di un testo? Un testo è rappresentato attraverso una successione di caratteri. Ogni carattere viene scelto all’interno di un insieme finito di simboli (alfabeto).

Codifica dei caratteri Con 8 bit, è possibile rappresentare la scelta fra 256 alternative diverse (28=256) da 00000000... a 11111111 passando per tutte le combinazioni intermedie (00000001, 00000010, 00000011, 00000100, ... 11111011, 11111100, 11111101, 11111110 ).

Codifica dei caratteri Nel caso del testo, possiamo far corrispondere diverse combinazioni di 8 bit (otto cifre, ciascuna delle quali può valere 0 o 1) a caratteri diversi. Ogni singolo CARATTERE viene codificato con una combinazione di 8 bit.

Codifica dei caratteri Ad esempio: 01000001 -> A

Dal punto di vista fisico un suono è un’alterazione della pressione dell’aria che, quando rilevata, ad esempio dall’orecchio umano, viene trasformata in un particolare stimolo elettrico. Mediante un microfono queste alterazioni vengono trasformate in un particolare stimolo elettrico. La durata, l’intensità e la variazione nel tempo della pressione dell’aria sono le quantità fisiche che rendono un suono diverso dall’altro.

La codifica dei suoni Fisicamente un suono è rappresentato come un’onda che descrive la variazione dell’aria nel tempo. Sull’asse delle ascisse viene rappresentato il tempo e sull’asse delle ordinate viene rappresentata la variazione di pressione corrispondente al suono stesso.

La codifica dei suoni La rappresentazione precedente viene detta analogica , in quanto descrive esattamente l’analogo della quantità fisica in esame, e fornisce una descrizione continua dell’onda sonora. Le rappresentazioni di tipo analogico non sono adatte al mondo dell’informatica, data l’impossibilità di poter trattare con informazioni di tipo continuo. È necessario trovare un modo per poter rappresentare in forma digitale (numerica) un’onda sonora.

La codifica dei suoni Si effettuano dei campionamenti sull’onda (cioè si misura il valore dell’onda a intervalli costanti di tempo) e si codificano in forma digitale le informazioni estratte da tali campionamenti. Quanto più frequentemente il valore dell’intensità dell’onda viene campionato, tanto più precisa sarà la sua rappresentazione. La sequenza dei valori numerici ottenuta dai campioni può essere facilmente digitalizzata. La codifica dei suoni Migliore è il campionamento, migliore sarà la qualità della codifica digitale. File mp L’orecchio umano riesce a sentire suoni entro i 15.000 Hz…

Codifica Binaria dei Caratteri ASCII (American Standard Code for Information Interchange): ogni carattere è rappresentato da una sequenza di 7 bit (128 caratteri diversi possibili) ASCII esteso : ogni carattere è rappresentato da un byte (256 caratteri diversi possibili, comprende anche lettere greche, accentate ...) EBCDIC (Extended Binary Coded Decimal Interchange Code): sviluppato ed impiegato da I.B.M., ogni carattere è rappresentato da un byte. UNICODE (consorzio di produttori di HW e SW): ogni carattere è rappresentato da 16 (65.536 caratteri diversi possibili) o 21 bit (più di 2 milioni di caratteri)

Anche per Ideogrammi, Braille, Simboli Matematici, Simboli Chimici, etc.

La Codifica dei Numeri Obiettivo : Codifica in binario dei numeri per favorire l’elaborazione da parte dei calcolatori Vincoli : Codifica e decodifica devono essere definite in maniera tale da poter essere compiute in maniera automatica (algoritmo) Problema : Deve essere possibile codificare tutti i numeri 0, 1, 2, 3, … -1, -2, -3, ... -12.4, -2.004, 0.56, 134.89, ... ...in sequenze 0000000, 000001, 000010, … L’associazione tra un numero decimale e la sua codifica binaria deve essere univoca in maniera tale da poter effettuare la decodifica in maniera coerente ( principio di non ambiguità )

Sistemi di Numerazione (1) Il nostro sistema di numerazione: Utilizza una notazione posizionale ed è in base 10 L’alfabeto utilizzato è l’insieme dei simboli {0, 1, 2, ..., 9} Non è l’unico sistema possibile. Essendo posizionale, il valore di una “ sequenza ” di simboli viene calcolata assegnando dei “ pesi ” ad ogni simbolo a seconda della sua posizione base. Posizioni Stringa di simboli 4103 + 5102+2101+ 3 migliaia centinaia decine unità Rappresentazione dei numeri: Sistema Decimale 3251 1 unità , 5 decine, 2 centinaia , 3 unità di migliaia 745814763 3 unità, 6 decine, 7 centinaia, 4 unità di migliaia, 1 decina di migliaia, 8 centinaia di migliaia, 5 unità di milioni, 4 decine di milioni, 7 centinaia di milioni.

Limiti sui numeri rappresentabili: codifica binaria semplice 4 bit a disposizione Possiamo rappresentare da 0000 a 1111, in decimale da 0 a 15 5 bit a disposizione Possiamo rappresentare da 00000 a 11111, in decimale da 0 a 31 ... Con k bit a disposizione possiamo rappresentare numeri da 0 a 2^k -1.

Presenta di un dispositivo di memorizzazione in cui è possibile rappresentare sia dati che istruzioni. Utilizza l’aritmetica binaria invece di quella decimale. Separa nettamente dispositivo di memorizzazione e dispositivo di elaborazione. La Macchina di Von Neumann ha la possibilità di memorizzare dati da elaborare e anche le istruzioni da eseguire per condurre l’elaborazione: il software Con software diversi, il calcolatore risolve problemi molto diversi.

Funzionamento della Macchina di Von Neumann L’unità centrale di elaborazione o CPU (o Processore) è capace di leggere (dalla memoria centrale), decodificare (interpretare) ed eseguire (impartendo gli opportuni comandi alle varie parti del sistema) le istruzioni di un programma, una alla volta. L’esecuzione delle istruzioni può comportare operazioni di elaborazione di dati (per esempio, operazioni aritmetiche) ovvero di trasferimento di dati (per esempio, dalla memoria centrale all’interfaccia di una periferica) La memoria centrale contiene le istruzioni di un programma e i dati necessari alla sua esecuzione.

BUS

Il bus di sistema assicura la interconnessione tra gli elementi della macchina di Von Neumann: tutti i trasferimenti di dati avvengono attraverso il bus. Il bus mette in collegamento logico i due elementi coinvolti nel trasferimento, in funzione dell’operazione da eseguire, mentre il collegamento fisico è sempre presente. Il bus è diviso in: Bus dati Bus indirizzi Bus di controllo

CPU: Central Processing Unit Tra i registri, ce ne sono due particolarmente usati: MDR: Memory Data Register (collegato al Bus dati e quindi di pari dimensione) MAR: Memory Address Register (collegato al Bus indirizzi e quindi di pari dimensione)

Periferiche Le periferiche sono le apparecchiature che consentono all’elaboratore di scambiare informazioni con il mondo esterno, mediante operazioni di ingresso o INPUT (verso l’elaboratore) e uscita o OUTPUT (verso l’esterno) Vengono in realtà considerate appartenenti alla macchina di Von Neumann solo le interfacce di collegamento verso le periferiche, mentre le periferiche sono considerate componenti separati

E’ da notare come nel modello di Von Neumann anche le memorie di massa siano incluse tra le periferiche, in quanto funzionalmente analoghe a queste ultime, dal punto di vista dell’interazione con l’elaboratore

Esecuzione dei programmi La Memoria Centrale (1/2) Per essere eseguito dalla macchina di Von Neumann, la Memoria Centrale (comunemente detta RAM - Random Access Memory) è il un programma , che è costituito da una sequenza di dispositivo di memorizzazione con cui la CPU interagisce tramite il Bus per leggere e scrivere istruziiostnriueziodnaitei (draipdpartei,sdeenvteaetissinerbeipnraersieon)te nella memoria centrale, in forma di sequenze di bit allocate. La RAM consiste in un insieme di unità elementari di memorizzazione dette Celle in parole successive di memoria. Ogni Cella è costituita da un insieme (multipli potenza di 2: 8, 16, 32, ...) Per esempio, supponendo che il caricamento avvenga a dispositivi bistabili (che possono memorizzare bit, appunto) per memorizzare un dato o una istruzione.

La Memoria Centrale (2/2) La Memoria Centrale è volatile : VOLATILE -> Richiede un flusso continuo di alimentazione elettrica per memorizza dati e istruzioni CENTRALE -> Per indicare l’importante ruolo che essa gioca nell’ambito dell’Architettura di Von Neumann Altri tipi di memorie come le memorie di massa sono dette persistenti: PERSISTENTE -> Mantiene i dati anche senza l’alimentazione elettrica

Linguaggio Macchina Istruzioni codificate in binario: istruzioni aritmetico-logiche (es. somma di due numeri, confronto tra due numeri ...) prevedono indicazione dei dati su cui operare istruzioni di trasferimento dati (es. da RAM a CPU, da CPU a RAM, input, output...) prevedono indicazione dei dati su cui operare istruzioni di controllo modificano il flusso di esecuzione (altrimenti sequenziale) delle altre istruzioni in base ad eventi esterni (es. clic del mouse) o a risultati precedenti.

Dati e Istruzioni Dati e istruzioni di programma sono codificate in forma binaria, cioè mediante sequenze finite di bit. Una istruzione codificata si compone di due parti: il codice operativo e uno o più operandi.

Ripristino di sistemi, dati a fronte di perdite o eventi dannosi. Le tecnologie più utilizzate per la realizzazione di memorie di massa sono: Dispositivi Magnetici (Hard Disk, ...) Dispositivi Ottici (CD, DVD, ...) Memorie Flash (SD card, ...)

Gerarchie di Memoria (1/2)

- Registri della CPU •Cache di primo, secondo e terzo livello •RAM •Dischi interni •Dischi esterni.

L’Architettura di un elaboratore in bit Quando un computer è basato su un’architettura a 16 bit, 32 bit, 64 bit, vuol dire che sono della stessa dimensione i seguenti componenti principali: BUS dati Registri della CPU Ogni cella della memoria centrale.

La Programmazione (1/4) Un linguaggio di programmazione è un linguaggio formale impiegato per descrivere procedure che devono essere eseguite da un calcolatore. Un programma è un procedimento di risoluzione di un problema espresso in un linguaggio di programmazione. Il linguaggio macchina (caratteristico di una CPU) è un linguaggio di programmazione costituito dalla codifica binaria di istruzioni che corrispondano alle operazioni elementari eseguibili dalla CPU stessa.

La Programmazione (2/4) Programmare in linguaggio macchina, ovvero descrivere un algoritmo con lunghe sequenze di bit, è noioso ed oneroso in termini di tempo e di energie. E’ stato, quindi, ideato il linguaggio assemblatore (assembler) che è un linguaggio di programmazione che usa dei codici mnemonici (ADD) per le istruzioni piuttosto che usare sequenze di bit. Esiste un particolare software chiamato assemblatore che riceve in input un programma scritto in linguaggio assemblatore e lo traduce in linguaggio macchina.

La Programmazione (3/4) L’idea dell’assemblatore è stata riutilizzata per realizzare i linguaggi di programmazione di alto livello. (Basic, Cobol, C, Fortran, Pascal, C++, Java, Lisp, Prolog, ...) I linguaggi di programmazione di alto livello rappresentano un livello intermedio tra i linguaggi

naturali/matematici e i linguaggi assemblator Hanno reso l’attività di programmazione relativamente più semplice e produttiva. I programmi scritti con un linguaggio di programmazione di alto livello devono essere preventivamente tradotti in linguaggio macchina per essere eseguiti da un calcolatore Compilatori Interpreti

La Programmazione (4/4) I linguaggi macchina, i linguaggi assemblatori e i linguaggi di programmazione di alto livello mettono a disposizione delle istruzioni per controllare la sequenza delle istruzioni.

Variabili e Uso della Memoria Centrale Nella Macchina di Von Neumann i dati di input e output di un’elaborazione DEVONO essere depositati in memoria centrale Quando si ragiona in termini di linguaggi di programmazione di alto livello è comodo gestire questi dati utilizzando il concetto di VARIABILE Una VARIABILE è un simbolo che ci permette di manipolare i dati in memoria senza la complicazione di ragionare in termini di indirizzi o locazioni. Una VARIABILE può essere considerata un contenitore nel quale conservare (e ritrovare) i dati che servono al nostro programma.

Esempio CPU Somma di due numeri:

  1. LOAD 3568 R
  2. LOAD 3547 R
  3. ADD R1 R2 R
  4. STORE R3 3568

Ricordiamo che...

  • Le istruzioni devono essere presen5 in RAM
  • I da5 di input devono essere presen5 in RAM
  • Gli operandi di una operazione devono essere prima le= dalla memoria e poi carica5 nei registri per poter essere processa
  • Il risultato di un’operazione viene depositato in un registro e poi deve essere scriAo in memoria RAM

GLI ALGORITMI Un algoritmo è una sequenza di istruzioni la cui esecuzione consente di realizzare un particolare trattamento dell’informazione o più in generale di risolvere uno specifico problema: •Calcolare la somma di due numeri •Calcolare la lunghezza dell’ipotenusa di un triangolo rettangolo •Risolvere una equazione di secondo grado Una ricetta di cucina •le istruzioni per montare un mobile. …

Il tipo base del vettore deve essere un tipo ordinato (su cui si possono usare gli operatori di relazione <, <=, >, >=) Algoritmo di Bubble Sort La caratteristica dominante dell’algoritmo è lo scambio di due elementi. Il metodo consiste nel confrontare coppie di elementi adiacenti ed effettuare uno scambio nel caso in cui gli elementi non siano in ordine, fino a che tutti gli elementi siano ordinati Si effettuano diverse scansioni degli elementi del vettore: ad ogni passo si confronta ogni elemento A[j] con l’elemento adiacente A[ j+1] e si effettua uno scambio nel caso in cui risulti A[ j+1] < A[ j ]. Inizialmente j deve variare tra 1...n-1; nel passo successivo tra 1...n-2; nell’ultimo passo tra 1..

Algoritmo di Bubble Sort Si può quindi introdurre un indice i che ad ogni passo definisca qual è l’ultimo valore di j. Se consideriamo il vettore in posizione verticale e gli elementi come delle bollicine in un contenitore d’acqua, con pesi diversi a seconda del valore degli elementi, ad ogni passo possiamo immaginare che salga a galla l’elemento leggero tra quelli considerati.

Algoritmo di Bubble Sort Itera per i che varia da n a 1 Itera per j che varia da 1 a i Se A[ j ] > A[ j + 1 ] Allora Scambia A[ j+1 ] e A[ j ]

Algoritmo di Selection Sort L’idea di base del Selection Sort è cercare di volta in volta il minimo del vettore per gli elementi ancora non ordinati e posizionare l’elemento trovato nella posizione immediatamente successiva all’ultimo elemento ordinato.

Il sistema operativo Il firmware è uno strato di microprogrammi scritti su memorie permanenti dai costruttori che agiscono direttamente sullo strato hardware. Un esempio di firmware è il programma di controllo di un lettore CD o la routine di boot in un elaboratore.

Sistema Operativo: introduzione “L’insieme dei programmi che rende l’elaboratore operativo ed usabile” Il Sistema Operativo opera direttamente al di sopra dell’hardware e del firmware Le funzionalità messe a disposizione dal Sistema Operativo sono in linea di massima: Gestione delle risorse disponibili Interpretazione ed esecuzione di comandi elementari Visualizzazione delle informazioni sul video Gestione della memoria centrale Organizzazione e gestione della memoria di massa Gestione multi-utente …

Sistema Operativo: Definizione e Obiettivi Definizione: Un Sistema Operativo è un programma che controlla l’esecuzione di programmi applicativi e agisce come interfaccia tra le applicazioni e l’hardware del calcolatore. Obiettivi : Semplicità : deve semplificare l’utilizzo della macchina da parte degli utenti. Astrazione : deve fornire una visione astratta delle risorse del calcolatore per i programmatori. Efficienza : deve utilizzare in modo efficiente le risorse del calcolatore.

Sistema Operativo (1/3) L’utente dell’elaboratore “vede” la macchina solo attraverso il Sistema Operativo Senza il Sistema Operativo l’utente sarebbe costretto ad interagire con la macchina direttamente gestendo le risorse a basso livello (anche usando sequenze di bit per esprimere dati e istruzioni) Con il Sistema Operativo l’utente interagisce con la macchina utilizzando delle parole chiave (comandi), i programmi e i dati (interi, reali, caratteri, stringhe, etc.)

Sistema Operativo (2/3) Il Sistema Operativo quindi traduce le richieste dell’utente in opportune sequenze di impulsi da sottoporre alla macchina fisica e viceversa. Sistema Operativo (3/3) E’ importante ricordare che qualsiasi richiesta, fatta dall’utente, viene esplicitata dal Sistema Operativo come accesso a memoria centrale, memoria di massa, I/O, etc.

CHE COSA E’ UN SISTEMA OPERATIVO? UN GESTORE DI RISORSE Un S.O. gestisce le risorse fisiche, consentendo : •la multiprogrammazione •la multiutenza Un S.O. consente, inoltre, la condivisione delle risorse fisiche attraverso : Il multiplexing del tempo: “fissa” dei turni di esecuzione (time-sharing) Il multiplexing dello spazio: “suddivide” le risorse hardware e ne assegna delle porzioni ai programmi UNA MACCHINA ESTESA/VIRTUALE Un S.O. virtualizza l’hardware sottostante: ne nasconde i dettagli alle applicazioni aggiunge servizi (connessioni di rete, sicurezza, ...) facilita all’utente l’uso del calcolatore virtualizza i dispositivi fisici (devices) esporta un insieme di servizi per i programmi di utente (Chiamate di Sistema).

Funzioni di un Sistema Operativo: Interprete dei Comandi L’Interprete dei Comandi consente, in generale, ad ogni utente di attivare i programmi

La tecnica della multielaborazione migliora l’affidabilità di un sistema nel suo complesso poiché, essendo i componenti duplicati, in caso di guasto di un’unità, l’elaborazione può proseguire sulle altre, anche se la potenzialità complessiva risulta ridotta.

Modalità di gestione Sistemi Time Sharing Sistemi Real Time Sistemi Interattivi

Time sharing Si definiscono Time Sharing quei sistemi che servono più utenti, dando loro l’impressione che tutte le risorse del sistema siano dedicate a ciascuno di essi Il tempo viene suddiviso in “quanti” di durata ‘T’ Se ‘N’ utenti richiedono una risorsa, un sistema time sharing dedica quella risorsa a turno, ad ognuno di essi, per un intervallo di tempo pari a ‘T’ Trascorso un “tempo di ciclo” della durata di (N*T), verrà nuovamente servito il primo degli ‘N’ utenti.

Real Time (1) Si definiscono real-time quelle applicazioni per le quali è necessario che l’elaboratore fornisca i risultati in un intervallo di tempo determinato Si definisce tempo di risposta del sistema l’intervallo di tempo compreso tra l’istante in cui comincia l’elaborazione e quello in cui sono disponibili i risultati. Le applicazioni real-time si distinguono in funzione delle caratteristiche di reazione del processo.

Real Time (2) Applicazioni per il Controllo Processi Il tempo di risposta ‘t’ non deve superare il valore assegnato ‘T’ Esempi: Controllo della traiettoria di un missile Controllo di altiforni (acciaierie) Controllo di processi chimici Controllo di sistemi elettrici Controllo di sistemi meccanici.

Real Time (3) Applicazioni di tipo Gestionale Assegnato un tempo medio ‘T’ è tollerabile che esso possa essere superato dall’effettivo tempo di risposta. Esempi: Prenotazione posti (aerei, treni, teatri, ...) Certificazione Anagrafica Gestione Conti Correnti ............

Interattività

Si definisce interattivo (o conversazionale) un sistema che prevede un colloquio continuo, in tempo reale, tra utente e sistema di elaborazione. L’utente può interagire con il sistema fornendo nuovi dati, attivando o addirittura modificando altri programmi Esempi: Didattica a distanza Telelavoro Progettazione

Classificazione dei Sistemi Operativi I Sistemi Operativi vengono anche classificati in base al numero degli utenti che possono essere serviti contemporaneamente: Sistema Operativo Mono-Utente – Un solo utente alla volta può utilizzare il sistema (es. MS-DOS, Windows, ecc...) Sistema Operativo Multi-Utente – più utenti contemporaneamente possono interagire col sistema e ciascun utente ha l’impressione di essere l’unico e quindi di avere una macchina dedicata (es. UNIX, Linux, Windows Server, Mac OS X, ecc...) I sistemi su menzionati sono Multi-Tasking.

Sottosistemi di un Sistema Operativo Gestione Processi Gestione Memoria Gestione Periferiche di I/O Gestione File System.

Sottosistemi di un Sistema Operativo: Gestione dei Processi Il Gestore dei Processi è responsabile dell’esecuzione dei programmi da parte dell’unità di elaborazione. Il Gestore dei Processi deve garantire, nel caso dei sistemi multi- utente, l’esecuzione “quasi contemporanea” di molti processi L’esecuzione dei processi detta “quasi contemporanea” significa che è il Gestore dei Processi ad assegnare a turno ai processi l’accesso e l’uso dell’unità di elaborazione (time sharing) Inoltre, il Gestore dei Processi è responsabile di reagire agli eventi esterni che provengono dalle periferiche Il Gestore dei Processi fornisce agli strati superiori una “macchina virtuale” in cui ciascun programma opera come se fosse l’unico ad essere eseguito in quel momento sulla macchina (ASTRAZIONE).

Esecuzione di un Programma Quando si richiede l’esecuzione di un programma: Viene cercato il programma sul File System. Viene allocata memoria per gestire i dati del programma in esecuzione (stato). Viene creato un Processo costituito dal codice del programma caricato in memoria e dallo stato. Viene gestito il ciclo di vita del Processo.