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