Scarica Architettura dei Computer: CPU, RAM, Memoria Secondaria e File System e più Appunti in PDF di Elementi di Informatica solo su Docsity!
APPUNTI DI INFORMATICA:
HARDWARE E SOFTWARE
Prof. G.Pozzato e Prof. G.Sacco
L’ELABORATORE(HARDWARE)
TIPI DI CALCOLATORI
- supercomputer
- mainframe e server
- minicomputer
- terminali Personal computer:
- desktop e workstation: pensato per rimanere fisso e non essere portato in giro
- notebook/laptop/portatile: con tastiera e tutto ma sufficientemente leggero per essere portato in giro. Ha meno flessibilità del desktop e può fare meno cose dello smartphone ad esempio.
- tablet: tavoletta tipicamente senza tastiera né altro
- smartphone: ormai è un computer a tutti gli effetti (passi enormi nella miniaturizzazione) L’HARDWARE Funzioni di base dell’elaboratore:
- elaborare l’informazione usando il processore(CPU)
- memorizzare l’informazione usando la memoria principale(RAM) o secondaria
- eseguire l’input/output dell’informazione usando i dispositivi input/output (mouse, tastiera, sensori,ecc … ce ne sono vari). L’input serve a immettere dei dati e l’output serve e vedere il risultato dell’elaborazione. L’architettura che viene ancora oggi usata è la macchina di Von Neumann: si caratterizza per avere CPU, RAM, dispositivi input/output e memoria secondaria. Si tratta di un’architettura non parallela, con più macchine o più processori nel CPU. Neanche Google ad esempio usa una sola macchina. Questo permette una serie di vantaggi a livello di sistema e di crescita. Quella di Von Neumann non è l’unica architettura usata. Esempio di scheda madre relativamente aggiornata: Funzionamento ad alto livello:
- la RAM è appunto una memoria ad accesso casuale, questo perché 1) si può accedere direttamente alle varie celle, una volta noto il loro indirizzo; 2)il tempo necessario per accedere ad una cella è lo stesso, indipendentemente dalla posizione della cella nella sequenza; 3) il termine random indica proprio il fatto che non vi sono differenze nell’accesso alle varie celle della memoria
- è veloce: il tempo di lettura/scrittura di una cella è compreso tra 5 e 30 nanosecondi (10⁻⁹ s)
- è volatile: formata da componenti elettronici, se viene tolta l'alimentazione anche per un breve periodo di tempo (frazioni di secondo) tutto ciò che contiene viene perso(e la macchina deve ripartire)
- è relativamente costosa La ROM (read-only memory):
- non può essere modificata: sola lettura
- non è volatile
- veloce quasi quanto la RAM
- solitamente viene usata per memorizzare programmi e dati necessari all’avvio dell'elaboratore (programmi di bootstrap/configurazione del sistema)
- non viene usata per gestire dei dati ma delle configurazioni iniziali Memoria cache ---> ha le stesse proprietà della RAM, ma:
- più veloce (ma più piccola e costosa)
- localizzata tra CPU e RAM
- memorizza i dati di uso più frequente evitando alla CPU di doverli recuperare tutte le volte della RAM
- influisce pesantemente sulle prestazioni e sul costo della CPU
- dimensioni tipiche sono 512 KB, 1 MB, 2 MB La CPU (central processing unit):
- esegue i programmi scritti in LM (linguaggio macchina)
- tutti i programmi, anche Word, Excel, ecc… internamente sono codificati in LM
- I programmi sono sequenze di istruzioni in LM
- le istruzioni sono comandi elementari, come somma di due numeri, leggi della memoria, scrivi in memoria, scrivi verso il dispositivo output, confronta due numeri...
- ogni tipo di processore ha il suo linguaggio macchina, cioè è in grado di eseguire un numero limitato di istruzioni. Le istruzioni si dividono in: aritmetiche/logiche; di salto (il programma di solito viene svolto in maniera sequenziale, ma c’è la possibilità di saltare qualche parte); di lettura/scrittura in memoria; di lettura/scrittura verso dispositivi di input/output
- combinando in modo diverso sequenze anche molto lunghe di istruzioni (cioè i programmi) si possono fare svolgere al computer compiti completamente diversi
- è possibile avere più CPU in uno stesso elaboratore. In questo modo l’elaboratore può eseguire più programmi allo stesso tempo (uno per ogni CPU): in questo caso si tratta di un elaboratore multiprocessore; si parla invece di microprocessore multicore quando una CPU complessiva ha delle sotto-CPU(dual-core/quad-core)
- al suo interno è formata da una control unit, da un unità aritmetico-logica e da registri che servono a contenere i dati che devono essere elaborati attraverso l’unità aritmetico-logica.
Control unit (CU): è la parte più importante del processore. Esegue le istruzioni dei programmi, coordina le attività del processore, controlla il flusso delle istruzioni tra il processore e la memoria. Non ha il compito di controllare il risultato delle istruzioni. Svolge la sua attività in maniera ciclica, attraverso il ciclo di fetch-decode-execute--->fetch: preleva dalla memoria principale la prossima istruzione da eseguire; decode: decodifica l’istruzione e preleva gli operandi specificati; execute: esegue l’istruzione utilizzando la componente opportuna, memorizza i risultati e ricomincia. Quest'ultimo passo comporta l’invio di comandi alle opportune unità relative:
- calcoli---> unità aritmetico-logica
- lettura/scrittura dati---> memoria
- acquisizione/stampa---> dispositivi di I/O La frequenza con cui è eseguito il ciclo di fetch-decode-execute è scandita dal clock (orologio interno):ad ogni impulso di clock la CU esegue un ciclo. La velocità di elaborazione di una CU dipende dalla frequenza del suo clock. Es: 2.8GHz=2 miliardi e 800 milioni di cicli al secondo. Unità aritmetico-logica : esegue le operazioni di tipo aritmetico (ad es. somme) e logico (ad es. confronti); preleva gli operandi dai registri e deposita il risultato delle operazioni in uno o più registri. Registri : piccole celle di memoria con tempi di accesso molto più bassi rispetto alla memoria primaria. Mantengono le informazioni necessarie per eseguire l’istruzione corrente. Hanno dimensione di 16,32 o 64 bit (da cui CPU a 16,32 o 64 bit). Sono in numero molto limitato (10,20,64 o
- visto che sono all’interno della CPU. Si dividono in registri:
- generali: sono in numero ridotto:8,16,32,64,128...in funzione dell’architettura. Sono usati come celle di memoria temporanea; contengono gli operandi e i risultati delle istruzioni in esecuzione. In alcune architetture, alcuni registri hanno funzioni privilegiate; ad es. l’accumulatore in genere contiene il risultato delle operazioni
- speciali: PC e IR PC (program counter): è un registro speciale, che contiene l’indirizzo in memoria principale della prossima istruzione da eseguire. Quando un programma viene avviato, l’indirizzo della prima istruzione viene caricato nel Program Counter. All’esecuzione di un’istruzione, il PC viene modificato per contenere l’indirizzo della prossima istruzione da eseguire; generalmente l'esecuzione è sequenziale, ma non necessariamente; esistono infatti dei modi per saltare delle parti. IR (Instruction register): è un registro speciale che contiene l’istruzione attualmente in esecuzione. La CU legge l’istruzione contenuta in IR e la esegue Esempio di ciclo fetch-decode-execute---> vediamo come le componenti della CPU interagiscono nell’esecuzione di un programma composto da tre istruzioni esemplificative:
- ADD 48,4, che somma i numeri 48 (cioè il codice ASCII di ‘0’) e 4 (per ricavare il codice ASCII di ‘4’)
- JUMP 1, che “salta” all’indirizzo 1
- La Control Unit decodifica l’istruzione ADD 48,4…
- … e dato che si tratta di un’operazione aritmetica, da comando all’unità aritmetico-logica di eseguire l’istruzione ADD 48.
- L’unità aritmetico-logica memorizza il risultato nel registro generico dell’Accumulatore Memoria Secondaria :
- è utilizzata perchè la RAM è poco capiente, costosa e volatile
- è capiente, relativamente poco costosa, non volatile, lenta
- la CPU può eseguire ed elaborare esclusivamente programmi e dati che risiedono nella memoria principale. Siccome i programmi e i dati risiedono nella memoria secondaria, devono essere copiati in quella principale. Quando si esegue un programma, il sistema operativo lo copia da memoria secondaria in RAM, attraverso il loading/caricamento
- è composta da supporti di memorizzazione (componente fisico in cui vengono immagazzinati i dati; es. DVD), e dispositivi di memorizzazione (leggono/scrivono dati dal/sul supporto di memorizzazione; es. lettore DVD) Tecnologie diverse--->piccole dimensioni: Memoria Magnetica:
- sfrutta il fenomeno fisico della polarità
- sul supporto sono presenti particelle magnetiche
- la testina di lettura/scrittura cambia/rileva la polarità delle particelle (stessa polarità:0; diversa polarità:1)
- usata per alcuni hard disk, floppy disk e nastri Memoria Ottica:
- sfrutta la riflessione della luce di un laser
- sul supporto sono presenti delle minuscole scanalature (pit) che formano zone chiare (luce riflessa) e zone scure (luce non riflessa) ---> chiaro/scuro o scuro/chiaro: 1; chiaro/chiaro o scuro/scuro: 0
- tecnica utilizzata nei Compact Disk e nei DVD Memoria flash o allo stato solido:
- costituita da chip simili a quelli della RAM ma in grado di registrare in modo permanente
- tempo di accesso ridotto
- leggera e facilmente trasportabile
- usata per macchine fotografiche digitali, lettori MP3, smartphone, penne USB, ma anche come sostitutivi degli hard disk magnetici (sia per via della velocità e sia per il fatto che l'assorbimento di corrente è decisamente inferiore. Velocità e scarsi consumi sono dovuti al fatto che non esiste nulla che si muove, al contrario dei dischi magnetici, ottici ecc…) Le due modalità possibili per accedere alla memoria secondaria sono:
- accesso diretto o random, cioè si accede a qualunque punto del supporto direttamente
- accesso sequenziale, cioè si accede a un punto solo dopo aver letto o scritto fino a quel punto. Es: Cd audio vs. musicassette Quanto tempo occorre per leggere informazioni da un supporto? Questo dipende da
- velocità di trasferimento, cioè la velocità con cui i dati vengono effettivamente trasferiti in ram
- tempo di accesso, cioè tempo impiegato per iniziare a leggere i dati
- In un disco entrambi dipendono dalla velocità di rotazione (numero di rotazioni per minuto)
I dischi ottici :
- lettura scrittura laser
- buona capacità di memorizzazione
- economici
- evitano la trasmissione di virus (se già non li contengono)
- affidabili e duraturi
- buona velocità di trasferimento Vi sono diverse categorie: CD--->simili ai CD musicali:
- capacità 660 MB
- CD-ROM: solo leggibili
- CD-R: scrivibili una sola volta(R=Recordable)
- CD-RW: scrivibili più volte (circa 1000) (RW=ReWritable) DVD
- capacità 4.7 GB (fino a 17 GB)
- DVD-ROM, DVD-R, DVD-RW, DVD+R, DVD+RW) Blu-ray Disc(BD)
- capacità fino a 54GB
- BD-ROM (sola lettura), BD-R (scrivibile solo una volta), BD-RE(riscrivibili) Durata dei supporti
ROM:50-300 anni
R:20-250 anni
RW:25-100 anni vero problema: obsolescenza tecnologica Backup: copia di tutti o di parte dei dati/file su altri supporti (ad es. su CD, DVD, hard disk esterni, siti web). Se i dati/file vengono spostati e non copiati, non si è effettuato il backup, e i dati/file sono comunque a rischio. Si tratta di un’operazione costosa in termini di tempo e spazio, ma è necessaria. La conservazione avviene in luoghi fisicamente distanti. Le capacità di un computer possono essere estese inserendo apposite schede di espansione su connettori presenti sulla scheda madre chiamati slot di espansione. Es: - schede grafiche - schede audio - modem/fax - schede di rete - schede di acquisizione video Comunicazione con i dispositivi I/O---> i dispositivi I/O sono le periferiche dell’elaboratore, e sono collegate ad esso attraverso le porte, cioè delle prese. Le porte, all’interno del computer, sono presenti sulla scheda madre o sulle schede di espansione. Esistono vari tipi di porte, che differiscono per l’aspetto fisico, per le caratteristiche elettriche/ottiche, velocità, e più in generale per il protocollo (ad es. il formato dei dati scambiati sulla porta). In un PC troviamo questi tipi di porte: VGA o HDMI (per il monitor); USB (per varie periferiche, fino a 127 in serie); Ethernet(RJ45) Dispositivi I/O ---> servono a comunicare e interagire con l’elaboratore; non necessariamente con un essere umano. Dispositivi input: - tastiera - dispositivi di puntamento - microfono - scanner - fax Dispositivi output: - stampanti - videoterminali - casse - plotter - proiettori Cosa collega i componenti tra loro? Il bus: linea di comunicazione per la trasmissione di informazioni tra i vari componenti del sistema. Fisicamente, è un insieme di collegamenti in rame. Tutti i componenti del sistema sono collegati al bus. Il bus di sistema, che collega la CPU ad altri dispositivi del computer---> il bus locale è un'evoluzione del bus di sistema, per il collegamento veloce tra CPU, memoria e periferiche veloci (es. riprese video, schede video che mandando il segnale al monitor). Si tratta di un metodo flessibile: è facile aggiungere componenti.
SOFTWARE E SISTEMA OPERATIVO
L’hardware da solo è soltanto un insieme di ferro, plastica e silicio e non è sufficiente per il funzionamento dell’elaboratore. L’utilizzo diretto dell’hardware è complicato:
- lo traduce per la macchina fisica
- eseguito il comando, fornisce un riscontro all’utente e si pone in attesa di un nuovo comando Struttura del s.o.: a cipolla---> ogni livello astrae il livello inferiore, nascondendone la complessità e fornendo servizi al livello superiore. In questo modo si può usare il computer senza conoscere i dettagli dei dispositivi elettronici. Funzioni svolte dal sistema operativo:
- accensione e configurazione della macchina (bootstrap)
- gestione del processore
- gestione della memoria (principale e virtuale)
- linguaggio ad alto livello per l’interazione con l’utente
- gestione e accesso alle informazioni su memoria secondaria (file system)
- gestione e uso ottimale delle risorse di input/output (dischi, stampanti, …)
- supporto per la comunicazione tra elaboratori
- supporto per i programmi applicativi (installazione, accesso alle risorse di sistema)
- ambienti di programmazione (ad es. Java, C++, Basic, COBOL) 1. Avvio dell’elaboratore= bootstrap primo problema: la CPU esegue esclusivamente programmi in memoria principale, la quale è volatile, cioè è vuota quando si accende il computer--->come fare? prima soluzione: mettere i programmi in memoria secondaria secondo problema: per caricare i programmi da memoria secondaria usiamo il file system (cioè il sistema operativo), ma esso risiede in RAM, che è volatile, cioè vuota quando si accende il computer- --> come fare? seconda soluzione: usiamo un piccolo programma (BIOS), molto semplice, che ha il compito di caricare la prima parte dell’s.o. dalla memoria secondaria terzo problema: la CPU esegue esclusivamente programmi in memoria principale la quale è volatile ---> come fare? terza soluzione: memorizziamo il BIOS in una parte della memoria principale non volatile: la ROM Dubbio: non possiamo direttamente memorizzare il s.o. in ROM? no, perchè la ROM è di sola lettura: ha senso memorizzarvi programmi/dati che non è necessario cambiare. Applicativi e.s.o. devono poter essere variati e aggiornati. Riassumendo… bootstrap: all’accensione della macchina, un programma (BIOS) in ROM cerca sulla memoria secondaria il s.o. e ne carica una parte sulla RAM. Questa ricerca avviene secondo il seguente ordine tipico:
- floppy disk
- CD/DVD
- Hard Disk
Questo ordine è utile per installare un s.o. o per live cd. In seguito, viene caricata la prima parte del s.o., la quale comprende (in generale):
- i programmi per gestire processi e CPU
- i programmi per gestire la memoria
- i programmi per gestire periferiche e I/O
- i programmi per gestire il File System
- il programma che crea l'interfaccia (grafica o testuale) utente Parte dei programmi del s.o. devono essere mantenuti sempre in RAM per essere sempre pronti per l’esecuzione---> una porzione della RAM è riservata a programmi e dati del s.o. All’avvio, vengono identificati tutti i dispositivi di memoria secondaria e tutte le periferiche e vengono avviati i relativi programmi di gestione (driver); alcuni dei sistemi verificano anche lo stato delle risorse hardware, per esempio lo stato dei dischi (presenza di errori nel file system?)
- Gestione del processore : multitasking---> cioè è possibile eseguire più programmi allo stesso tempo (ad es. scaricare un file mentre si scrive un documento). Problema: spesso gli elaboratori hanno un'unica CPU. Come possono essere eseguiti più programmi contemporaneamente? Soluzione: il s.o. alterna programmi assegnando la CPU a turno; questo significa che
- in ogni istante un solo programma è eseguito dalla CPU
- se l’alternanza è frequente, si ha l'impressione che i programmi vengano eseguiti contemporaneamente Problema: cosa succede se un processo effettua un’istruzione di I/O? La CPU rimarrebbe inattiva fino a che il dispositivo non ha terminato---> inefficienza Soluzione: multitasking---> il S.O. assegna la CPU a un altro processo e la restituisce al primo quando l’I/O è terminato. Un processo può trovarsi in uno dei tre stati:
- in esecuzione, cioè è in esecuzione nella CPU (max un processo in esecuzione per ogni CPU)
- in attesa, cioè attende che un’operazione di I/O termini (o qualche altro evento esterno si verifichi)
- pronto, cioè può andare in esecuzione, ma la CPU è occupata ad eseguire un altro processo Il s.o. ha il compito di scegliere quale tra i processi pronti mandare in esecuzione in modo da usare l’elaboratore in modo efficiente (no sprechi) ed efficace (per es. con tempi di attesa limitati).
- Gestione della memoria Problema: come eseguire programmi e usare dati più grandi della memoria principale (memoria fisica)?
Dato che la RAM è molto più veloce dell’hard disk, aumentare la quantità di RAM può migliorare le prestazioni del computer, perché il s.o. dovrà fare ricorso meno frequentemente all’hard disk per implementare la memoria virtuale
- Interazione con l’utente Il sistema operativo risponde a delle funzioni che possono essere usate dalle applicazioni e dall’utente finale, il quale può interagire:
- testualmente: il sistema si predispone all’ascolto dell’utente che immette tramite tastiera un comando che viene eseguito dal sistema. Al termine del comando il sistema si predispone ad accettare un comando successivo. Richiede poca memoria principale; l’interfaccia è più rapida da usare per utenti più esperti.
- graficamente: basata su più finestre a ognuna della quali è associata un’applicazione; l'interazione avviene attraverso device di puntamento (point and click). La cosa importante è la tecnologia WYSIWYG (what you see is what you get). Richiede un monitor grafico e quello che viene presentato su di esso è esattamente uguale a quello che si otterrebbe stampando lo specifico documento. Questa è una differenza enorme rispetto alle interfacce precedenti. Vengono usati dei comandi in maniera astratta es. cancellare oggetto=> taglia (può essere applicato a diversi oggetti, non è un comando “specifico” per il singolo oggetto). Concetti principali sono: finestra, icona, menu, menu item, pop-up menu, button, toolbar.
- File system Parte dell’s.o. che si occupa di gestire e strutturare le informazioni memorizzate su supporti di memoria secondaria (ad es. su hard disk, CD, DVD...) Operazioni di base supportate dal file system sui dati memorizzati: lettura/scrittura, cancellazione, modifica,copia. I dati della memoria secondaria vengono strutturati e gestiti mediante l’organizzazione in file---> sono utilizzati per la memorizzazione di
- programmi (del sistema, dell’utente)
- dati Si può immaginare il disco fisso come un quaderno con tante pagine su cui l’utente scrive varie relazioni (file). Si noti che:
- quando si cancella un file, rimangono pagine “vuote”
- quando si modifica un file, la nuova versione potrebbe essere più corta o più lunga: se è più corta rimangono pagine vuote, se è più lunga, la modifica potrebbe essere impossibile causa file contiguo Come risolvere questi problemi? Soluzione: utilizzo di un indice---> le pagine vengono numerate e l’indice contiene, in ordine, i numeri delle pagine dei file. Vantaggi di questo: le pagine possono essere aggiunte, spostate, cancellate, senza sprechi di spazio e senza limitazioni di dimensione del file. L’indice è memorizzato sul dispositivo di memoria secondaria; contiene i nomi dei file e le pagine(cluster) associate; l’utente può conoscere i nomi dei file memorizzati leggendo l’indice. Il file system usa l’indice per:
- reperire i cluster che compongono i file trovare spazio libero per nuovi file