Scarica Introduzione all'informatica: Linguaggi, Sistemi Operativi e Algoritmi e più Dispense in PDF di Elementi di Informatica solo su Docsity!
INFORMATICA
TIPI DI CALCOLATORI
● Computer multiutente (multiuser) :
- supercomputer: i più potenti, basati su centinaia o migliaia di processori che lavorano in parallelo
- mainframe e server: svolgono funzioni centralizzate, ad essi sono collegati altri computer o terminali ● Personal computer :
- desktop e workstation: computer da scrivania
- notebook: computer portatili, di potenza confrontabile a quella di un desktop, in casa e ufficio possono essere inseriti in una docking station
- palmtop: computer tascabili, hanno tastiere di ridotte dimensioni
- PDA (Personal Digital Assistant): i più piccoli, privi di tastiera, molto semplici, ad esempio organizer
- **smartphone
- tablet ARCHITETTURA DEL CALCOLATORE** Sistema composto da un numero elevato di componenti, in cui per ogni funzione di base si possono prendere in considerazione i componenti in grado di svolgerla: - Elaborazione dati Processore (Central Processing Unit - CPU) - Memorizzazione dati Memoria principale (o RAM) Memoria secondaria (o di massa) - Trasferimento dati Dispositivi di input/output N.B. i dispositivi di memoria secondaria, insieme ai dispositivi di input/output, costituiscono le periferiche del calcolatore. IL CALCOLATORE: COMPONENTI PRINCIPALI In un computer possiamo distinguere quattro unità funzionali: **- processore o CPU
- memoria principale
- memoria secondaria
- dispositivi di input/output** Il processore e la memoria principale sono le due componenti che costituiscono l’unità centrale, in un PC si trovano sulla scheda madre ( motherboard ).
Com’è fatto un computer? ● I/O
- serve per comunicare con l’esterno
- include dispositivi di memoria secondaria (memoria non volatile), acceduti come dispositivi di I/O ● MEMORIA PRINCIPALE
- usata per memorizzare programmi e dati durante l’esecuzione (processo di stored program introdotto da Von Neumann) ● PROCESSORE
- è l’esecutore delle istruzioni appartenenti ad un’ISA
- ISA (Instruction Set Architecture) definisce quindi il linguaggio (povero) comprensibile per processore
- le istruzioni sono lette dalla memoria, modificano dati in memoria o agiscono sull’I/O
- decomponibile in Parte Controllo ⇢ mente e Parte Operativa ⇢ braccio ● VIDEO: unità di uscita (O) ● TASTIERA/MOUSE: unità di ingresso (I) ● SCATOLA: contiene
- ALIMENTATORE
- SCHEDA MADRE (o motherboard o mainboard) e BUS
- PROCESSORE
- MEMORIA VOLATILE (RAM)
- DISCHI (memoria stabile, I/O)
- LETTORI CD/DVD
- DISPOSITIVI DI I/O PER RETE (LAN/MODEM)
- DISPOSITIVI DI I/O USB (Universal Serial Bus) IL CALCOLATORE: LA MEMORIA PRINCIPALE Fornisce la capacità di “ memorizzare ” le informazioni, ed è costituita da una lunga sequenza di componenti elementari, ognuna delle quali può contenere un’unità di informazione (un bit ). Le componenti elementari sono aggregate tra di loro e formano delle strutture complesse dette PAROLE o CELLE DI MEMORIA. La memoria può essere vista come una sequenza di celle e, ciascuna cella è caratterizzata da un INDIRIZZO , gli indirizzi corrispondono all’ ordinamento delle parole nella sequenza e sono numeri interi (partono da 0).
IL PROCESSORE (CPU)
Il PROCESSORE è la componente dell’unità centrale che fornisce la capacità di elaborazione delle informazioni contenute nella memoria principale. Le CPU dei PC di oggi sono confezionate in piccole schede quadrate di circa 5cmx5cm (circuito integrato o chip, formato da migliaia di transistor) i cui connettori vengono inseriti in appositi spazi sulla motherboard. L’elaborazione avviene in accordo a sequenze di istruzioni ( istruzioni macchina ). Il ruolo del processore è quello di eseguire programmi in linguaggio macchina. Le principali componenti del processore sono:
**- Unità Aritmetico-Logica (ALU)
- Unità di Controllo (UC)
- I Registri** ➔ Generali ➔ Speciali L’UNITA’ ARITMETICO-LOGICA (ALU) L’ Unità Aritmetico-Logica (ALU), parte della CPU, è costituita da un insieme di circuiti in grado di svolgere le operazioni di tipo aritmetico e logico (somma di due numeri binari contenuti in due registri, deposito di un risultato in un registro, confronto tra due numeri…). La ALU legge i dati contenuti nei registri generali , esegue le operazioni e memorizza il risultato in uno dei registri generali. In alcuni elaboratori oltre alla ALU si può avere un processore specializzato per effettuare operazioni particolari, il coprocessore matematico. ESECUZIONE DI UN PROGRAMMA Un programma in esecuzione è codificato in binario ed è memorizzato nella memoria principale. Il processore estrae le istruzioni della memoria e le esegue. La memoria contiene almeno due tipi di informazioni:
- la sequenza di istruzioni che devono essere eseguite dal processore
- l’insieme di dati su cui tali istruzioni operano LINGUAGGIO MACCHINA: l’insieme di tutte le istruzioni macchina eseguibili dalla CPU (ISA)
IL RUOLO DELL’ASTRAZIONE
L’informatica si basa sul concetto di astrazione. L’ASTRAZIONE è una tecnica di semplificazione. Il termine astrazione si riferisce alla distinzione tra le proprietà esterne di un’entità e i dettagli della sua struttura interna. L’astrazione permette di ignorare i particolari interni di un congegno complesso e di usarlo come una singola unità. Per progettare o capire l'architettura di un sistema, oppure per programmare semplicemente un sistema, abbiamo bisogno di astrarre. ESEMPIO: se cerchiamo di capire come funziona una CPU, ci accorgiamo che la funzionalità della CPU è comprensibile se astraiamo e guardiamo solo alla sua interfaccia di programmazione: ISA (Instruction Set Architecture). Se scendiamo di livello, troviamo i fili e milioni di transistor e diventa impossibile comprenderne il funzionamento. In particolare, non si riesce a:
- capire come questo livello interpreta le istruzioni dell’ISA
- individuare i blocchi funzionali
- capire a cosa servono i blocchi funzionali stessi LIVELLI DI ASTRAZIONE In tutti i progetti di sistemi di hardware/software ritroviamo il concetto della strutturazione in livelli. Un utilizzatore accede al livello più esterno, ovvero l’interfaccia utente. Un programmatore è solitamente interessato:
- al livello n-esimo del sistema e al relativo linguaggio (vista più astratta che guarda al livello più alto);
- ai traduttori (compilatori o interpreti) che gli permettono di eseguire i programmi sui livelli sottostanti. Un architetto deve invece conoscere i vari livelli e le relazioni tra di essi. I livelli più bassi rilevano più informazioni. I livelli più alti attraggono omettendo dettagli: l’astrazione ci permette di affrontare la complessità. I livelli più alti virtualizzano , ovvero offrono una vista virtuale dei livelli inferiori. macchina virtuale o astratta: appare più potente e semplice da programmare della macchina sottostante
ESEGUIRE UNA SOMMA
Per eseguire la somma di due valori memorizzati nella memoria principale il processore deve eseguire i seguenti passi:
**1. Prendi dalla memoria il primo valore e mettilo in un registro
- Prendi dalla memoria il secondo valore e mettilo in altro registro
- Attiva l’ALU facendo eseguire l’addizione tra i valori dei due registri e metti il** **risultato in un altro registro
- Trasferisci il risultato in memoria
- Fine** Quindi oltre all’attività dell’ALU è necessario anche coordinare il trasferimento delle informazioni: questo è compito dell’ Unità di Controllo. L’UNITA’ DI CONTROLLO L’ Unità di Controllo ( UC ) si occupa di coordinare le diverse attività del processore. Il processore svolge la sua attività in modo ciclico: ad ogni ciclo corrisponde l’esecuzione di una istruzione macchina. Ad ogni ciclo le attività controllate e coordinate dalla UC sono: **- lettura della memoria principale della prossima istruzione da eseguire;
- decodifica dell’istruzione;
- esecuzione dell’istruzione. I REGISTRI** Il processore contiene un certo numero di registri (unità di memoria estremamente veloci ). Le dimensioni di un registro sono di pochi byte (2,4,8). I registri contengono delle informazioni di necessità immediata per il processore. Esistono due tipi di registri:
- speciali , utilizzati dalla UC per scopi particolari e
- registri di uso generale Alcuni registri speciali: - Program Counter: indirizzo della prossima istruzione - Instruction Register: istruzione corrente - Memory Address Register: indirizzo della locazione di memoria interessata alla lettura/scrittura - Memory Data Register: dato letto o da scrivere in una locazione di memoria Il processore esegue ad ogni ciclo un’istruzione prelevata dalla RAM, l’ indirizzo della parola da cui prelevare la prossima istruzione è mantenuto nel registro Program Counter (PC): la dimensione del PC deve essere uguale alla dimensione di un indirizzo di RAM. Il Registro delle Istruzioni (IR) contiene l'istruzione attualmente in esecuzione: la dimensione del RI deve essere uguale alla dimensione di una istruzione (solitamente una o due parole di memoria).
IL CICLO D’ESECUZIONE
UNA SEMPLICE ARCHITETTURA
● 16 registri generici numerati da 0000 a 1111 di 1 byte ● RAM di 256 celle, ciascuna formata da 1 byte ● Istruzioni macchina lunghe 2 byte:
- Op-code: specifica l’operazione da eseguire - Operando: argomenti dell’operazione (il numero e l’interpretazione degli operandi dipende dal tipo di operazione) Operandi e op-code sono codificati in binario
CLASSIFICAZIONE DEL SOFTWARE
IL CLOCK
La frequenza con cui vengono eseguiti i cicli di esecuzione è scandita da una componente detta clock. Ad ogni impulso di clock la UC esegue un ciclo di esecuzione di istruzioni di macchina. La velocità di elaborazione di un processore dipende dalla frequenza del suo clock. I processori attuali hanno valori di frequenza di clock che variano tra i 2.4GHz ai 3.6GHz (miliardi di impulsi al secondo). LA MEMORIA CACHE Per evitare che il processore debba eseguire frequentemente accessi in RAM è stato introdotto un livello intermedio di memoria tra i registri e la RAM: la memoria cache. La memoria cache ha dimensioni ridotte (qualche centinaio di KB) ed è più veloce della RAM Si distinguono due tipi di cache:
- Cache interna: realizzata all’interno dell’UC - Cache esterna: situata sulla scheda madre I DISPOSITIVI PERIFERICI I dispositivi periferici ( periferiche ) permettono di realizzare l’interazione tra l’uomo e la macchina. La loro funzione primaria è quella di consentire l’immissione dei dati all’interno dell’elaborazione ( input ), o l’uscita dei dati dell’elaboratore ( output ). Hanno limitata autonomia rispetto al processore centrale (sono gestiti, controllati e coordinati dal processore). Una caratteristica comune a tutti i dispositivi è quella di operare in modo asincrono rispetto al processore: consideriamo una tastiera che produce dei dati di input. Il processore non è in grado di prevedere e di controllare il momento in cui un dato di input sarà a disposizione; allo stesso modo, il processore non può prevedere il momento in cui un dispositivo in output avrà terminato di produrre i dati in uscita.
Sono pertanto necessarie delle forme di sincronizzazione tra i dispositivi e il processore. Un dispositivo di input deve avvertire il processore quando un dato di input è disponibile. Un dispositivo di output deve avvertire il processore quando ha terminato di produrre dati in uscita. Le operazioni di sincronizzazione delle attività sono fondamentali nell’interazione tra il processore e i dispositivi. I dispositivi che hanno terminato un’operazione inviano al processore un segnale, detto interrupt , per richiedere l’attenzione del processore stesso. Ad ogni ciclo di clock, l’unità di controllo, prima di iniziare l’esecuzione della prossima istruzione del programma in corso, verifica se è arrivato un segnale di interrupt da parte di qualche dispositivo. Se non c’è nessun segnale di interrupt, normalmente il processore prosegue con le sue operazioni. Altrimenti le sospende per eseguire quanto richiesto dal dispositivo che ha inviato l’interrupt. I vari dispositivi di input/output sono collegati al processore attraverso un bus (un fascio di collegamenti elettrici, solitamente in rame); per ognuno di essi viene inserito un componente hardware, il controller , che gestisce la comunicazione con il dispositivo. I DISPOSITIVI PERIFERICI: COMUNICAZIONE ● Controller: un dispositivo per gestire la comunicazione tra il processore e i dispositivi periferici:
- Controllori specifici per un particolare tipo di periferico;
- Controllori “general purpose” (USB). ● Porta: punto di connessione tra periferiche e computer. ● Direct memory access (DMA): i periferici in DMA accedono alla RAM senza dover passare dalla CPU. LA MEMORIA SECONDARIA La memoria principale non può essere troppo grande a causa del suo costo elevato. Non consente la memorizzazione permanente dei dati ( volatilità ). Pertanto, oltre alla memoria principale veloce, volatile, di dimensioni relativamente piccole, i computer hanno una memoria secondaria , più lenta e meno costosa, con capacità di memorizzazione maggiore ed in grado di memorizzare i dati in modo permanente. La memoria secondaria viene utilizzata per mantenere tutti i programmi e tutti i dati che possono essere utilizzati dal computer. La memoria secondaria viene anche detta memoria di massa. Il processore non può utilizzare direttamente la memoria di massa per l’elaborazione dei dati. Quando si vuole eseguire un programma, questo dovrà essere copiato dalla memoria di massa a quella principale ( caricamento ). La memoria secondaria deve avere capacità di memorizzazione permanente e quindi per la sua realizzazione si utilizzano tecnologie basate sul magnetismo ( dischi e nastri magnetici ), tecnologie basate sull’uso dei raggi laser ( dischi ottici ) o “ memorie a stato solido ”.
La suddivisione della superficie di un disco in tracce e settori viene detta formattazione. Il blocco è la minima unità indirizzabile in un disco magnetico e il suo indirizzo è dato da una coppia di numeri che rappresentano il numero della traccia e il numero del settore; se i piatti sono più di uno, serve un terzo per individuare la superficie. I dischi magnetici consentono l’ accesso diretto in quanto è possibile posizionare direttamente la testina su un qualunque blocco senza dover leggere quelli precedenti. Per effettuare un'operazione di lettura (scrittura) su un blocco è necessario che la testina raggiunga l’indirizzo desiderato (la testina è ferma ed è il disco che si muove). Il tempo di accesso alle informazioni sul disco è dato dalla somma di tre tempi dovuti a:
- spostamento della testina in senso radiale fino a raggiungere la traccia desiderata ( seek time );
- attesa che il blocco desiderato si trovi a passare sotto la testina; tale tempo dipende dalla velocità di rotazione del disco ( latency time );
- tempo di lettura vero e proprio dell’informazione. LA MEMORIA SECONDARIA: DISCHI OTTICI I dischi ottici sono basati sull’uso di un raggio laser per operazioni di lettura. Molte unità per dischi ottici consentono solamente operazioni di lettura poiché la scrittura è un’operazione complicata, che richiede delle modifiche fisiche del disco. Le dimensioni tipiche per i dischi ottici utilizzati oggi vanno dai 500 MB fino a uno o più GB. LA MEMORIA SECONDARIA: MEMORIA FLASH La memoria flash è una tipologia di memoria a stato solido , quindi non volatile. In una memoria flash le informazioni vengono registrate in transistor ad effetto di campo , transistor di una particolare tecnologia in grado di mantenere la carica elettrica a lungo. Ogni transistor costituisce una “cella di memoria” che conserva il valore di un bit. Le nuove flash utilizzano delle celle multilivello che permettono di registrare il valore di più bit attraverso un solo transistor. E’ usata frequentemente nelle fotocamere digitali , nei lettori di musica portatili, nei cellulari , nei pendrive (chiavette), nei palmari , nei moderni computer portatili e in molti altri dispositivi che richiedono un’elevata portabilità e una buona capacità di memoria per il salvataggio dei dati. GERARCHIA DI MEMORIE
LAN, MAN E WAN
Una LAN è l’interconnessione di apparecchiature di calcolo in area geografica limitata. Quando l’area geografica abbraccia una città si parla di MAN , quando riguarda un’area geografica più estesa (nazione o più nazioni) si parla di WAN. INTERNET Cos'è Internet?
- E’ una rete a commutazione di pacchetto costituita dall’interconnessione di reti eterogenee ed indipendenti, ognuna delle quali gestita, finanziata ed amministrata autonomamente.
- E’ attualmente in crescita per estensione (→mondiale), capillarità (→home), capacità (→Gigabit/sec).
- Offre un servizio di trasferimento gratuito e non affidabile. ➢ best effort = senza alcuna garanzia di integrità informativa e/o trasparenza temporale. STRUTTURA DI RETE Internet è la particolare inter-rete basata sui protocolli TCP/IP ad estensione mondiale gestita da appositi organi regolatori. Internet non è quindi una nuova rete ma un insieme di risorse e di convenzioni per interconnettere delle reti (che sono quindi viste da Internet come sotto-reti). Scopo di Internet è quindi consentire a hosts (postazioni) appartenenti a sotto-reti disomogenee (per tipologia, struttura fisica, modi di trasferimento e prestazioni) di comunicare tra loro.
TCP (Transmission Control Protocol) TCP svolge le funzioni di controllo errore, di controllo di flusso, di controllo di frequenza e di moltiplicazione delle connessioni su una singola socket. TCP opera in modalità connection oriented (streamed), utilizzando come identificazione dei punti di connessione le socket (=combinazione di indirizzo IP dell’host ed il numero di porta su cui avviene la comunicazione). LE PORTE DI PROCESSO IN TCP TCP è utilizzato da applicativi che richiedono la trasmissione affidabile dell’informazione: ● TELNET su porta 23 ● FTP (file transfer protocol) su porta 22 ● SMTP (simple mail transfer protocol) su porta 25 ● DNS su porta 53 ● HTTP su porta 80 ● POP su porta 110 TRASMISSIONE TCP SU ETHERNET
- L’applicazione apre una socket per trasmettere i dati al livello di trasporto.
- In trasmissione, TCP accetta un flusso di byte dal livello di applicazione, frammenta il flusso di byte in segmenti numerati e li consegna singolarmente al protocollo IP per la costruzione di datagrammi.
- In ricezione, TCP riordina i pacchetti in arrivo dall’IP (livello sottostante), elimina i duplicati, calcola il checksum per intero, esegue il controllo di flusso per regolare differenti velocità tra macchina mittente e destinatario, smista i segmenti ai processi secondo la porta di destinazione. ARCHITETTURA PROTOCOLLARE TCP/IP
UDP (User Datagram Protocol) Il protocollo UDP è connectionless , cioè non gestisce il riordinamento dei segmenti né la ritrasmissione di quelli persi; non vi è certezza dell’avvenuta ricezione da parte del destinatario dei dati spediti ma in compenso la trasmissione risulta più semplice e veloce. Questo protocollo viene utilizzato nei casi in cui la velocità di trasmissione sia più importante della sicurezza della trasmissione (es. in applicazioni real-time). L’UDP fornisce soltanto i servizi basilari del livello di trasporto :
- moltiplicazione delle connessioni, ottenuta attraverso il meccanismo delle porte
- verifica degli errori mediante una checksum inserita in un campo dell’intestazione del pacchetto L’UDP è un protocollo stateless , ovvero non tiene nota dello stato della connessione, dunque ha rispetto al TCP informazioni in meno da memorizzare TRASMISSIONE UDP
- Il pacchetto UDP viene incapsulato all’interno di un pacchetto IP.
- Giunto a destinazione il pacchetto viene inviato alla porta di destinazione indicata nell’intestazione UDP.
- Qualora la porta non fosse disponibile, viene inviato un pacchetto ICMP (Internet Control Message Protocol) all’host mittente con messaggio di “port unreachable”. E’ demandato al programmatore il compito di assicurare la corretta ricezione dei messaggi ( datagram ) nel caso essa sia considerata importante per l’applicazione. Mediante UDP, è anche possibile che molti client si mettano in ascolto di messaggi inviati (in broadcast) da un processo server. TCP E UDP ● TCP è un servizio di trasmissione affidabile (l’host ricevente manda un ACK entro un tempo prestabilito per ogni segmento ricevuto) orientato alla connessione (viene stabilita una sessione tra host). ● UDP è un servizio di trasmissione senza connessioni che non garantisce la trasmissione dei pacchetti. Viene utilizzato da applicazioni che non richiedono il riconoscimento della ricezione dei dati (Voice Over IP. INTERNET PROTOCOL (IP) E’ il principale responsabile dell’indirizzamento e del routing di pacchetti tra host o reti. IP è connectionless. Le funzioni principali del protocollo IP sono: ● in trasmissione
- incapsula i datagrammi i dati provenienti dallo strato di trasporto
- predispone l’opportuna intestazione (indirizzi src e dt, …)
- applica algoritmo di routing
- invia i dati verso l’opportuna interfaccia di rete
- non richiede conferma dell’avvenuta ricezione
DOMAIN NAME SYSTEM (DNS)
Il software implementato in Internet consente di utilizzare oltre alla notazione dotted anche un altro tipo di notazione (mnemonica): “151.100.8.18” = www.uniba.it E’ necessario che un opportuno software di rete traduca nomi in indirizzi e viceversa. Questa traduzione è attuata da un protocollo di alto livello implementato in un meccanismo noto come Domain Name System. In Internet i nomi sono organizzati gerarchicamente in Domini:
- I nomi sono costituiti da stringhe separate da “.”
- La parte più significativa è a destra ATTRIBUZIONE DEI NOMI L’insieme dei nomi è prima partizionato in un certo numero di sotto-insiemi dal Network Information Center (NIC) ; il compito di assegnare i nomi all’interno di un sotto-insieme è delegato ad un’autorità di livello inferiore e così via. Un nome è composto da una serie di sotto-nomi separati da un punto. Ogni punto separa un’autorità da quella che gli è gerarchicamente inferiore: matematica.uniba.it
TRADUZIONE DEI NOMI IN INDIRIZZI
DNS include un efficiente ed affidabile algoritmo distribuito per tradurre nomi in indirizzi. ● E’ distribuito in quanto è costituito da una molteplicità di servers che co-operano tra loro. ● E’ efficiente in quanto molti nomi possono essere tradotti localmente senza generare traffico in Internet. DNS è costituito da un certo numero di sistemi indipendenti e co-operanti chiamati name servers. La risoluzione di un indirizzo avviene in modo top-down, iniziando dalla radice dell’albero e procedendo lungo i servers di livello gerarchico inferiore. L’algoritmo appena descritto ha tre svantaggi:
- la gran parte delle richieste fa riferimento a nomi locali. Risalire ogni volta fino al root server è inefficiente;
- il root server è sottoposto ad un carico di elaborazione molto rilevante (anche se più calcolatori lavorano in parallelo per svolgere tale compito);
- un guasto del root server o di server di alto livello pregiudicherebbe il funzionamento dell’intero DNS. Per ovviare a questi problemi l’algoritmo è stato integrato con delle funzionalità dette di “ cache ”. Ogni server memorizza i nomi che è riuscito a risolvere insieme all’indirizzo del name server che ha operato la traduzione. Se gli viene richiesta di nuovo la stessa traduzione non ha bisogno di rivolgersi nuovamente al root server. Tale meccanismo funziona a tutti i livelli gerarchici. Ogni traduzione comprende l’indicazione di un TimeToLive (es. 3 giorni) allo scadere del quale l’associazione NOME-INDIRIZZO viene automaticamente cancellata. PROBLEMA E’ l’ espressione da valutare per ottenere un risultato finale. E’ un insieme finito di attività da compiere per ottenere un effetto desiderato.