ANNUNCI

Ricevimento Poesio





Normalmente: lunedi’ 16-18, a Povo, SOLO SU
APPUNTAMENTO
Fino a Maggio: lunedi’ e venerdi’ dopo lezione
RICORDATEVI: La prossima settimana
lezione solo lunedi’
RICORDATEVI: laboratori, modulo C
Riprese sincronizzate con lucidi dell’anno
scorso disponibili in mediateca
INFORMATICA
UMANISTICA B
CIRCUITI LOGICI
SOFTWARE DI SISTEMA
CONCETTI PRINCIPALI DI
QUESTA LEZIONE

Circuiti logici



Struttura ‘a cipolla’ di un sistema ed
astrazione
Sistemi operativi:




Esempio: addizione
Gestione processi
Gestione memoria
Gestione interfaccia
Storia dei sistemi operativi
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
CIRCUITI LOGICI E FUNZIONI

Ogni circuito logico calcola una FUNZIONE
od OPERAZIONE:


+(2,4) = 4
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
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
A
B
A NAND B
NOR
A
B
A NOR B
falso falso
vero
falso falso
vero
falso vero
vero
falso vero
falso
vero
falso
vero
vero
falso
falso
vero
vero
falso
vero
vero
falso
A B
R
A B
R
0 0
1
0 0
1
0 1
1
0 1
0
1 0
1
1 0
0
1 1
0
1 1
0
A
A
R
B
R
B
CIRCUITI ARITMETICI
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
Riporto:
1 1 1 1 0 0
0111002 +
1001112 =
----------10000112
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
SOMMA DI NUMERI DI 4 BITS
Riporto
finale
1-add
1-add
1-add
risultato
1-add
0 riporto
iniziale
1-ADD
Vogliamo un circuito che con input due bit
corrispondenti ed il riporto precedente
calcola la loro somma ed il nuovo riporto.
x
y
R
1-ADD
R'
S
2 bit da sommare
riporto per
la prossima
colonna
2 output
3 input
riporto
1-ADD
risultato su questa
colonna
Il circuito comprende due sottocircuiti:
1-ADD
riporto
somma
ESPRESSIONE LOGICA PER
1-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Á
bit da sommare
riporto
0
1
0
1
00
01
0
1
1
0
00
01
0
0
0
1
10 11
1
0
0
1
Somma S
10 11
0
1
1
1
Riporto R
Somma di numeri di 4 bits
Riporto
finale
1-add
1-add
1-add
risultato
1-add
0 riporto
iniziale
Componendo 6 circuiti ADD si ottiene il
circuito
x5
y5
x4
y4
ADD
R
s5
x3
y3
ADD
R
s4
x2
y2
ADD
R
s3
x1
y1
ADD
R
s2
x0
y0
ADD
R
s1
0
ADD
R
s0
Che calcola la somma di due numeri di 6 bit
Computer
Hardware
Software
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à
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
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
Utente
011100010
111010101
Hardware
000011110
Macchina virtuale (software)
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
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

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

Una parte del sistema
operativo deve essere
sempre mantenuta in
memoria principale e
deve essere sempre
pronta per l’esecuzione
0
1
2
3
4
5
S.O.
spazio
utente
N
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
IL COMPUTER MANAGER DI
WINDOWS XP
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 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)
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:
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
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 principale
Memoria
secondaria
Il file system

Mediante il file system il sistema operativo fornisce
una visione astratta dei file su disco
Utente
Avvio
Gestione: i processi,
Interfaccia utente
011100010
Hardware
111010101
000011110
la memoria, i disp. di input/output
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 multiutente, 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 DEI FILES
SU DISCO

Ogni sistema operativo ha il suo modo per
utilizzare i dischi



Divide ogni solco in BLOCCHI o CLUSTER
Registra informazioni sulla locazione dei files
Windows:



DOS: FAT
Windows 98: FAT 32
Windows 2000 / XP: VFAT; info nei clusters
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
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
prompt
C:>
ESEMPI DI COMANDI
MS-DOS
 Date
 Dir
 Copy
 Del
 Help
 …
UNIX-Linux
 Date
 Ls
 Cp
 Rm
 Man
 …
Linguaggio di comandi
(interfaccia testuale)
C:> print foo1.doc
Can’t find file foo1.doc
C:>
Dai il messaggio di prompt all’utente
Quando arriva il comando, riconoscilo
Se è corretto, esegui l’azione corrispondente
Se è errato, dai un messaggio di errore
Al termine dell’operazione, torna all’inizio
INTERFACCE 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
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 6
LETTURE

Ciotti & Roncaglia cap. 3