IDUL 2013
COMPUTER: HARDWARE E
SOFTWARE
Computer
Hardware
Software
Hardware
Struttura fisica (architettura) del calcolatore
formata da parti meccaniche, elettriche,
elettroniche
Software
Componente
Programmi
del calcolatore costituita dai:
di base per la gestione del sistema
(sistema operativo)
Programmi applicativi per l’uso del sistema (possono
usare i programmi di base)
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
usando
l’informazione
il processore (Central Processing Unit - CPU)
memorizzare
l’informazione
usando
la memoria principale (RAM)
usando la memoria secondaria (DISCHI RIGIDI)
fare
l’input/output dell’informazione
usando
i dispositivi locali di input/output
Collegandosi in rete con altri computer
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
Unità di
controllo
Unità
aritmetico
logica
…
Program Counter
Registro di Stato
Registro Istruzioni
Registri Generali 8 o 16
Registro Indirizzi Memoria
Registro Dati Memoria
Registro di Controllo
UNITA’ DI CONTROLLO
Bus Interno REGISTRI
Unità di
controllo
Unità
aritmetico
logica
…
Program Counter
Registro di Stato
Registro Istruzioni
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
Unità di
controllo
Unità
aritmetico
logica
REGISTRI
…
Program Counter
Registro di Stato
Registro Istruzioni
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
Registro Istruzioni
controllo
…
Registri Generali 8 o 16
Unità
aritmetico
Registro Indirizzi Memoria
logica
Registro Dati Memoria
Registro di Controllo
ARCHITETTURA DI VON
NEUMANN: I BUS
ASPETTO DEI MICROPROCESSORI
MODERNI
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)
clock fornisce una cadenza temporale per l’esecuzione
delle operazioni elementari
Il
La
frequenza del clock indica il numero di «operazioni
elementari» che vengono eseguite nell’unità di tempo
Clock
Consideriamo
una ipotesi semplificata in cui ogni battito di
clock corrisponde esattamente l’esecuzione di una sola
istruzione macchina
La
frequenza del clock indica il numero di operazioni elementari
che vengono eseguite nell’unità di tempo
Per esempio: il clock che ha circa 66 milioni di battiti per
secondo  il computer può eseguire circa 66 milioni di
operazioni per secondo
Clock
In
realtà, questa ipotesi non è sempre vero
L’esecuzione
di una istruzione può richiedere più battiti di
clock
Oppure nello stesso ciclo di clock si possono eseguire
(parti) di istruzioni diverse
Dipende dal tipo di processore
Per
esempio:
Il
processore Intel 80286 richiedeva 20 battiti del clock per
calcolare la moltiplicazione di due numeri
Il processore Intel 80486 poteva calcolare la moltiplicazione
di due numeri usando solo un battito del clock
Clock
La
frequenza del clock si misura in multipli di Hertz
(volte per secondo)
MHz
(1 MHz corrisponde circa a un milione di istruzioni
elementari/battiti al secondo)
GHz (1 GHz corrisponde circa a un miliardo di istruzioni
elementari/battiti al secondo)
o Per esempio: se acquistate un calcolatore e vi dicono
che ha un processore a 2 GHz
o Vuol dire che il processore è in grado di eseguire (circa!)
2 miliardi di istruzioni al secondo
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
Argomento 1 Argomento 2
cosa fare (“operando”)
Codice istruzione
su cosa operare
Argomento 1
Istruzioni macchina
Per esempio:
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
LOAD
3568 R2
Operazione
di lettura dalla memoria: richiede la lettura del
valore contenuto nella cella con indirizzo 3568 e il suo
caricamento nel registro R2
Istruzioni macchina

Per esempio:
01000110 1111000
cosa fare (espresso in binario)
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
N.B.
programmi in linguaggio macchina
Nessun uomo è in grado di scrivere
programmi estesi in linguaggio macchina! (esistono
invece linguaggi “ad alto livello”)
I programmi e i processori
Ogni
tipo di processore è in grado di eseguire un numero
limitato di istruzioni
Tuttavia il numero di istruzioni specializzate (specialmente
per la resa grafica) è cresciuto molto da una generazione di
processori alla successiva.
Non
sempre i programmi utilizzano tutte le istruzioni disponibili
sul processore!
Combinando
in modo diverso sequenze anche molto
lunghe di istruzioni si possono far svolgere al computer
molti compiti diversi
I programmi e i processori
Famiglie
di processori: Intel x86, AMD, ARM, ecc.
Processori della stessa famiglia possono eseguire gli stessi
programmi scritti in linguaggio macchina (ma non sempre)
Processi di famiglie diverse non possono eseguire gli stessi
programmi scritti in linguaggio macchina:
le istruzioni che “capiscono” sono diverse
Attenzione! Stiamo considerando il livello delle istruzioni
macchina
Linguaggi ad alto livello
I programmatori non scrivono quasi mai i
programmi in linguaggio macchina.
 Usano piuttosto linguaggi ad alto livello, più
comprensibili all'uomo. Ad esempio:

Java
C
C++
PERL
Python
(Cliccare sui linguaggi per esempi e approfondimenti)

Linguaggi ad alto livello
I linguaggi ad alto livello non sono
comprensibili per il processore.
 Devono essere tradotti in linguaggio
macchina da uno speciale software detto
“compilatore” (che genera in output programmi
eseguibili, in Windows .exe)
 Oppure possono essere tradotti “al volo”
durante l'esecuzione, da un programma detto
“interprete” (esistono anche soluzioni miste)

Compatibilità
Compatibilità
all’indietro
Un
processore è in grado di eseguire codice creato per un
processore precedente della stessa famiglia.
Un programma comprende dati creati da una sua versione
precedente
Compatibilità
Un
in avanti
processore/programma accetta dati creati per una sua
versione futura (eventualmente interpretandoli in modo
parziale)
Ottenibile tramite l’adozione di standard e modularità
Architettura dei computer
Un
computer deve:
elaborare
usando
l’informazione
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
usando
l’informazione
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 (circa 13€ x GB)
Memoria principale (RAM)
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
Indirizzi Contenuto
0
1
2
3
4
5
N
345
13.200.985
3.890
LOAD 3568 R1
LOAD 56 R1
ADD R1 R2
Un po’ di terminologia ...
• Bit =
• Byte =
• Kilobyte (KB) =
Kibibyte (Kib) =
• Megabite (MB)
Mebibyte (Mib)
• Gigabyte (GB)
Gibibyte
• Terabyte (TB)
Tebibyte (Tib)
• Petabyte
0/1, si/no, vero/falso, acceso/spento
8 bit (= 256 diverse possibilità)
1000 byte
1024 byte
1000 KB
1024 (Kib)
1000 MB (= un miliardo di byte)
1024 Kib
1000 GB
1024 Mib
…
• Megahertz, Gigahertz = misure di frequenza (clock): milioni/miliardi di volte al secondo
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
usando
l’informazione
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
 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)
 E’ molto meno costosa (attorno ai 25 centesimi per
GB)
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
Memoria
Processore
principale
Stampante
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 (pressocché obsoleti)
sull’uso dei raggi laser (tecnologia ottica)
dischi ottici (CD-ROM, DVD, Blu Ray)
Dispositivi
a stato solido («chiavette USB», ecc.)
I dischi
magnetici
Hard
disk: sono dei dischi che
vengono utilizzati come supporto
di memoria secondaria fisso
all’interno del computer
varie
centinaia di GB di memoria
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
Attenzione
ad avvicinare magneti ad un disco rigido
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
Memory card/USB flash drive
Diffusi
in vari formati e con vari nomi
(memory card, compact flash, memory pen,
memory stick, USB flash drive, USB stick, …)
Nati del mondo delle immagini digitali (per
fotocamere e telecamere) come supporto
interno estraibile
 Dimensioni in rapida crescita: da 1 a 32 GB
 USB flash drive, USB stick: utilizzabile sulle
porte USB di un personal computer
 Resistenti all’acqua e facilmente trasportabili
 Più costose degli hard disk magnetici
(attorno a € 1.4 x GB)
Unità di misura
card/USB flash drive: 1 GB – 32 GB
Hard disk, varie centinaia di GB di memoria
CD-ROM, 650 MB - 700 MB (ormai quasi obsoleto)
DVD, da 4.7 fino a 17 GB di memoria (film, dati)
Dischi Blu-Ray: 25 o 50 GB (usato per film in alta
definizione)
Nastri magnetici, usati solo per funzioni di backup
Memory
Aumenta la capacità memorizzazione
byte
Registri
KB
Mem. cache
GB
Mem. centrale
100GB
Dischi magnetici
e/o ottici
>1000 GB
Nastri magnetici
100*picosecondi
nanosecondi
10*nanosecondi
microsecondo/
millisecondi
10*millisecondi
Aumenta la velocità di accesso
Architettura dei computer
Un
computer deve:
elaborare
usando
l’informazione
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
Solo
Input:
Tastiera
Mouse
(e altri strumenti di
puntamento)
Scanner
Microfono
Macchine fotografia e
telecamera digitale
Lettori di codici a barre
Solo
Output:
Videoterminale
Stampante
Casse
acustiche
 Uscite HDMI (per schermi HD)
Input/output:
Touchscreen
Modem
(tramite VGA)
/ Ethernet / Wifi / Bluetooth
Porte USB, Firewire,
I dispositivi di input/output
Solitamente
hanno limitato autonomia rispetto al
processore centrale
Si collegano alle porte (o interfacce) del computer
Ad
alto livello le porte sono le “prese” cui si
connettono i dispositivi
Ne esistono di tipi diversi a seconda del tipo di
collegamento e della velocità di trasmissione
(esempio: porta USB)
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

Storia dell’ I/O
Principali rivoluzioni nelle interfacce uomo macchina:
Invenzione
delle interfacce grafiche+mouse (Macintosh,
1984)
Invenzione dei touch-screen (schermi sensibili al tocco)
Al momento, l’innovazione nell’ informatica, e specialmente
in quella portatile, viene principalmente dallo sviluppo di
nuovi metodi per l’interfaccia uomo/macchina, piuttosto che
dalla velocità del processore (che è generalmente
sottoutilizzato) o dalla ampiezza delle memorie.
Il collo di bottiglia dell’I/O
Al momento, tensione tra:
Computer fissi con schermi sempre più grandi ed
applicazioni/pagine web che si aspettano di avere un grande
spazio di visualizzazione (specialmente per veicolare
pubblicità)
 Diffusione di apparecchi portatili con schermi di dimensioni
molto diverse (smartphone – tablet -- ultrabook – netbook –
portatili: da 4 pollici a 14 pollici in diagonale).



La convergenza del software tra sistemi diversi fa si che la «stessa»
applicazione debba adattarsi a condizioni molto diverse (p.es. con
uso del mouse o del touch screen).
Soluzione (?): aumento della risoluzione (ma: utenti presbiti?)
Il futuro delle interfacce
INPUT:
o Programmi di dettatura (e.g. Dragon Dictate, ma anche
ricerca di Google)
o
o
Linguaggio del corpo:
o
o
o
o
Limiti: pause, rumore, uso di più lingue, riluttanza a «parlare da soli»
Rilevatori di movimenti delle mani (p.es. Leap Motion)
o del corpo (Microsoft Kinect e sua evoluzione nella Xbox One)
Limiti: non tutti i movimenti sono significativi, problemi con più
persone, interfaccia sensore-software, ambito «gaming»
Rilevatori dello sguardo (eye-tracking; usati p.es. per tenere
acceso uno schermo).
Sensori di identificazione (riconoscimento di impronte
digitali, iridi, mani, orecchie; verso il superamento delle
Il futuro delle interfacce
OUTPUT:

Schermi persistenti
–(non
serve corrente per mantenere l’immagine; leggibili alla
luce del sole;
–E-book readers, p.es. e-ink in Amazon Kindle, Sony PRS)
–Minore
●
Realtà aumentata: p.es. «Google glasses»
–Limiti:
●
consumo; limiti: B/N, immagini in movimento
dimensione display, privacy, accuratezza
Realtà virtuale (p.es. Oculos Rift)
–Limiti:
risoluzione/reattività; ambito «gaming», perdità di
contatto con la realtà; comportamento?)
Il futuro delle interfacce
OUTPUT:
 Stampanti 3D ( e scanner per oggetti); p.es. Makerbot.
Varie tecnologie, tra cui stampa di oggetti di plastica per
uso domestico. Principale applicazioni industriali: prototipi,
pezzi unici
Limiti: ‘uso domestico’? Monomateriale, tempi di
creazione, elettronica, usi ‘proibiti’ (stampa di armi da
fuoco?)
●
Taglio laser (su metallo, legno)
Queste tecnologie possono essere provate al
fab-lab del MUSE di Trento.
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
 Tipi di interfacce Input/Output
Realizzazione
fisica dell’architettura di von
Neumann:
Piastra
madre
Memorie volatili e non volatili
L’accelerazione dell’informatica
Rapidissima
crescita della potenza dei computer, misurata in
capacità della RAM, velocità della CPU e capienza del disco
rigido.
RAM:
dai 48KB dell'Apple II ai 2GB di un PC medio odierno: un
incremento di 42000 volte. Al momento risulta che la memoria media di
un PC raddoppia ogni 21 mesi.
Processore: da 4 MHertz a 2600000 e più (per macchine monoutente
medie): un incremento di circa 650 volte (con analogo aumento del
numero dei transistor nella CPU).
Finora, si è mantenuta valida la legge di Moore, enunciata nel 1964: "il
numero dei transistor nel processore raddoppia ogni 18 mesi".
Memorie di massa: Dai 90K su floppy disk dell'Apple II ai 500 GB e
più di un PC medio-alto attuale: un incremento di più di 4 milioni di
volte.
Applicazione pratica
Scelta
tra vari modelli per l’acquisto di un
computer.
Le domande da porsi
Fisso
o portatile?
Da considerare:
A
parità di costo, un computer fisso è più potente. Ma la batteria di un
portatile è preziosa in zone con interruzioni di corrente, o se si lavora
molto in treno.
Se si lavora spesso in due luoghi diversi (p.es. casa-ufficio) può non
servire comprare un portatile. Se ognuno è dotato/dotabile di un
computer fisso, si possono tenere tutti i propri dati su una chiave USB
(16GB o più) e portarla da un computer all’altro.
Un computer “portatile” di peso >3Kg non è davvero comodo da
portare addosso. Il computer più leggeri hanno schermo più piccolo,
ma le batterie durano spesso di più. E’ possibile poi comprare con poca
spesa schermo, mouse e tastiera esterni da collegare ad un portatile
piccolo, trasformandolo virtualmente in un “fisso”.
 Esistono applicazioni che sono praticamente inutilizzabili su schermi
sotto i 10 pollici (p.es. il programma di posta “Thunderbird”)
Le domande da porsi
Che
capienza di disco?
Che uso ne faccio?
Se
non si tengono su computer musica o film, 60 GB sono più che
sufficienti. Se lo si usa per contenere musica, 100 GB in più sono
consigliabili. Ancora più spazio nel caso di film; per tenere film in alta
definizione il disco deve avere la massima capienza compatibile col
proprio budget.
Che
Una
velocità?
velocità alta è richiesta quasi solo da videogiochi e programmi di
fotoritocco o per editing di film (oltre ad una memoria di almeno 4GB)
Non sempre il software è in grado di sfruttare la velocità del
processore (o della scheda grafica)
Computer
Hardware
Software
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
È
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 più 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 può essere ripetuta
più 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’è dell’input, aspettare che la
stampante abbia finito e controllare che tutto abbia
funzionato OK

 APRI
DOCUMENTO “PARTY.DOC”
Un `documento’ è semplicemente una lista di blocchi
su tracce probabilmente diverse del disco rigido

SISTEMA OPERATIVO
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:
Il
Windows
(XP, Vista, 7, 8)
Unix (Linux, BSD, Apple System X, Android)
Il processo di “Bootstrapping”
- All' accensione, il computer carica da una
piccola memoria permanente (EPROM) il
BIOS.
- Il BIOS non può gestire periferiche, ma ha
abbastanza informazioni per poter caricare la
parte centrale del
sistema operativo (il
l
“kernel”)
- Il Kernel esamina l'hardware del computer e
carica i vari “driver”, software specifici per
gestire le periferiche
Funzioni principali del sistema
operativo
Più in dettaglio, il “kernel” (il programma principale
del SO) più i driver si occupa di:
Gestire il processore ed programmi in esecuzione (detti
processi)
 Gestire la memoria principale (RAM)
 Gestire la memoria virtuale (una “RAM” estesa
apparente, in realtà salvata su disco)
 Gestire la memoria secondaria (Disco rigido)
 Gestire i dispositivi di input/output
Interagire con l’utente, gestendo il sistema a finestre
(quest’ultimo compito è spesso separato dal S.O. vero)

LA STRUTTURA A CIPOLLA DEL
SISTEMA OPERATIVO
Utente
0111000101
1101010100
Hardware
0011110
Avvio (BIOS)
Gestione: i processi, la memoria, i disp. di input/output
Interfaccia utente
Funzioni principali del sistema
operativo
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
Imposta il registro Program Counter con l’indirizzo in memoria
principale della prima istruzione del programma
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 (e
soprattutto, dei tempi di risposta dell’utente)
 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
Client 2
Ordinare Preparare Consumare Ordinare Preparare Consumare
Pagare
Pagare
il caffé
il caffé
Soluzione
In
realtà:
Client 1
Client 2
Ordinare
Ordinare
(C1)
(C2)
Preparare
Preparare
il caffé (C1)
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, il processore può passare ad
eseguire le istruzione di un altro processo
 Il sistema operativo si occupa dell’alternanza tra i
processi in esecuzione (“multitasking”).
 Attenzione: un numero eccessivo di processi rallenterà
il computer!
In un PC (personal computer) tutti i processi saranno
relativi ad un singolo utente (o all’attività del SO); in sistemi
collegati in rete i processi possono riguardare anche utenti
diversi.

Gestione Attività (Windows 7)
Applicazioni attive:
Gestione Attività (Windows 7)
Processi attivi:
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
IL FILE SYSTEM
IL FILE SYSTEM: alcune
caratteristiche di base
Possibilità di impedire/permettere la scrittura/lettura/esecuzione
di file/cartelle di un particolare utente da parte di altri (concetto
di utente privilegiato, amministratore di sistema, superuser)
 Possibilità di accesso ad un medesimo file sotto nomi diversi
(“collegamenti”, da non confondersi con i “link” su web)
 Possibilità di “journaling” (per preservare l’integrità del
filesystem) e di “indexing” (creazione di un elenco alfabetico dei
contenuti dei file su un sistema, per facilitare la ricerca di
contenuti)

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, Windows Vista (2007), Windows 7 (2010), Windows 8
(2012)

UNIX
per PC:
Minix (1987)
 Linux (1991/94)
 Apple OSX

Sistemi operativi e Open Source

Movimento “Open Source”
Differenza tra beni materiali (uno a uno) e software
(uno a molti)
 Sviluppo di codice come servizio: diffusione di
software “libero” creato dalla comunità dei
programmatori
 Con lo sviluppo di internet, possibilità di raccogliere
ed organizzare attorno ad un progetto software un
largo gruppo di programmatori volontari

Sistemi operativi e Open Source

Progetto GNU (Richard Stallman)
Scopo: creazione di un SO derivato da UNIX ma
completamente libero
 Il software del progetto viene distribuito con una
particolare licenza, la GNU GPL, costruita per
garantirne la libertà di diffusione e di modifica.
 per arrivare a questo risultato, all'interno del progetto
vengono creati programmi per coprire ogni necessità
informatica: compilatori, lettori multimediali, programmi
di crittografia, ecc.

Sistemi operativi e Open Source
Il codice prodotto dal lavoro dei volontari organizzati
tramite rete viene diffuso completo di “codice sorgente”
(“source”): il programma scritto in un linguaggio ad alto
livello e commentato dai suoi creatori.
 Chiunque abbia l’esperienza tecnica necessaria ha la
possibilità di modificare, adattare ed espandere il
programma.
 Al contrario, i programmi “proprietari” (Photoshop,
Excel, ma anche programmi gratuiti come Acrobat
Reader o Explorer) vengono distribuiti solo nel formato
eseguibile, quasi impossibile da modificare.

Sistemi operativi e Open Source:
Il caso Linux
Linux: un sistema operativo “open source” basato su
UNIX, sviluppato tra il 1994 ed oggi sotto l’impulso e
la direzione di Linus Torsvalden
 Ambiente GNU/Linux: kernel Linux più programmi
di gestione e sviluppo presi del progetto GNU
 Diffuso gratuitamente in varie “distribuzioni”
(varianti), che contengono sistemi linux più o meno
“completi” (SO + sistema a finestre + applicativi open
source per i compiti più comuni)

Linux: caratteristiche di base
Multiutente; multitasking; filesystem con protezione
lettura/scrittura per i vari utenti, link
 Vari ambienti grafici (KDE, GNOME, ecc.), installabili a scelta
dell’utente (è sistema a finestre è ben distinto dal SO)
 Installabile su una varietà di hardware diversi, anche se poco
potenti
 Stabile, altamente personalizzabile, gratuito
 Può convivere con Windows sullo stesso disco rigido:
all’accensione l’utente sceglie quale S.O. attivare
 “Pacchetti” applicativi extra installabili da web in modo
semiautomatico

Linux: distribuzioni
Varietà di distribuzioni, fornite gratuitamente su Web o su
DVD.
 Ciascuna distribuzione aggiunge di suo un sistema
semiautomatico di installazione ed aggiornamento del software,
più una particolare scelta di programmi applicativi e di
configurazioni.

Vedi: http://it.wikipedia.org/wiki/Distribuzione_%28Linux%29 per una
panoramica.

Esistenza di distribuzione “live” su CD/DVD (consentono di
provare un sistema linux sul proprio computer senza installare
nulla sul disco rigido)
 Sistemi derivati da Linux (p.es. le varie versioni di Google
Android per smartphone,)

Linux: limiti
Compatibilità con dati in uso nel mondo Windows?
(mancanza di Microsoft, Office; presenza di OpenOffice)
 Funzionamento con hardware recenti (specialmente portatili)?
 Molteplicità eccessiva degli strumenti software?
 Innovatività dell’impostazione generale (S.O. originali o
“cloni” dell’ambiente windows?)
 Molti dei programmi UNIX che una volta erano a disposizione
solo su linux sono ormai a disposizione anche su Windows (esiste
un modo per emulare un terminale UNIX e molti dei suoi
programmi più utili sotto Windows, chiamato cygwin)

LETTURE
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
Open
source
http://it.wikipedia.org/wiki/Open_source
http://www.apogeonline.com/openpress/cathedral
Scarica

idul13-part2