Il software
• Il termine software ha origine durante la seconda
guerra mondiale.
• I tecnici dell'esercito inglese erano impegnati
nella decrittazione dei codici tedeschi di Enigma,
di cui già conoscevano la meccanica interna
(detta hardware, componente dura, nel senso di
ferraglia) grazie ai servizi segreti polacchi. La
prima versione di Enigma sfruttava tre rotori per
mescolare le lettere.
• Dopo il 1941, ad Enigma venne aggiunto un
rotore, e il team di criptanalisti inglesi, capitanati
da Alan Turing, si dovette interessare non più alla
sua struttura fisica, ma alle posizioni in cui
venivano utilizzati i rotori della nuova Enigma.
• Dato che queste istruzioni erano scritte su pagine
solubili nell'acqua (per poter essere più facilmente
distrutte, evitando in tal modo che cadessero nelle mani
del nemico) furono chiamate software (componente
tenera), in contrapposizione all'hardware.
• Il senso moderno del termine deriva dalle istruzioni date
ai computer, ed è stato utilizzato per la prima volta nel
1957 da John Wilder Tukey, noto statistico statunitense.
• Dal 1950 l'analogia tra l'hardware ed il corpo umano e
quella tra il software e la mente umana si è fatta molto
forte, dal momento che Turing ha sostenuto che il
progresso tecnologico sarebbe riuscito a creare, entro il
2000, delle macchine intelligenti (in grado cioè di
"pensare" autonomamente) atte alla risoluzione dei
problemi
• Andrew Hodges, Alan Turing: una biografia, Torino,
Bollati Boringhieri, 2006
Il software
• Il software è una componente del computer
costituita dai:
– programmi di base per la gestione del sistema
– programmi applicativi per l’uso del sistema
• Queste componenti permettono di trasformare
l’hardware in un oggetto in grado di svolgere delle
funzioni di natura diversa
• La proprietà fondamentale dei computer è il fatto di
essere programmabili
Il software
• 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
Una programmazione diretta della macchina
hardware da parte degli utenti non è accettabile
Il software
• È 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
• Questa macchina si dice virtuale in quanto
essa non esiste fisicamente
• Si può fare in modo che macchine
(fisicamente) differenti siano usabili in modo
simile
– Si tratta di costruire al di sopra delle diverse
macchine fisiche la stessa macchina virtuale
La macchina virtuale
• La macchina virtuale viene realizzata
mediante il software (software di base)
• L’utente interagisce con la macchina virtuale
grazie ad un opportuno linguaggio di comandi
• Ogni computer ha un linguaggio macchina le
cui istruzioni sono direttamente eseguibili
dalla macchina hardware
Linguaggio di comandi
• La macchina virtuale si preoccupa
della traduzione di ogni comando
impartito dall’utente nella sequenza
di comandi che realizzano la stessa
funzione e sono riconosciuti dalla
macchina fisica sottostante
Linguaggio di comandi
• Per esempio: interfaccia testuale
– 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:>
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
Linguaggio di
comandi
(interfaccia
grafica)
• Per esempio: interfaccia grafica
– Nei calcolatori con interfaccia grafica molti
comandi sono impartiti mediante l’interazione
attraverso il mouse e la tastiera
– 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
Linguaggio di comandi
(interfaccia grafica)
Microsoft
Windows
Linguaggio di comandi
(interfaccia grafica)
Mac OSX
di Apple
Linguaggio di comandi
(interfaccia grafica)
Linux
Il software di base
• Software di base: realizza la macchina
virtuale
• Gli strumenti software che permettono
all’utente (e ai programmi applicativi)
– di interagire con l’elaboratore in modo semplice
(funzioni di traduzione tra linguaggi diversi) e
– di gestire le risorse fisiche
• Il sistema operativo fa parte del software di
base
Il sistema operativo
• È il componente software fondamentale
di un computer
• È formato da un insieme di programmi
che interagiscono tra loro per realizzare
due obiettivi
– Creare un ambiente virtuale per
l’interazione con l’utente
– Gestire efficientemente l’elaboratore e i
suoi dispositivi
Il sistema operativo
• Dal punto di vista strutturale il
sistema operativo è formato da
un insieme di livelli, che
formano la cosi detta “struttura
a cipolla”
• Idealmente l’utente è ignaro di
tutti i dettagli delle operazioni
svolte dai livelli inferiori della
gerarchia e conosce solo le
operazioni del livello più alto
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
• In genere questa parte del sistema operativo
comprende:
–
–
–
–
–
–
I programmi per la gestione del processore (kernel)
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
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
• I virus possono essere trasmessi da un
elaboratore ad un altro
SISTEMI OPERATIVI e CPU
• 1975 : Arriva Altair; Gates e Allen scrivono una versione
di BASIC per questo computer; nasce Electric Pencil , il
primo wordprocessor per PC; Steve Jobs (fondatore e CEO
di Apple) e Steve Wozniac costruiscono il primo computer
Apple;
• 1976 : ARPANET conta 111 computer connessi;
• 1977 : Apple presenta Apple II che supportava i colori;
• 1981 : IBM presenta il suo primo PC ;
• 1982: Intel lancia 80286, Arpanet adotta tcp/ip di Berkeley;
nasce il CD grazie a Sony e Philips;
• 1983: Apple presenta Lisa, un computer con interfaccia
totalmente grafica;
• 1984: Apple lancia Machintosh, Microsoft presenta un
antenato di Windows (Interface Manager);
• 1985: Intel lancia il 386, Microsoft presenta Windows 1.0,
• 1987: IBM e Microsoft presentano OS/2 e IBM crea la scheda
grafica VGA
• 1989: Intel presenta il 486 a 25 Mhz;
• 1990: Windows 3.0 ;
• 1991: nasce MS-DOS 5.0 , Apple presenta System 7.0
Machintosh;
• 1992: Intel produce il 486DX2 a 25/50 Mhz, Windows 3.1
• 1993: Windows NT 3.1 ; cresce Linux e nasce Mosaic 1.0;
• 1994: Apple produce i Power Machintosh , Intel presenta il
486 DX4 35 , nasce Netscape Navigator 1.0;
• 1995: Nasce Windows 95 , e scoppia quasi una “rivoluzione” ;
• 1996: Intel Pentium a 200 Mhz, Windows NT 4.0
• 1998 : Pentium II ; Windows 98 ;
• 1999: Pentium III , AMD presenta Athlon e Apple il G4;
• 2000: Windows 2000; Athlon arriva a 1 Ghz , Intel presenta il
Pentium 4;
• 2001: Esce la nuova versione di Windows a 32 bit: "Windows
XP, dove "Xp" sta per "EXperience“
Con tanto di cerimonia ufficiale viene dato l'addio al glorioso,
ma ormai obsoleto, MS-Dos.
Si apre una nuova era, la nuova versione di Windows predilige
la stabilità e la sicurezza del sistema,dispone di strumenti
contro la pirateria informatica.
Pentium 4 a 2 Ghz;
• 2002: Il Pentium 4 aumenta di frequenza , AMD presenta
Athlon XP a 0,13 micron ed Opteron si diffondono nuovi
standard (USB 2.0 , Serial ATA ecc.).
•
•
INTEL PENTIUM 4 Extreme Edition
Frequenza CPU 3,2GHz - 3.73GHz
Uscita: 3 Novembre 2003
•
AMD Sempron (architettura K8)
Frequenza CPU 1400mhz - 2200mhz
Uscita: giugno 2004
•
INTEL Celeron D
Frequenza CPU 2,26GHz - 3,46GHz
Uscita: 24 Giugno 2004
INTEL PENTIUM D
Frequenza CPU 2.66GHz - 3.6GHz
Uscita: Maggio 2005
AMD Athlon 64 X2 (architettura K8)
Frequenza CPU 2000mhz - 3200mhz
Uscita: 1 Agosto 2005
•
•
•
INTEL Core 2 Duo
Frequenza CPU 1.06GHz - 3.3GHz
Uscita: 27 Luglio 2006
INTEL Core 2 Quad
Frequenza CPU 2.4GHz - 3.0 GHz
Uscita: 8 Gennaio 2007
• Nel 2007 esce Windows Vista
•
•
AMD Phenom (architettura K10)
Frequenza CPU 1800mhz - 2600mhz
Uscita: novembre 2007
INTEL Core i7 Extreme
Frequenza CPU 3.2Ghz
Uscita: 17 Novembre 2008
• Nel 2009 esce Windows 7
Microsoft MS-DOS
Windows 1.0 2.0 3.0
Word 6.0-Excel 5.0
Windows 95
Office 97
Word-Excel-Access
Sistemi e pacchetti
•
•
•
•
•
•
•
•
•
Windows 95
Windows NT
Windows 98
Windows 2000
Windows ME
Windows XP
Windows Server 2003
Windows Vista
Windows 7
• Office 97
• Office 2000
• Office XP
• Office 2003
• Office 2007
• Office 2010