Upload
daniela-carraro
View
215
Download
0
Embed Size (px)
Citation preview
ANNUNCI
Testo di Ciotti: messo versione PDF sul sito (e su didattica online)
FAQ: come fare la tilde (~, ASCII 126) su tastiere italiane: ALT + 126 (su tastierino numerico od usando NUM LOCK)
http://www.dit.unitn.it/~poesio/Teach/IU: piano delle lezioni di Informatica Umanistica D online.
INFORMATICA UMANISTICA B
4: CIRCUITI LOGICI E SOFTWARE DI SISTEMA
UNITA’ CENTRALE: LA MEMORIA PRINCIPALE
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
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
AND
OR
NOT
A B A AND B
falso falso falso
falso vero falso
vero falso falso
vero vero vero
A B A OR B
falso falso falso
falso vero vero
vero falso vero
vero vero vero
A NOT A
falso vero
vero falso
00 1
11 1
01 0
00 0
RA B
10 1
11 1
11 0
00 0
RA B
01
10
RA
OPERAZIONI LOGICHE ELEMENTARI: AND, OR, NOT
AND
OR
NOT
00 1
11 1
01 0
00 0
RA B
10 1
11 1
11 0
00 0
RA B
01
10
RA
A
B R
R A
B
A R
CIRCUITI ELEMENTARI: AND, OR, NOT
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
0 0 0
0 1 1
1 0 1
1 1 0
B
A
R
NAND E NOR
Per realizzare tutte le operazioni binarie non
servono tre operazioni (and, or, not)
Basta una tra :
nand (not and) e nor (not or)
NAND
NOR
A B A NAND B
falso falso vero
falso vero vero
vero falso vero
vero vero falso
A B A NOR B
falso falso vero
falso vero falso
vero falso falso
vero vero falso
10 1
01 1
11 0
10 0
RA B
00 1
01 1
01 0
10 0
RA B
A
B R
R A
B
CIRCUITI ARITMETICI
Riporto: 1 1 1 1 0 0
0111002 + 1001112 = ----------- 10000112
Somma: Colonna per colonna, da destra a sinistra Riporto se la somma su una colonna supera la base Tre cifre binarie (prima riga, seconda riga, riporto), somma =1 se una o tre sono 1, riporto = 1 se almeno due sono 1
28 + 39 =----------- 67
Somma binaria
1 11 riporti 1010011+ 1100011=
-----------
10110110
Si vuole costruire un circuito per sommare due numeri binari
Iniziamo con un circuito che faccia la somma su di una colonna
1-add 1-add 1-add 1-add
0 riporto inizialeRiporto
finale
risultato
Somma di numeri di 4 bits
Vogliamo un circuito che con input due bit corrispondenti ed il riporto precedente calcola la loro somma ed il nuovo riporto.
yx
S
R
R'
1-ADD
2 bit da sommare
riportoriporto per la prossima colonna
risultato su questa colonna
1-ADD
3 input
2 output
Il circuito comprende due sottocircuiti:
riporto somma1-ADD
La somma S è 1 se tutti e tre i bit in input sono 1 oppure solo uno di essi è 1.
Questo si esprime con la formula logica:
S = {[(X AND Y) AND R] OR [X AND (Y NOR R)]} OR {[Y AND (X NOR R)] OR [R AND (X NOR Y)]}
Il nuovo riporto R' è 1 se almeno due bit in input sono 1.
Questo si esprime con la formula logica:
R' = [(X AND Y) OR (X AND R)] OR (Y AND R)
TABELLE DI VERITÁ
00 01 10 11
0 1
0 1 1 0 1 0 0 1 00 01 10 11
0 1
0 0 0 1 0 1 1 1
Somma S
Riporto R
riporto
bit da sommare
1-add 1-add 1-add 1-add
0 riporto inizialeRiporto
finale
risultato
Somma di numeri di 4 bits
Componendo 6 circuiti ADD si ottiene il circuito
x0
0
ADD
R
y0
s0
x1
R
y1
s1
x2
R
y2
s2
x3
R
y3
s3
x4
R
y4
s4
x5
R
y5
s5
ADDADDADDADDADD
Che calcola la somma di due numeri di 6 bit
H ard w are S oftw are
C om p u te r
HARDWARE E SOFTWARE
Fino a qui, abbiamo parlato soprattutto di componenti fisiche del computer, il cosiddetto hardware
•Sappiamo però che il funzionamento di un computer non dipende solo dall’ hardware ma anche, e in maniera determinante, dai programmi che il computer è in grado di eseguire, il cosiddetto 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à
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
LOAD 32 R2
ADD R1 84IL SOFTWARE DI SISTEMA
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
LA MACCHINA VIRTUALE
Nei moderni sistemi di elaborazione questi obiettivi vengono raggiunti grazie alla definizione di macchine virtuali che vengono realizzate al di sopra della macchina hardware reale
011100010111010101000011110
Hardware
Macchina virtuale (software)
Utente
LA MACCHINA VIRTUALE
Questa macchina si dice virtuale in quanto essa non esiste fisicamente
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)
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
DAI LINGUAGGI DI PROGRAMMAZIONE AL LINGUAGGIO MACCHINA Ogni computer ha un linguaggio macchina
… le cui istruzioni sono direttamente eseguibili dalla macchina hardware
Al di sopra di questo linguaggio è possibile definire altri linguaggi … e fornire delle regole per tradurne le istruzioni
in opportune sequenze di istruzioni in linguaggio macchina
STRUTTURA A CIPOLLA
Hardware + software formano un insieme di livelli, che formano la cosi detta “struttura a cipolla”
Idealmente l’utente ad un livello è ignaro di tutti i dettagli delle operazioni svolte dai livelli inferiori della gerarchia e conosce solo le operazioni del livello più alto
SISTEMA OPERATIVO
Il sistema operativo e’ il software 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
011100010111010101000011110Hardware
Utente
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
Avvio dell’elaboratore
Il sistema operativo viene mandato in esecuzione al momento dell’accensione del computer
Questa fase prende il nome di bootstrap In questa fase una parte del sistema
operativo viene caricata nella memoria principale
Avvio dell’elaboratore
In genere questa parte del sistema operativo comprende: I programmi per la gestione del processore I programmi per la gestione della memoria I programmi per la gestione dell’input/output I programmi per la gestione delle risorse hardware I programma per la gestione del file system Un programma che crea l’interfaccia verso l’utente
Avvio dell’elaboratore
Una parte del sistema operativo deve essere sempre mantenuta in memoria principale e deve essere sempre pronta per l’esecuzione
012345
N
S.O.
spazioutente
Avvio dell’elaboratore (i virus)
Spesso durante questa fase sono eseguiti anche dei programmi che verificano l’eventuale presenza di virus sul disco dell’elaboratore
I virus può danneggiare il funzionamento dell’elaboratore Possono essere trasmessi da un elaboratore ad un altro
quando si copiano dei programmi oppure quando si salvano degli allegati dalla casella di posta elettronica
ESEMPIO: WINDOWS XP
BIOS esegue PowerOnSelfTest (POST) Controlla che video card funzioni Controlla se reboot o ‘cold boot’. Se cold boot,
controlla RAM, bus, tastiera, mouse Carica i drivers speciali Fa partire BOOSTRAP LOADER
BOOTSTRAP LOADER: Carica sistema operativo in memoria Lo fa partire
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) ….
C:> print foo1.doc
C:> oppure
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 secondaria
Memoria principale
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, mono-programmati
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, mono-programmati
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)
Esempio 1
Un processo è costituito da 1000=103 istruzioni Ogni istruzione richiede 10-6 secondi per essere eseguita dal
processore Tempo totale di esecuzione: 103 * 10-6 = 10-3 = 1 millisecondo
A metà esecuzione è richiesta la lettura di un dato dal disco. Il tempo di lettura è 1 millisecondo
Tempo totale di esecuzione = 2 millisecondi Idle time = 1 millisecondo: 50% del tempo totale di esecuzione è
tempo sprecato
Esempio 2
Un processo è costituito da 1000=103 istruzioni Ogni istruzione richiede 10-6 secondi per essere eseguita dal
processore Tempo totale di esecuzione: 103 * 10-6 = 10-3 = 1 millisecondo
A metà esecuzione è richiesta un dato al’utente. Il tempo di reazione è 1 secondo
Tempo totale dell’esecuzione = 1001 millisecondi Idle time = 1 secondo: 99,9% del tempo totale di esecuzione è
tempo sprecato
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:
Ordinare Preparareil caffé
ConsumarePagare
Ordinare Preparareil caffé
ConsumarePagare
Client 1 Client 2
Soluzione
In realtà:
Ordinare(C1)
Preparareil caffé (C1)
Pagare(C1)
Ordinare(C2)
Preparareil caffé (C2)
Pagare(C2)
Client 1
Client 2
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
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
Gestione della memoria secondaria
La memoria secondaria serve per memorizzare programmi e dati in modo permanente
Il file system: quella parte del sistema operativo che si occupa di gestire e strutturare le informazioni memorizzate sulla memoria secondaria
Processore
Stampante Memoria secondaria
Memoria principale
Il file system
Mediante il file system il sistema operativo fornisce una visione astratta dei file su disco
011100010111010101000011110
Hardware
Utente
Avvio
Gestione: i processi, la memoria, i disp. di input/output
Interfaccia utente
Il file system
Il file system permette all’utente di: Identificare ogni file mediante il suo nome Operare sui file mediante opportune operazioni Effettuare l’accesso alle informazioni grazie ad
operazione di alto livello, che non tengono conto del tipo di memorizzazione
Per esempio, si deve accedere allo stesso modo ad un file memorizzato sul disco rigido oppure su un CD-ROM
…
Il file system
Il file system permette all’utente di: … Strutturare i file, organizzandoli in sottoinsiemi
secondo le loro caratteristiche, per avere una visione “ordinata” e strutturata delle informazioni sul disco
Proteggere i propri file in un sistema multi-utente, ossia per impedire ad altri utenti di leggerli, scriverli o cancellarli
Il file system
Un insieme di operazioni minimale: Creazione di un file Cancellazione di un file Copia o spostamento di un file Visualizzazione del contenuto di un file Stampa di un file Modifica del contenuto di un file Rinomina di un file Visualizzazione delle caratteristiche di un file
Organizzazione gerarchica dei file
Il numero di file che devono essere memorizzati su un disco può essere molto elevato
Si ha quindi la necessità di mantenere i file in una forma ordinata
Un unico spazio (“contenitore”) di file è scomodo La scelta dei nomi diventa difficile perché non è possibile
avere due file con lo stesso nome nella stessa contenitore Le operazioni di ricerca dei file diventano onerose
Organizzazione gerarchica dei file
L’idea è quella di raggruppare i file in sottoinsiemi
Questi sottoinsiemi di file vengono memorizzati all’interno di contenitori dette cartelle (directory)
I nomi dei file sono locali alle directory Si possono avere due file con lo stesso nome
perché siano in due directory diverse
Organizzazione gerarchica dei file
Per organizzare gerarchicamente i file, il sistema operativo deve fornire all'utente un insieme di operazioni per: creare una nuova directory rimuovere una directory rinominare una directory elencare il contenuto di una directory copiare o spostare i file da una directory ad un'altra
Organizzazione gerarchica dei file
I computer sono dotati di più unità di memoria secondaria, per esempio: Unità per floppy disk: A Unità per disco fisso: C Unità per CD-ROM: D
DOS e Windows usano dei nomi per distinguere le unità
Organizzazione gerarchica dei file
Applicazioni
Biblioteca
Utenti
Indice
Elab_imm
Elab_testi
Narrativa-Fra
Narrativa-Ing
Narrativa-Ita
Bianchi …
Rossi …
Pautasso …
Photoshop.exe
Winword.exe
libro1.pdflibro2.pdf
libro1.pdf
libro1.pdf
libro2.pdf
Premiere.exe
A:
Questa struttura vienechiamata albero
foglie
radicedell’albero
FUNZIONI DEL SISTEMA OPERATIVO, III: INTERFACCIA UTENTE
INTERFACCE TESTUALI MS-DOS, Unix shell, Linux shell Lavorando con una interfaccia testuale i
comandi vengono impartiti mediante la tastiera
Ogni comando ha un suo nome e una sintassi ben precisa
C:> print foo1.doc
Can’t find file foo1.doc
C:>
prompt
ESEMPI DI COMANDI
MS-DOS Date Dir Copy Del Help …
UNIX-Linux Date Ls Cp Rm Man …
Linguaggio di comandi (interfaccia testuale)
Dai il messaggio di prompt all’utente
Quando arriva il comando, riconoscilo
Se è errato, dai un messaggio di errore
Se è corretto, esegui l’azione corrispondente
Al termine dell’operazione, torna all’inizio
C:> print foo1.doc
Can’t find file foo1.doc
C:>
INTERFACCIE GRAFICHE
Nei calcolatori con interfaccia grafica molti comandi sono impartiti mediante l’interazione attraverso il mouse
Cioè il clic (il doppia clic, …) del mouse su un’icona viene tradotto in una opportuna sequenza di istruzioni che il computer esegue per soddisfare la richiesta dell’utente
COMPILATORI ED INTERPRETI Linguaggi:
Di basso livello Di alto livello
I linguaggi ad alto livello devono essere trasformati in un linguaggio comprensibile alla macchina: Interpretati: ogni istruzione viene eseguita da un programma
interprete a richiesta dell’utente (basic) Compilati: le istruzioni vengono tradotte tutte insieme da un
programma compilatore che genera un codice eseguibile che il computer processa direttamente (c, cobol, ecc.)
STORIA DEI SISTEMI OPERATIVI
Prima generazione: 1945 - 1955 valvole
Seconda generazione: 1955 - 1965 transistors, sistemi ‘batch’
Terza generazione: 1965 – 1980 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 6
LETTURE
Ciotti & Roncaglia cap. 3