INFORMATICA UMANISTICA B COMPUTER: HARDWARE E SOFTWARE [email protected] Computer Hardware Software Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche Software Componente del calcolatore costituita dai: Programmi di base per la gestione del sistema Programmi applicativi per l’uso del sistema (possono usare i programmi di base) PRIMA PARTE: HARDWARE Computer Hardware Software HARDWARE: IDEE CENTRALI CICLO DI ESECUZIONE ISTRUZIONI MEMORIA PRINCIPALE E MEMORIA SECONDARIA DI NUOVO LA MACCHINA DI TURING Dalla macchina di Turing alla architettura di von Neumann Un passo ulteriore, volendoci avvicinare al funzionamento di un vero computer, è costituito dalla ARCHITETTURA DI VON NEUMANN ARCHITETTURA DI VON NEUMANN CPU Preleva istruzione Esegue Memorizza risultato BUS I/O Memoria UNITA’ CENTRALE E PERIFERICHE Processore Memoria principale Unità centrale Stampante Periferiche Tasteria e monitor Periferiche di input/output Memoria secondaria Architettura dei computer Un computer deve: elaborare l’informazione usando il processore (Central Processing Unit CPU) memorizzare l’informazione usando la memoria principale (RAM) usando la memoria secondaria fare l’input/output dell’informazione usando i dispositivi di input/output LA CPU IN DETTAGLIO ARCHITETTURA DI VON NEUMANN: COMPONENTI DELLA CPU La CPU non è un unico componente ma è costituita da componenti diversi che svolgono compiti diversi Bus Interno REGISTRI Program Counter Registro di Stato Unità di controllo Registro Istruzioni … Unità aritmetico logica Registri Generali 8 o 16 Registro Indirizzi Memoria Registro Dati Memoria Registro di Controllo UNITA’ DI CONTROLLO Bus Interno REGISTRI Program Counter Registro di Stato Unità di controllo Registro Istruzioni … Unità aritmetico logica Registri Generali 8 o 16 Registro Indirizzi Memoria Registro Dati Memoria Registro di Controllo Unità di controllo L’unità di controllo è 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 COMPONENTI DELLA CPU: UNITA’ ARITMETICO-LOGICA Bus Interno REGISTRI Program Counter Registro di Stato Unità di controllo Registro Istruzioni … Unità aritmetico logica Registri Generali 8 o 16 Registro Indirizzi Memoria Registro Dati Memoria Registro di Controllo Unità aritmetico logica L’Unità aritmetico logica si occupa di eseguire le operazioni di tipo aritmetico/logico Somme, sottrazioni, …, confronti, … Preleva gli operandi delle operazioni dai Registri Generali Deposita il risultato delle operazioni nei Registri Generali Insieme all’unità di controllo collabora al completamento di un ciclo della macchina COMPONENTI DELLA CPU: REGISTRI Bus Interno REGISTRI Program Counter Registro di Stato Unità di controllo Registro Istruzioni … Unità aritmetico logica Registri Generali 8 o 16 Registro Indirizzi Memoria Registro Dati Memoria Registro di Controllo ARCHITETTURA DI VON NEUMANN: I BUS ARCHITETTURA DI VON NEUMANN: CLOCK Abbiamo visto che il processore svolga la sua attività in modo ciclico Ad ogni ciclo corrisponde l’esecuzione di un’operazione elementare (un’istruzione macchina) Il clock fornisce una cadenza temporale per l’esecuzione delle operazioni elementari La frequenza del clock indica il numero di operazioni elementari che vengono eseguite nell’unità di tempo IL CICLO DI ESECUZIONE ISTRUZIONI Il ciclo di esecuzione istruzioni sta al cuore del funzionamento di un computer Ad ogni ‘ticchettio’ del clock, la CPU: Preleva dalla memoria principale la “prossima” istruzione da eseguire (specificata dal PROGRAM COUNTER, PC) La mette nel REGISTRO ISTRUZIONI (IR) La DECODIFICA Preleva gli OPERANDI specificati nell’istruzione ESEGUE l’istruzione Ricomincia IL CICLO DI ESECUZIONE (SEMPLIFICATO!) CODICE PER I PROGRAMMI: Istruzioni macchina I programmi: sequenze di istruzioni elementari (somma due numeri, confronta due numeri, leggi/scrivi dalla memoria, ecc.) Per ogni tipo di processore è definito un insieme di istruzioni, chiamate istruzioni macchina Ognuna delle quali corrisponde ad un’operazione elementare Le operazione più complesse possono essere realizzate mediante sequenze di operazioni elementari Istruzioni macchina Le istruzioni possono avere formati diversi - per esempio: Codice istruzione oppure cosa fare Codice istruzione Argomento 1 Argomento 2 su cosa operare Argomento 1 Istruzioni macchina Per esempio: Codice istruzione Argomento 1 Argomento 2 ADD R1 R2 Operazione aritmetica di somma: prevede la somma del contenuto dei registri R1 e R2 e il caricamento del risultato nel registro R1 (Perché R1 non R2? Non c’è una ragione: la decisione è arbitraria) Istruzioni macchina Per esempio: 01000110 1111000 cosa fare 11110101 01110110 01010111 00001111 su cosa operare 11001001 Linguaggio macchina Il linguaggio in cui si scrivono queste istruzioni prende il nome di linguaggio macchina Una sequenza di tali istruzioni prende il nome di programma in linguaggio macchina Il ruolo del processore: Eseguire programmi in linguaggio macchina UNITA’ ARITMETICO-LOGICA E CIRCUITI LOGICI ALU E CIRCUITI LOGICI I CIRCUITI LOGICI sono la base dell’hardware di un calcolatore L’ Unita’ aritmetico / logica (ALU), e’ prevalentemente composta di circuiti di questo tipo Questi circuiti sono costituiti da un gran numero di componenti piu’ semplici CIRCUITI LOGICI E FUNZIONI Ogni circuito logico calcola una FUNZIONE od OPERAZIONE: +(2,4) = 6 Le operazioni piu’ semplice sono quelle BINARIE OPERAZIONI BINARIE Useremo il termine ‘OPERAZIONE BINARIA’ in modo generico per riferirsi ad ogni funzione che specifica un valore di OUTPUT 0 od 1 sulla base di 1 o piu’ valori di INPUT Queste operazioni binarie possono essere specificate da TABELLE Esempio piu’ noto di operazione binaria: OPERAZIONI LOGICHE L’ALGEBRA BOOLEANA Una forma molto semplice di LOGICA Che codifica le condizioni sotto le quali espressioni complesse come “A e B” o “non A” o “A o B” sono vere mediante TABELLE DI VERITA’ OPERAZIONI LOGICHE ELEMENTARI: AND, OR, NOT AND A B OR A AND B A B NOT A OR B A NOT A falso falso falso falso falso falso falso vero falso vero falso falso vero vero vero falso vero falso falso vero falso vero vero vero vero vero vero vero A B R A B R A R 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 CIRCUITI ELEMENTARI: AND, OR, NOT AND OR NOT A B R A B R A R 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 A A R B R B A R DALLE TABELLE DI VERITA’ AI CIRCUITI Tanti input quante sono le dimensioni della tabella Un solo output Un or all’output Tanti and quanti sono gli 1 della tabella Input degli and: 1 se diretto, 0 se negato A B A B A 0 0 0 B 0 1 1 1 0 1 1 1 0 R Architettura dei computer Un computer deve: elaborare l’informazione usando il processore (Central Processing Unit CPU) memorizzare l’informazione usando la memoria principale (RAM) usando la memoria secondaria fare l’input/output dell’informazione usando i dispositivi di input/output Architettura dei computer Un computer deve: elaborare l’informazione usando il processore (Central Processing Unit CPU) memorizzare l’informazione usando la memoria principale (RAM) usando la memoria secondaria fare l’input/output dell’informazione usando i dispositivi di input/output Componenti principali di un computer Processore Memoria principale Stampante Periferiche del calcolatore Tasteria e monitor Periferiche di input/output Unità centrale Memoria secondaria ORGANIZZAZIONE DELLA MEMORIA Processore Insieme al processore forma l’Unità Centrale di un elaboratore 0 1 2 3 4 5 Memoria principale Unità centrale Sequenza di celle – Ad ogni cella è associato un indirizzo (un numero progressivo a partire da 0) Conserva i programmi e i dati usati dal processore N Memoria principale (RAM) Alcune proprietà della memoria principale Veloce: per leggere/scrivere una cella ci vuole un tempo di accesso dell’ordine di poche decine di nanosecondi (millesimi di milionesimi di secondo = 10-9 sec.) Volatile: è fatta di componenti elettronici, togliendo l’alimentazione si perde tutto (Relativamente) costosa Memoria principale (RAM) Indirizzi Tutte le celle hanno la stessa dimensione: 8, 16, 32, o 64 bit Le operazioni che si eseguono sulla memoria sono operazioni di lettura e scrittura Una cella può contenere un dato o un’istruzione 0 1 2 3 4 5 N Contenuto 345 13.200.985 3.890 LOAD 3568 R1 LOAD 56 R1 ADD R1 R2 LA MEMORIA SECONDARIA Processore Memoria principale Stampante Periferiche del calcolatore Tasteria e monitor Periferiche di input/output Unità centrale Memoria secondaria Architettura dei computer Un computer deve: elaborare l’informazione usando il processore (Central Processing Unit CPU) memorizzare l’informazione usando la memoria principale (RAM) usando la memoria secondaria fare l’input/output dell’informazione usando i dispositivi di input/output Memoria secondaria La memoria principale non basta (è volatile, costosa) In grado di memorizzare i programmi e i dati in modo permanente È meno costosa che la memoria principale: le dimensioni della memoria secondaria sono di solito molto maggiori di quelle della memoria principale I supporti di memoria secondaria sono più lenti rispetto alla memoria principale (presenza di dispositivi meccanici) Non tutti i supporti di memoria secondaria permettono l’accesso diretto ai dati Alcuni permettono solo un accesso sequenziale (per esempio, nastri magnetici) LA DIVISIONE DEI RUOLI TRA MEMORIA PRINCIPALE E MEMORIA SECONDARIA I programmi e i dati risiedono nella memoria secondaria Processore Stampante Memoria principale Memoria secondaria LA DIVISIONE DEI RUOLI TRA MEMORIA PRINCIPALE E MEMORIA SECONDARIA I programmi e i dati risiedono nella memoria secondaria Per essere eseguiti (i programmi) e usati (i dati) vengono copiati nella memoria principale Processore Stampante Memoria principale Memoria secondaria LA DIVISIONE DEI RUOLI TRA MEMORIA PRINCIPALE E MEMORIA SECONDARIA I programmi e i dati risiedono nella memoria secondaria Per essere eseguiti (i programmi) e usati (i dati) vengono copiati nella memoria principale Il processore è in grado di eseguire le istruzioni di cui sono composti i programmi Processore Stampante Memoria principale Memoria secondaria Memoria secondaria La memoria secondaria deve avere capacità di memorizzazione permanente e quindi per la sua si utilizzano tecnologie basate: sul magnetismo (tecnologia magnetica) dischi magnetici (hard disk e floppy disk) nastri magnetici sull’uso dei raggi laser (tecnologia ottica) dischi ottici (CD-ROM, DVD) I dischi magnetici Hard disk: sono dei dischi che vengono utilizzati come supporto di memoria secondaria fisso all’interno del computer vari GB di memoria Floppy disk: sono supporti rimovibili Oggi sono comuni floppy disk da 3,5 pollici di diametro, capacità 1,44 MB La memoria magnetica Sfrutta il fenomeno fisico della polarizzazione Sul supporto ci sono delle particelle magnetiche I due diversi tipi di magnetizzazione (positiva e negativa) corrispondono alle unità elementari di informazione (0 e 1) La testina di lettura/scrittura cambia la polarizzazione I dischi magnetici I dischi magnetici: sono i supporti di memoria più diffusi Nel corso delle operazioni i dischi vengono mantenuti in rotazione a velocità costante e le informazioni vengono lette e scritte da testine del tutto simili a quelle utilizzate nelle cassette audio/video I dischi magnetici I dischi sono suddivisi in tracce concentriche e settori, ogni settore è una fetta di disco I settori suddividono ogni traccia in porzioni dette blocchi Traccia Testina Blocco Settore I dischi magnetici I dischi magnetici consentono l’accesso diretto È possibile posizionare direttamente la testina su un qualunque blocco (noto il numero della traccia e il numero del settore) Per effettuare un’operazione di lettura/scrittura la testina deve “raggiungere” il blocco desiderato Il disco gira; la testina sposta solo in senso radiale La memoria ottica Usa il raggio laser e sfrutta la riflessione della luce Il raggio laser viene riflesso in modo diverso da superfici diverse, e si può pensare di utilizzare delle superfici con dei piccolissimi forellini Ogni unità di superficie può essere forata o non forata L’informazione viene letta guardando la riflessione del raggio laser La memoria ottica 1 0 1 0 0 1 0 0 1 La memoria ottica 1 0 0 1 Aumenta la capacità memorizzazione byte Registri KB Mem. cache MB Mem. centrale GB Dischi magnetici e/o ottici >10 GB Nastri magnetici 100*picosecondi nanosecondi 10*nanosecondi microsecondo/ millisecondi 10*millisecondi Aumenta la velocità di accesso Architettura dei computer Un computer deve: elaborare l’informazione usando il processore (Central Processing Unit CPU) memorizzare l’informazione usando la memoria principale (RAM) usando la memoria secondaria fare l’input/output dell’informazione usando i dispositivi di input/output I dispositivi di input/output Input: Tastiera Mouse (e altri strumenti di puntamento) Scanner Microfono Macchine fotografia e telecamera digitale Lettori di codici a barre Output: Input/output: Touchscreen Modem Videoterminale Stampante Casse acustiche I dispositivi di input/output Operano in modo asincrono rispetto al processore (ne sono “schiavi”) Si parla di gestione master-slave: è il processore che deve coordinare le attività di tutti i dispositivi (Input) Il processore non è in grado di prevedere e di controllare il momento in cui un dato di input sarà a disposizione (Output) Il processore non può prevedere il momento in cui un dispositivo in output avrà terminato di produrre i dati in uscita I dispositivi di input/output 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 Al termine di ogni operazione i dispositivi inviano al processore un segnale, detto interrupt, che indica che il dispositivo ha bisogno di attenzione REALIZZAZIONE FISICA DELL’ARCHITETTURA DI VON NEUMANN Nei computer odierni, le funzioni logiche dell’unita’ centrale sono svolte da un MICROPROCESSORE Il microprocessore è il vero cuore del computer MICROPROCESSORI MODERNI MICROPROCESSORE E PIASTRA MADRE Il microprocessore è incastonato nella piastra madre La piastra madre raccoglie in maniera efficiente e compatta altre componenti fondamentali di ogni computer, come la memoria, le porte di comunicazione, ecc. La struttura interna della piastra madre Microprocessore e piastra madre La memoria RAM è una memoria di lavoro, volatile: il suo contenuto sparisce quando si spegne il computer La memoria ROM è una memoria non volatile, che di norma non viene modificata dall’utente La memoria ROM contiene di norma il BIOS (Basic Input Output System): una serie di informazioni di base delle quali il sistema ha bisogno per funzionare HARDWARE: RIASSUNTO DELLE IDEE PRINCIPALI Architettura di von Neumann: Divisione in componenti collegate da bus Ciclo di esecuzione istruzioni Divisione della memoria in diversi livelli Funzionamento asincrono dell’input/output Realizzazione fisica dell’architettura di von Neumann: Piastra madre Memorie volatili e non volatili APPLICAZIONE PRATICA CARATTERISTICHE DI UN COMPUTER (2) Computer Hardware Software CHE COSA IL SOFTWARE FA PER VOI TRE TIPI DI SOFTWARE Software APPLICATIVO: programmi che permettono di svolgere funzioni VIDEOGIOCHI, WORD PROCESSING, DATABASE, POSTA ELETTRONICA PROGRAMMI UTENTE veri e propri Software DI SISTEMA: controlla l’hardware, gestisce l’interfaccia con utente, coordina le applicazioni SISTEMA OPERATIVO, INTERFACCIA RETE IL SOFTWARE DI SISTEMA Una programmazione diretta della macchina hardware da parte degli utenti creerebbe delle serie difficoltà LOAD 32 R2 IL SOFTWARE DI SISTEMA ADD R1 84 Una programmazione diretta della macchina hardware da parte degli utenti creerebbe delle serie difficoltà L’utente dovrebbe conoscere l’organizzazione fisica dell’elaboratore e il suo linguaggio macchina IL SOFTWARE DI SISTEMA Una programmazione diretta della macchina hardware da parte degli utenti creerebbe delle serie difficoltà L’utente dovrebbe conoscere l’organizzazione fisica dell’elaboratore e il suo linguaggio macchina Ogni programma dovrebbe essere scritto utilizzando delle sequenze di bit ed ogni piccola differenza hardware comporterebbe una riscrittura del programma stesso IL SOFTWARE DI SISTEMA È necessario fornire un meccanismo per astrarre dall’organizzazione fisica della macchina L’utente deve: usare nello stesso modo (o comunque in un modo molto simile) macchine diverse dal punto di vista hardware avere un semplice linguaggio di interazione con la macchina avere un insieme di programmi applicativi per svolgere compiti diversi IL COMPUTER VIRTUALE Il SOFTWARE DI SISTEMA opera un’ASTRAZIONE mettendo a disposizione dell’utente (programmatore) un set di operazioni PIU’ RICCO di quello definito dall’hardware (o dai livelli di software di sistema inferiori) Facendo cio’ realizza una MACCHINA VIRTUALE che non esiste fisicamente Quest’operazione di astrazione puo’ essere ripetuta piu’ volte ESEMPI DI ISTRUZIONI ‘VIRTUALI’ STAMPA CARATTERE A Eseguire questa istruzione richiede mettere carattere A in un’area speciale (‘print buffer’), inviare un segnale alla stampante che c’e’ dell’input, aspettare che la stampante abbia finito e controllare che tutto abbia funzionato OK APRI DOCUMENTO B Un `documento’ é semplicemente una lista di blocchi su tracce possibilmente diverese del disco SISTEMA OPERATIVO Il sistema operativo e’ il software di sistema che gestisce ed interagisce direttamente con il computer, presentando a tutti gli altri tipi di software un’interfaccia che astrae dalle caratteristiche dell’hardware specifico. Esempi: Windows XP, Unix (Linux, Sistem X Apple), etc. Funzioni principali del sistema operativo Avvio del computer Gestione del processore e dei programmi in esecuzione (detti processi) Gestione della memoria principale Gestione della memoria virtuale Gestione della memoria secondaria Gestione dei dispositivi di input/output Interazione con l’utente LA STRUTTURA A CIPOLLA DEL SISTEMA OPERATIVO Utente 0111000101 1101010100 Hardware 0011110 Avvio Gestione: i processi, la memoria, i disp. di input/output Interfaccia utente Funzioni principali del sistema operativo Avvio del computer Gestione del processore e dei programmi in esecuzione (detti processi) Gestione della memoria principale Gestione della memoria virtuale Gestione della memoria secondaria Gestione dei dispositivi di input/output Interazione con l’utente Esecuzione dei programmi Quando si scrive un comando (oppure si clicca sull’icona di un programma), il sistema operativo: Cerca il programma corrispondente sulla memoria secondaria Copia il programma in memoria principale … Processore Stampante Memoria principale Memoria secondaria Esecuzione dei programmi Quando si scrive un comando (oppure si clicca sull’icona di un programma), il sistema operativo: Cerca il programma corrispondente sulla memoria secondaria Copia il programma in memoria principale Imposta il registro Program Counter con l’indirizzo in memoria principale della prima istruzione del programma Sistemi mono-utente, monoprogrammati Un solo utente può eseguire un solo programma alla volta È forzato a “sequenzializzare” i programmi Il programma viene lanciato, eseguito e quindi terminato Ma il processore viene sfruttato al meglio? Sistemi mono-utente, monoprogrammati No, il processore non viene sfruttato al meglio: si spreca molto tempo Il processore è molto più veloce dei supporti di memoria secondaria e delle altre periferiche Passa la maggior parte del suo tempo in attesa Durante l’attesa si dice che il processore è un uno stato inattivo (idle) Esecuzione sequenziale Supponiamo che il nostro sistema sia un bar in cui il barista serve diversi clienti Il barista è corrispondente del processore, i clienti sono l’equivalente dei processi da eseguire Esecuzione mono-programmati: Client 1 Ordinare Preparare il caffé Consumare Pagare Client 2 Ordinare Preparare il caffé Consumare Pagare Soluzione In realtà: Client 1 Client 2 Ordinare (C1) Ordinare (C2) Preparare il caffé (C1) Preparare il caffé (C2) Pagare (C1) Pagare (C2) Soluzione: sistemi multiprogrammati Quando il processore è nello stato di idle può eseguire (parte di) un altro processo Quando un processo si ferma (per esempio in attesa di un dato dall’utente) il processore può passare ad eseguire le istruzione di un altro processo Il sistema operativo si occupa dell’alternanza tra i processi in esecuzione IL TASK MANAGER Funzioni principali del sistema operativo Avvio del computer Gestione del processore e dei processi Gestione della memoria principale Gestione della memoria virtuale Gestione della memoria secondaria Gestione dei dispositivi di input/output Interazione con l’utente IL FILE SYSTEM BLOCCHI SU DISCO I dischi sono suddivisi in tracce concentriche e settori, ogni settore è una fetta di disco I settori suddividono ogni traccia in porzioni dette blocchi Traccia Testina Blocco Settore STORIA DEI SISTEMI OPERATIVI Prima generazione: 1945 - 1955 Seconda generazione: 1955 - 1965 transistors, sistemi ‘batch’ Terza generazione: 1965 – 1980 valvole Circuiti integrati, multiprogramming Quarta generazione: 1980 – oggi personal computers, interfacce grafiche SISTEMI BATCH Early batch system bring cards to 1401 read cards to tape put tape on 7094 which does computing put tape on 1401 which prints output SISTEMI BATCH Struttura di un tipico Fortran Monitor System job PRIMI SISTEMI OPERATIVI MULTI-TASKING CTSS (Compatible Time Sharing System - 1962) MULTICS (MULTIplexed Information and Computing Service - 1965) UNIX (1969) SISTEMI OPERATIVI PER PC MS-DOS (MicroSoft Disk Operating System 1980) Apple Mac: primo sistema operativo ad utilizzare il nuovo tipo di interfaccia a finestre sviluppato da Xerox Windows (1985) Windows 95, Windows 98, Windows Me Windows NT, Windows 2000 (5th version of NT), Windows XP UNIX per PC: Minix (1987) Linux (1994) INTERFACCE SU RETE E WEB A partire dal 1980 una componente essenziale del sistema operativo Lezione 4 LETTURE Tomasi, Capitolo 1.5, 1.6 ed 1.7 Architettura: http://it.wikipedia.org/wiki/Computer http://en.wikipedia.org/wiki/Von_Neumann_architecture Sistema operativo: http://it.wikipedia.org/wiki/Sistema_operativo http://it.wikipedia.org/wiki/Storia_dei_sistemi_operativi RINGRAZIAMENTI Parte del materiale proviene da: Corso di Informatica Umanistica 2004/05 (Cuel / Ferrario) Corso di IU di Fabio Ciotti (Roma) Corso di Informatica di Jeremy Sproston (Torino)