IDUL 2011
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,
Preleva
sottrazioni, …, confronti, …
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
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 milione 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
Il
esempio:
processore Intel 80286 richiede 20 battiti del clock per
calcolare la moltiplicazione di due numeri
Il processore Intel 80486 può 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
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
Input:
Output
Tastiera
Videoterminale
Mouse
(e altri strumenti di
puntamento)
Scanner
Microfono
Macchine fotografia e
telecamera digitale
Lettori di codici a barre
Stampante
Casse
Input/output:
Touchscreen
Modem
:
/ Ethernet
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

Il collo di bottiglia dell’I/O
Principali
rivoluzioni nelle interfacce uomo macchina:
Invenzione
delle interfacce grafiche+mouse (Macintosh,
1984)
Invenzione dei touch screen (schermi sensibili al tocco)
Altre
innovazioni rilevanti
Programmi di dettatura (e.g. Dragon dictate)
 Schermi persistenti (non richiedono input di corrente per
mantenere un’immagine; leggibili alla luce del sole; usati
negli E-book readers, p.es. e-ink in Amazon Kindle, Sony
PRS)

Il collo di bottiglia dell’I/O
A
fronte dello sviluppo di memorie e processori,
mancano tuttavia vere novità nel campo delle
interfacce.
Tensione tra:
Computer
con schermi sempre più grandi ed
applicazioni/pagine web che si aspettano di avere un grande
spazio di visualizzazione
Diffusione di apparecchi con schermi di dimensioni molto
diverse (dagli smartphones tascabili alle tablet a 7 pollici a
quelle da 10 a netbook ai laptop), per cui un’applicazione
deve adattarsi a condizioni molto diverse (p.es. con o senza
touch screen)
ASPETTO DEI 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
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
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. Di pari passo è aumentata anche la
complessità interna del processore, espressa dal numero di transistor che
contengono.
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 360 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 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’è 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, tra poco 8)
Unix (Linux, BSD, Apple System X)
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” (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
(fine 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