PRIMA PARTE
Come diventare l’uomo più ricco del mondo
Gari Kildall
Gary
Kildall (Seattle, 19 maggio 1942 – Monterey, 11 luglio 1994) nacque e crebbe a
Seattle, Washington, dove la famiglia conduceva una scuola di viaggi per mare.
Si iscrisse all'università di Washington con l'idea di diventare un insegnante
di matematica, ma poco a poco si interessò all'informatica. Dopo la laurea fu
chiamato alla leva, che svolse in marina presso la "Naval Postgraduate
School" (NPS) di Monterey in California.
Abitando a
poche ore di auto dalla Silicon Valley, Kildall venne a conoscenza del primo
processore commerciale, l'Intel 4004. Ne comprò uno e cominciò a scriverne dei
programmi. Al fine di acquisire maggiori informazioni, nel tempo libero lavorò
da Intel come consulente.
Killdal
ritornò per un breve tempo all'università e finì il dottorato di ricerca in
informatica nel 1972, dopodiché riprese a insegnare presso l'NPS.
Pubblicò un articolo scientifico che introduceva la teoria dell'analisi del
flusso di dati, oggi usata nei compilatori ottimizzanti, e continuò a dedicarsi
ai microcomputer e alla tcnologia dei floppy. Intel gli prestò dei sistemi
basati su processori 8008 e 8080, e nel 1973 sviluppò il primo linguaggio ad
alto livello per microprocessori, denominato PL/M. Creò CP/M lo stesso anno al
fine di permettere all'8080 di controllare un floppy drive, combinando per la
prima volta tutti i componenti essenziali di quello che era un calcolatore elettronico
dell’epoca, realizzando di fatto il cosiddetto
microcomputer. Mostrò CP/M a Intel, ma non si dimostrò interessata al progetto.
Kildall, quindi, decise di commercializzare per proprio conto il linguaggio
PL/M.
Kildall e
la moglie Dorothy fondarono una compagnia, originariamente chiamata
"Intergalactic Digital Research", più tardi ridenominata
"Digital Research, Inc.", per vendere il CP/M
attraverso annunci pubblicitari sulle riviste per hobbisti. L’attività
commerciale di Digital Research iniziò con la vendita di una versione del CP/M
per IMSAI 8080, un popolare clone di Altair 8800. Sempre più produttori fecero
lo stesso, così che il sistema operativo di Kildall divenne lo standard de
facto, arrivando a supportare un numero sempre più grande di configurazioni
hardware. Per rispondere al problema, Kildall fu tra i primi a fare ricorso al
concetto di BIOS, un insieme di semplici programmi memorizzati nell'hardware
del computer, che permettevano a CP/M di girare su differenti sistemi senza
modifiche. All'apice della popolarita', CP/M girava su 3000 differenti modelli
di computer e la compagnia aveva un fatturato annuo di 5,4 milioni di dollari.
Per la
produzione del suo Personal Computer nel 1980, IBM cercò un sistema operativo
da abbinare alle sue macchine. Pare che, in un primo momento, IBM si rivolse a
Microsoft. Non è chiaro come mai il colosso dell’industria informatica si fosse
rivolto alla (allora) piccola software house del venticinquenne Bill Gates.
Probabilmente nemmeno IBM stessa credeva nella riuscita commerciale del
progetto. Qualche legame con la vicenda, inoltre, potrebbe averlo il fatto che
la madre di Bill Gates era presidente di una società che aveva tra i membri del
consiglio di amministrazione il numero uno di IBM. Bill Gates, comunque, non
aveva un sistema operativo da fornire ad IBM, per cui suggerì di contattare
Digital Research. IBM si mosse al fine di acquistare i diritti per
commercializzare una versione di CP/M che si sarebbe chiamata CP/M-86 per il
suo PC. L’accordo però non fu trovato. Sono state avanzate varie ipotesi a
riguardo. DRI, il cui portfolio di prodotti era limitato, era forse poco
disponibile a fornire il proprio prodotto di punta a IBM per un pagamento una tantum invece di una percentuale sulle
vendite. Oppure, forse riteneva di non poter consegnare il CP/M-86 nel tempo
richiesto da IBM, in quanto impegnata nello sviluppo di un'implementazione del
linguaggio PL/I per conto di Data General.
A quel
punto IBM si rivolse nuovamente a Gates, con il quale erano già stati raggiunti
accordi per fornire un interprete BASIC ed altri programmi per il PC, con il
compito di trovare un sistema operativo. I fatti seguenti sono avvolti da
ulteriore mistero. Sembra che qualche settimana dopo aver ricevuto il nuovo incarico
da IBM, Microsoft comprò dalla “Seattle Computer Products" (SCP) un
sistema operativo, il QDOS (Quick and Dirty Operating System) che, come fu
appurato in seguito, era stato scritto ispirandosi al CP/M di Kildall, se non
addirittura copiato direttamente. Paul Allen socio di Gates curò l'accordo con
SCP, fece adattare il QDOS all'hardware di IBM e fu venduto come PC-DOS.
Kildall
ottenne una copia del PC-DOS, lo esaminò arrivando alla conclusione che
violasse la proprietà intellettuale di DRI. Kildall minacciò di far causa ad
IBM, la quale rispose con una proposta di offrire CP/M-86 come opzione per il
PC a mo' di scambio per non finire in tribunale.
La proposta
fu accettata. Quando il PC IBM fu presentato, gli acquirenti potevano scegliere
il sitema operativo da installare, tra il PC-DOS, al prezzo di 40 dollari ed il
CP/M-86, che tra l’altro fu pronto dopo alcuni mesi, al prezzo di 240 dollari.
Microsoft ebbe la meglio e le conseguneze di quella vittoria sono note.
Dopo il
fallimento dell'accordo con IBM, Kildall lavorò su svariati progetti
sperimentali e di ricerca, come una versione di CP/M con supporto del
multitasking e un'implementazione del linguaggio Logo.
Sperava che questo, un dialetto del LISP per
finalità educative, potesse soppiantare il BASIC nelle scuole, ma non accadde.
Dopo aver assistito a una dimostrazione dell'Apple Lisa, supervisionò la
creazione della GUI di DRI, chiamata GEM desktop. In seguito il successo dei PC
abbinati al sitema operativo di Microsoft, fecero perdere alla Digital Research
il primato detenuto fino a qualche anno prima. La società di Kildall fu acquistata
da Novell nel 1991, con un accordo che permise a Kildall di guadagnare milioni.
L'8 luglio
1994 Kildall ebbe un “incidente” mentre era in un ristorante di Monterey,
California. Le circostanze rimangono poco chiare, con differenti fonti che
affermano che cadde da una sedia, dalle scale o che fu aggredito. Andò due
volte in ospedale e morì tre giorni più tardi al Community Hospital della
penisola di Monterey. Il referto del medico legale riporta come causa del
decesso un trauma al cranio. V'erano anche tracce di un infarto, ma l'autopsia
non ha determinato con certezza le cause della morte.
William
Henry Gates III
(meglio noto come Bill Gates; Seattle, 28 ottobre 1955) è il fondatore
ed ex-presidente della Microsoft. È il secondo uomo più ricco del mondo secondo
la rivista Forbes. Il suo ultimo patrimonio stimato è di 53 miliardi di
dollari, lo precede nella classifica Carlos Slim Helú con un patrimonio di 53,5
miliardi di dollari, dopo Bill Gates troviamo Warren Buffett, e Lawrence
Ellison.
Il padre
William H. Gates II era procuratore. La madre, Mary Maxwell, insegnante
all'Università dello Stato di Washington e presidente della United
Way International.
Nel 1968,
alla scuola privata Lakeside, Gates e i suoi compagni ebbero accesso per la
prima volta ad un computer, un DEC PDP-11 divenendone inseparabili. Alla fine
del 1968, Bill Gates e Paul Allen fondarono la Lakeside Programmers Group.
Ottennero dalla Information Sciences Inc l’incarico
di creare un programma di gestione paghe. Successivamente, nel 1972, Bill e
Paul fondarono la Traf-O-Data, che progettò un
computer per misurare il traffico stradale (furono pagati $ 20.000,00). La Traf-O-Data durò fino alla fine degli studi di Bill. I due
lavorarono insieme anche per informatizzare il sistema di gestione della scuola
(ricevettero $ 4.200,00). Negli ultimi anni di scuola, ebbero l'invito dalla
TRW, non solo di trovare le debolezze del loro sistema ma anche di programmare
i rimedi.
Nell'autunno
del 1973, Bill Gates si iscrisse alla Harvard
University in legge ed in più si iscrisse al corso di matematica. Ottenne risultati, ma come nelle superiori, non di rilievo.
Si perse nuovamente nel centro informatico dell'istituto. A Lakeside, Gates,
Allen e un loro amico, Paul Gilbert, esperto nel cablaggio, costruirono la loro
macchina, usando il processore 8008 da 1 kb dell'Intel. Il gruppo ebbe
l'opportunità di fare una dimostrazione del prodotto, ma dopo il fallimento
della prova, l'idea di fondare una società per produrre computer fu
abbandonata.
Alla fine
del primo anno ad Harvard, Gates convinse Allen a spostarsi per poter dare
seguito ai loro progetti. Nell'estate del 1974, ambedue trovarono lavoro alla Honeywell. Verso la fine dell'estate, Allen insistette
sempre più con l'idea che dovevano fondare una società software. Gates esitava
perché non era interessato all'informatica e voleva proseguire gli studi.
Ma, nel
dicembre 1974 uscì il primo Kit per Microcomputer Altair8800 ed entrambi realizzarono che il mercato dei computer personali stava per
esplodere e ci sarebbe voluto il software per le nuove macchine. Sulle macchine
della General Electric, con cui Gates ed Allen avevano avuto le prime
esperienze, il linguaggio usato era il BASIC. Esso era disponibile anche sulle
macchine DEC e Gates, in pochi giorni, telefonò alla MITS, società
produttrice dell'Altair, e propose del software specifico per l'Altair 8800. La
società si disse molto interessata e Gates, programmando freneticamente, in
otto settimane produsse le modifiche, mentre Allen sviluppò un simulatore
dell'Altair sul PDP-10 della scuola. Monte Davidoff si unì al gruppo e scrisse
svariati pacchetti matematici. Successivamente, Allen portò il programma alla
società per la prima prova sull'Altair; superata la prova, la società acquistò
il software, che venne commercializzato col nome di Altair BASIC. La coppia si
trasferì ad Albuquerque (Nuovo Messico), sede della MITS e, nell'aprile
1975, Gates ed Allen fondarono la Microsoft Corporation.
Lo sviluppo di Microsoft
|
|
|
Ricavi: $16.005
Impiegati: 3
|
Ricavi: $197.514.000
Impiegati: 1.442
|
Ricavi: $11,36 miliardi
Impiegati: 22.276
|
|
|
|
Ricavi: $22.496
Impiegati: 7
|
Ricavi: $345.890.000
Impiegati: 1.816
|
Ricavi: $14,48 miliardi
Impiegati: 28.028
|
|
|
|
Ricavi: $381.715
Impiegati: 9
|
Ricavi: $590.827.000
Impiegati: 2.793
|
|
|
|
|
Ricavi:
$1.355.655
Impiegati: 13
|
Ricavi: $804.530.000
Impiegati: 4.037
|
|
|
|
|
Ricavi: $2.390.145
Impiegati: 28
|
Ricavi: $1,18 miliardi
Impiegati: 5.635
|
|
|
|
|
Ricavi: $7.520.720
Impiegati: 40
|
Ricavi: $1,84 miliardi
Impiegati: 8.226
|
|
|
|
|
Ricavi: $16.000.000
Impiegati: 128
|
Ricavi: $2,75 miliardi
Impiegati: 11.542
|
|
|
|
|
Ricavi: $24.486.000
Impiegati: 220
|
Ricavi: $3,75 miliardi
Impiegati: 14.430
|
|
|
|
|
Ricavi: $50.065.000
Impiegati: 476
|
Ricavi: $4,64 miliardi
Impiegati: 15.257
|
|
|
|
|
Ricavi: $97.479.000
Impiegati: 608
|
Ricavi: $5,94 miliardi
Impiegati: 17.801
|
|
|
|
|
Ricavi: 140.417.000
Impiegati: 910
|
Ricavi: $8,67 miliardi
Impiegati: 20.561
|
Ricavi: $60 miliardi
Impiegati: 100.000
|
SECONDA PARTE
La macchina delle meraviglie
I componenti fondamentali
del personal computer
Il processore
Il
microprocessore è attualmente l'implementazione fisica della CPU più comune, utilizzata
dalla quasi totalità dei computer e in altri dispositivi digitali (come ad
esempio telefoni cellulari, stampanti, scanner). Può essere considerato il
"motore" di elaborazione dati, racchiuso in un unico circuito
integrato, in grado di leggere, elaborare e scrivere informazioni in un memoria o verso altri dispositivi digitali.
La
costruzione dei microprocessori fu resa possibile dall'avvento della tecnologia
LSI: integrando una CPU completa in un solo chip permise di ridurre
significativamente i costi dei calcolatori. Dagli anni ottanta in poi i
microprocessori sono praticamente l'unica implementazione di CPU.
Dalla loro
introduzione ad oggi, l'evoluzione del microprocessore ha seguito con buona
approssimazione la legge di Moore, una legge esponenziale che prevede il
raddoppio del numero di transistor integrabili sullo stesso chip (e quindi,
nella visione di Moore, delle prestazioni) ogni 18 mesi. L'incremento
prestazionale verificatosi dalla fine degli anni 80 però è dovuto soprattutto
al miglioramento dell'architettura dei calcolatori, attraverso l'adozione di
tecnologie RISC, come l'uso di pipeline e di gerarchie di memorie cache.
Come altre
innovazioni tecnologiche il microprocessore apparve appena la tecnologia lo
consentì dato che l'idea di integrare i componenti di una CPU in un singolo
circuito integrato era una soluzione logica. Quasi contemporaneamente infatti, iniziarono lo sviluppo l'Intel 4004, il Texas
Instruments TMS 1000, e il Garrett AiResearch Central Air Data Computer. Nel
1968 Garrett iniziò a sviluppare un sistema elettronico per competere con i
sistemi elettromeccanici utilizzati nei caccia militari. L'obiettivo del
progetto era equipaggiare il nuovo F-14 Tomcat che allora era in sviluppo. Il
progetto venne completato nel 1970 e utilizzava integrati MOS per il core
della CPU. Il progetto era semplice e innovativo e vinse sui competitori
elettromeccanici venendo utilizzato fin dai primi Tomcat. La marina americana
però considerò il progetto tanto innovativo che impedì la pubblicazione di
articoli sul sistema fino al 1997, per cui questo microprocessore rimase
semisconosciuto.
Texas
Instruments (TI) sviluppò il sistema TMS 1000 a 4 bit per applicazioni embedded
pre-programmate. Il 17 settembre 1971 annunciò il modello TMS 1802NC,
programmabile, che poteva essere utilizzato per implementare un calcolatore.
L'Intel 4004, processore a 4 bit, venne presentato il 15 novembre 1971 e fu
sviluppato da Federico Faggin e Marcian Hoff.
Processori a 8 bit significativi
Il 4004 venne
seguito nel 1972 dall'8008, il primo microprocessore a 8 bit del mondo, evoluto
successivamente nel più famoso Intel 8080 (1974).
Dal
progetto 8080 venne derivato il clone Z80 prodotto nel 1976 dalla ZiLOG,
società fondata da alcuni fuoriusciti dalla Intel, tra
i quali lo stesso Federico Faggin. Compatibile a livello di set istruzioni, lo
Z80 includeva diversi miglioramenti che lo fecero rapidamente preferire
all'8080 dagli sviluppatori. Intel reagì producendo nel 1976 una propria
versione migliorata dell'8080,
l'8085, ancora compatibile a livello binario con i
programmi scritti per l'8080.
Motorola
presentò nell'agosto del 1974 il 6800, primo processore ad adottare un registro
indice. Molto versatile, ebbe un discreto successo, oscurato in parte l'anno successivo
dal lancio del MOS Technology 6502: era ispirato all'architettura del 6800,
dotato di alcune soluzioni tecniche migliorative e soprattutto caratterizzato
da un costo drasticamente inferiore (25 USD contro i 175 UDS del 6800), cosa
che lo rese estremamente popolare. Il 6502 fu scelto, ad esempio, da Steve
Wozniak per l'Apple I nel 1976 ed il successivo Apple II nel 1977.
Motorola
reagì con il 6809 (1979), uno dei più poteti e ortogonali processori a 8 bit
mai sviluppati: non usava microcodice, e l'unità di controllo era interamente
in logica cablata. I successori del 6809 risultarono essere troppo complessi
per poter mantenere questo approccio e vennero equipaggiati con una
tradizionale unità logica a microcodice. Il progetto 6809 è alla base di una
serie molto diffusa di microcontrollori tutt'ora utilizzata in sistemi embedded.
The Western Design Center, Inc. (WDC) presentò nel 1982 il 65C02 con
tecnologia CMOS e licenziò il progetto a molte altre ditte che svilupparono i
processori alla base dei computer Apple IIc e IIe. Il processore fu utilizzato
anche in pacemaker, defibrillatori, automobili, prodotti industriali e di
consumo. WDC fu pioniera nella vendita delle proprietà intellettuali e fu
seguita anni dopo da Architettura ARM e altre ditte che basano i loro guadagni
sullo sviluppo e sulla vendita delle proprietà intellettuali.
Un altro
processore a 8 bit che ebbe una discreta fama fu il Signetics 2650 un
processore con un'architettura innovativa e un potente set di istruzioni.
Tutti
questi processori furono alla base della "rivoluzione" degli home
computer, poiché grazie al loro basso prezzo permisero la realizzazione di veri
computer ad un costo accessibile.
La memoria RAM
La RAM (Random
Access Memory o memoria ad accesso casuale) è la memoria in cui il Computer
conserva i programmi e i dati durante la loro esecuzione, quindi, maggiore è la
quantità di RAM disponibile, maggiore è il numero di programmi e files (o
finestre) che si possono tenere aperti contemporaneamente, maggiore è anche la
loro velocità di esecuzione! Il processore carica e preleva le istruzioni dalla
RAM, quando non sono presenti nella propria cache interna Poiché la RAM,
generalmente, è più lenta del processore, la sua velocità è un fattore
determinante per le prestazioni dell'intero calcolatore.
E’
costituita da piccole schede chiamate “banchi” su cui sono installati i
circuiti integrati di memoria.
Memorie
RAM. Dall'alto: DIP, SIPP, SIMM (30 pin), SIMM (72 pin), DIMM (168 pin), DDR
DIMM (184 pin)
La RAM è
una tipologia di memoria caratterizzata dal permettere l'accesso diretto a
qualunque indirizzo di memoria con lo stesso tempo di accesso, che risulta
molto basso. Per questo motivo è comune a tutte le architetture hardware, sia a
singolo processore che multiprocessore e costituisce
la memoria primaria dell'elaboratore.
Caratteristica
comune a tutti i tipi di RAM utilizzati per la memoria principale è quella di
perdere il proprio contenuto nel momento in cui viene a mancare l'alimentazione
elettrica.
Le principali caratteristiche di una
memoria sono le seguenti :
La capacità,
che rappresenta il volume globale delle informazioni (in bit) che la memoria
può stoccare;
Il tempo
di accesso, che corrisponde all'intervallo di tempo tra la richiesta di
lettura/scrittura e la disponibilità del dato;
Il tempo
di ciclo, che rappresenta l'intervallo di tempo minimo tra due accessi
successivi;
La capacità
della banda, che definische il volume di informazioni scambiato per unità
di tempo, espressa in bit al secondo;
La non
volatilità che caratterizza l'attitudine di una memoria per conservare i
dati anche senza alimentazione elettrica.
Così, la memoria
ideale ha una grande capacità con dei tempi di accesso e di ciclo
molto ridotti, una banda elevata ed è non volatile.
Tuttavia le
memorie rapide sono anche le più costose. E' la ragione per cui in un computer
si utilizzano delle memoria che si servono di
tecnologie diverse, interfacciate le une con le altre e organizzate in modo
gerarchico.
Le memorie
più rapide sono poste in quantità ridotta in prossimità del processore e le
memorie di massa (di cui fanno parte gli hard disk), meno rapide, servono a conservare
le informazioni in modo permanente.
Il BIOS
Un chip ROM che contiene il BIOS
In
informatica, il Basic Input-Output System o BIOS è un insieme di
routine software, generalmente scritte su ROM, FLASH o altra memoria RAM non
volatile, che fornisce una serie di funzioni di base per l'accesso all'hardware
e alle periferiche integrate nella scheda madre da parte del sistema operativo
e dei programmi. Nei computer IBM-compatibili la ROM del BIOS contiene anche il
POST (Power on Self Test), il primo programma che viene eseguito dopo
l'accensione.
Nei primi
PC IBM il BIOS supportava tutte le periferiche e il DOS faceva completo
affidamento su di esso per le operazioni a basso livello, ma con l'evoluzione
tecnologica successiva le capacità offerte dalle routine di gestione del BIOS (all'epoca non aggiornabili, perché scritte in ROM) divennero
rapidamente insufficienti. Attualmente i moderni sistemi operativi (Ad esempio
Microsoft Windows o Linux) non usano più il BIOS per le loro operazioni di
Input/Output ma accedono direttamente all'hardware.
Il BIOS è
scritto di solito nel linguaggio assembly nativo della famiglia di CPU
utilizzata. Attualmente il BIOS dei PC è scritto su memorie EEPROM
riscrivibili, quindi può essere modificato e aggiornato: generalmente i
costruttori mettono a disposizione nuove versioni di BIOS, il cosiddetto
firmware, per correggere difetti o aggiungere supporto a periferiche
hardware non previste inizialmente.
L'operazione di aggiornamento del firmware va eseguita con cautela, perché, se
non va a buon fine, per esempio a causa di un blackout, può rendere la scheda
madre inutilizzabile.
Il termine
BIOS apparve per la prima volta con il sistema operativo CP/M e descriveva
quella parte di CP/M che veniva caricata all'avvio e che si interfacciava
direttamente con l'hardware. I computer che utilizzavano il CP/M avevano infatti solo un semplicissimo boot loader nella ROM.
Anche le successive versioni del DOS avevano un file chiamato IBMBIO.COM
o IO.SYS del tutto analogo.
A partire
dall'introduzione dei primi IBM PC XT e compatibili nell'agosto del 1981, è il
BIOS che ha il compito di dare i primi comandi al sistema durante la fase di
avvio, detta boot process. In questa fase, dopo i controlli preliminari
sulla funzionalità dei componenti fondamentali (interrupt, RAM, tastiera,
dischi, porte), per sapere come inizializzare correttamente le periferiche
presenti il BIOS legge alcuni parametri (come l'ora e la data correnti) da una
piccola memoria RAM CMOS mantenuta alimentata anche a PC spento da una
batteria, del tutto separata dalla RAM principale del computer.
Nelle
moderne implementazioni del BIOS possono essere selezionati i più diversi tipi
di supporto per l'avvio e sono presenti numerose funzioni per la diagnostica e
la personalizzazione di importanti funzioni relative all'utilizzo della RAM,
alle opzioni per l'overclocking e sono presenti segnali di allarme in caso di
malfunzionamenti delle ventole o eccessivi aumenti della temperatura.
Modifica delle impostazioni
Per
accedere al menù di modifica del BIOS è necessario premere all'avvio
dell'elaboratore (dopo alcuni secondi che si è premuto il tasto di accensione)
un tasto o un combinazione di tasti. Se l'elaboratore
ha iniziato a caricare il sistema operativo non è più possibile (eccetto alcuni
casi) variare le impostazioni del BIOS.
Questi i tasti più usati: Canc, F2, F10, Alt-F1, F8
Una volta
entrati nel menu di impostazione del BIOS è sufficiente seguire le indicazioni.
Firmware su schede di espansione
Un computer
può integrare il proprio BIOS con altri moduli: esistono
infatti schede di espansione che possono impiegare delle estensioni
proprietarie del BIOS in aggiunta a quello collocato sulla scheda madre; di
solito la scheda Video, ad esempio, o un controller SCSI.
Il BIOS è
normalmente in grado di caricare un sistema operativo da diversi dispositivi di
memorizzazione di massa, come dischi fissi, floppy, CD-ROM, memorie USB, e
spesso anche di eseguire un boot da rete attraverso PXE.
Questo
permette di caricare un sistema operativo diverso da quello previsto
dall'amministratore di sistema, e quindi, tra l’altro, di eludere qualsiasi
politica di sicurezza basata sul sistema operativo.
La scheda video
La scheda
video è un componente del computer che ha lo scopo di generare un segnale
elettrico (output) che possa essere mostrato a video (display). A seconda del
tipo di computer questo dispositivo può essere più o meno potente: i primi
modelli di scheda video potevano visualizzare solo testo; successivamente si
sono diffuse anche schede video in grado di mostrare output grafici (immagini
non testuali) e, recentemente, anche modelli tridimensionali texturizzati
in movimento e in tempo reale. Questi ultimi tipi di scheda provvedono anche ad
elaborare e modificare l'immagine nella propria memoria interna, mentre le
schede 2D possono mostrare immagini 3D solo con l'aiuto della CPU che deve
eseguire da sola tutti i calcoli necessari.
Tipologia di collegamento alla scheda madre
Le schede
video possono essere collegate in diverso modo alla scheda madre:
- Integrate, la scheda video è ricavata direttamente
sulla scheda madre, questa soluzione viene utilizzata sulle
console e su alcuni PC, per quest'ultimi, si può avere o no la possibilità
di utilizzare una scheda video esterna
- PCI, porta parallela
- AGP, porta parallela
- PCI Express, porta seriale
Tipologia e architettura delle schede video
Una tipica
scheda video contiene un integrato grafico (o più di uno) che gestisce una
certa quantità di RAM dedicata a memorizzare i dati grafici da visualizzare e
che risiede fisicamente sulla scheda stessa. Le schede video costruite per i PC
IBM e compatibili contengono anche una ROM con un driver molto semplice
(chiamato firmware che è aggiornabile nelle moderne schede video), usato dal
BIOS per il bootstrap.
Il funzionamento di una scheda video è, in linea di massima, molto
semplice: ogni locazione di RAM grafica contiene il colore di un pixel dello
schermo, o di un carattere se la scheda sta visualizzando solo testo: il chip
grafico si limita a leggere in sequenza le locazioni necessarie (se sta
lavorando in modo testo, ogni locazione viene elaborata da un generatore di
caratteri) e a pilotare un convertitore digitale-analogico, detto RAMDAC,
che genera il segnale video che sarà visualizzato dal monitor. Dalla quantità di RAM grafica
equipaggiata nella scheda e dalla velocità (frequenza) massima del suo RAMDAC
dipendono la risoluzione massima raggiungibile e il numero di colori
contemporaneamente visibili.
Tutte le
schede video possono visualizzare anche grafica tridimensionale (al
limite anche quelle con sola modalità testo, se si accetta una rappresentazione
ASCII art), ma senza funzioni apposite di accelerazione. L'intero lavoro
di calcolo deve essere svolto, pixel per pixel, dalla CPU principale del
computer, che viene spesso completamente assorbita da questo compito: una
scheda grafica non tridimensionale si limita in pratica a visualizzare una
serie di immagini bidimensionali che le vengono inviate dal sistema.
Tutte le
schede video dispongono almeno del modo di funzionamento detto modalità testo
o a caratteri: in questa modalità lo schermo del computer è organizzato
come una griglia di caselle rettangolari in ciascuna delle quali viene scritto
un carattere tipografico, di stile prefissato da un generatore di caratteri
interno alla scheda (generalmente una sezione del chip video che si occupa di
leggere la descrizione dei vari caratteri richiesti dalla ROM o da una parte della RAM video). Per esempio, nei PC IBM originali il modo
testo era di 80 colonne per 25 righe. Una parte della RAM della scheda viene
poi usata per memorizzare il codice (in genere in codice ASCII) di un carattere
tipografico.
In questa
modalità, per far comparire sullo schermo la scritta "scheda video" è
sufficiente che il calcolatore scriva i dodici codici ASCII delle lettere
componenti (115, 99, 104, 101, 100, 97, 32, 118, 105, 100, 101, 111) in dodici
locazioni della memoria RAM della scheda video: sarà poi il generatore di
caratteri del chip grafico a tradurre i codici in serie di pixel e fare tutto
il resto.
Quasi tutte
le schede video (con pochissime eccezioni) possono poi operare anche in modalità
grafica, vale a dire senza avvalersi del generatore di caratteri interno ma
specificando l'immagine pixel per pixel. In questa modalità il colore di ogni
pixel è specificato singolarmente, in genere usando una o più
locazioni di memoria video. Questa modalità ha bisogno di molta più
memoria RAM del modo testo: una schermata in modo testo occupa generalmente da 2 a 6 KB di RAM video, mentre
in modalità grafica, a seconda della risoluzione in pixel e della quantità di
colori usati contemporaneamente serve da 10 a 1000 volte tanto. Il modo di rappresentare
del singolo pixel in memoria video varia molto a seconda del tipo di approccio
usato dal costruttore e dalla particolare modalità grafica: in genere però si
adotta una corrispondenza di tipo bitmap, cioè a mappa di bit.
Schede video con accelerazione 2D
Già da un
po' di tempo il chip grafico è in grado di eseguire alcune funzioni grafiche in
modo autonomo, senza che il processore principale debba intervenire: le schede
grafiche con questi chip sono dette 2D accelerate, perché possono
svolgere da sole una parte del lavoro di disegno che altrimenti spetterebbe al
processore. Le operazioni più comuni da implementare in hardware sono il
tracciamento di linee, di archi e di forme geometriche semplici (rettangoli,
poligoni, cerchi, ellissi) e il bit blitting, cioè lo spostamento da una
parte all'altra dell'immagine di blocchi di pixel. È in genere presente anche
un generatore di caratteri evoluto, capace di funzionare anche in modalità
grafica e di visualizzare contemporaneamente caratteri di molti font e
grandezze diverse.
Schede video con accelerazione 3D
Le schede
video con capacità grafiche tridimensionali (o 3D accelerate) hanno le
stesse capacità bidimensionali delle precedenti, e in più ne hanno una
completamente nuova, la modalità 3D appunto, in cui i pixel dell'immagine da
visualizzare vengono calcolati dalla GPU (Graphics Processing Unit),
fotogramma per fotogramma, partendo da una serie di dati geometrici forniti
dalla CPU.
In questa
modalità, la RAM video contiene una serie di
sottoimmagini, le texture. Ciascuna di queste viene associata ad una
particolare superficie bidimensionale di un modello tridimensionale di cui ne costituisce la "pelle": volendo, si possono
considerare le varie texture come delle carte da parati elettroniche.
Per ogni fotogramma (frame) da visualizzare in modalità 3D, la scheda
video riceve dal processore una serie di punti geometrici (vertici) che
specificano delle superfici in uno spazio tridimensionale con l'indicazione di
quali texture applicare alle varie superfici: la GPU si occupa di calcolare, a
partire dai dati ricevuti, se la particolare superficie sia visibile o no, e,
se visibile, la sua forma in due dimensioni (coordinate schermo); poi si occupa
di applicare la (o le) texture indicate. Il valore di ogni pixel viene quindi
calcolato a partire da quali e quanti texel (i pixel delle texture) sono
contenuti in esso.
Per fare
tutto questo, le schede video 3D accelerate sono equipaggiate con una grande
quantità di RAM, e ricorrono in modo massiccio al calcolo parallelo:
l'integrato principale è un vero e proprio processore e viene detto GPU.
Uscite video
Le
connessioni più diffuse tra la scheda video e il monitor (o televisore) sono:
- Video Graphics Array (VGA): standard
analogico introdotto nel 1987 e progettato per monitor CRT, ma utilizzato,
per compatibilità, anche da diversi monitor LCD, assieme all'interfaccia
DVI; ha diversi problemi, come il rumore elettrico, la distorsione
dell'immagine e alcuni errori nella valutazione dei pixel.
- Digital Visual Interface (DVI):
introdotto nei monitor LCD, viene usato anche da TV al plasma e
videoproiettori. Risolve i problemi del SVGA
facendo corrispondere a ogni pixel dell'output un pixel dello schermo, in
quanto ne riconosce la risoluzione nativa.
- S-Video: utilizzato per la connessione a TV, lettori DVD,
proiettori e videoregistratori.
- High-Definition Multimedia Interface (HDMI):
rilasciato nel 2003, questo standard, che supporta le risoluzioni ad alta
definizione, ha come obiettivo la sostituzione di tutti gli altri
standard.
- DisplayPort: rilasciato nel 2006, si presenta come
concorrente dell HDMI. È usato sia per connessioni con monitor che con
sistemi home theatre.
Altre
uscite video (ormai obsolete) sono:
- Video composito: uscita analogica con
risoluzione molto bassa, che fa uso di un connettore RCA
- Video a componenti: ha tre cavi, ognuno con un
connettore RCA, utilizzato per i proiettori.
L’hard disk
Interno di un disco rigido
L'hard
disk drive (termine di origine inglese), in sigla HDD, normalmente
abbreviato in hard disk, raramente anche chiamato fixed disk drive
(sinonimo sempre di origine inglese), in sigla FDD, anche chiamato disco
rigido (traduzione letterale di "hard disk") o disco fisso
(traduzione letterale di "fixed disk"), è una tipologia di
dispositivo di memoria di massa che utilizza uno o più dischi magnetici per
l'archiviazione dei dati.
Il disco
rigido è una delle tipologie di dispositivi di memoria di massa attualmente più
utilizzate. È infatti utilizzato nella maggior parte
dei computer e anche in altre tipologie di dispositivi elettronici come ad
esempio il PVR (Personal Video Recorder).
Il disco
rigido ha da poco tempo un serio concorrente, il disco a stato solido,
destinato probabilmente in futuro a soppiantarlo.
Il disco rigido
è costituito fondamentalmente da uno o più dischi in rapida rotazione,
realizzati in alluminio o vetro, rivestiti di materiale ferromagnetico e da due
testine per ogni disco (una per lato), le quali, durante il funzionamento
"volano" alla distanza di poche decine di nanometri dalla superficie
del disco leggendo e scrivendo i dati. La testina è tenuta sollevata dall'aria
mossa dalla rotazione stessa dei dischi che può superare i 15.000 giri al minuto; attualmente i valori standard di rotazione sono
5.200, 5.400, 7.200, 10.000 e 15.000 giri al minuto.
Coppia di
testine posizionate all'estremità dei due braccetti mobili di lettura, mancando
il disco, risultano a contatto una con l'altra
L'hard
disk è stato inventato nel 1956 dall'IBM. Il primo prototipo era costituito
da 50 dischi del diametro di 24
pollici (circa 60 cm) e poteva immagazzinare circa 5 megabyte
di dati. Era grande quanto un frigorifero, con un peso di oltre una tonnellata.
La denominazione originaria era fixed disk (disco fisso), il termine hard
disk (disco rigido) nacque intorno al 1970 per contrapposizione coi neonati
floppy disk (dischetti).
Nel 1963
sempre IBM ideò il meccanismo di sollevamento della testina mediante l'aria.
Nel 1973 IBM introdusse il modello 3340 Winchester, così denominato per
analogia con il popolare modello di fucile ".30-30 Winchester" poiché
era dotato di due dischi da 30 MB l'uno; questo nome entrò nell'uso comune come
sinonimo di disco rigido perché questo modello fu il predecessore di tutti i
dischi rigidi moderni.
Caratteristiche prestazionali
I dischi
rigidi moderni hanno velocità di lettura e scrittura dei dati, di diversi
ordini di grandezza, al di sotto delle prestazioni della RAM. Per questo motivo
il disco rigido è spesso la causa principale del rallentamento di un computer
soprattutto quando, a causa di una memoria RAM inferiore alla memoria virtuale
richiesta dai programmi in esecuzione, il sistema operativo è costretto ad
effettuare un gran numero di operazioni di swap tra il disco e la
memoria centrale.
Le
caratteristiche principali di un disco rigido sono:
La capacità
è in genere espressa in gigabyte (GB). La capacità può essere aumentata
incrementando la densità con cui le informazioni vengono memorizzate sui
piattelli che compongono l'harddisk o impiegandone un numero maggiore.
Il tempo
di accesso è la variabile più importante nel determinare le prestazioni
di un disco rigido. Si tratta del tempo medio necessario perché un dato,
residente in un punto casuale del disco, possa essere reperito. Il tempo
impiegato dipende dalla velocità della testina a spostarsi sulla traccia dove
risiede il dato e dalla velocità di rotazione del disco; maggiore è la velocità
e più breve è il tempo impiegato dal dato a ripassare sotto la testina nel caso
questa non fosse arrivata in tempo sul dato, durante la rotazione precedente (latenza
rotazionale). Il tempo di accesso tipico per un disco rigido da 7200 rpm è
di circa 9 millisecondi. Per uno da 15.000 rpm è inferiore a 4 ms.
La velocità
di trasferimento è la quantità di dati fornita dall'harddisk in un
determinato tempo (in genere si prende 1 secondo come riferimento). Usare
dischi che ruotino più velocemente o incrementare la densità di memorizzazione
porta ad un miglioramento diretto della velocità di trasferimento. Va ricordato
che la velocità di trasferimento cala in modo proporzionale al numero di
discontinuità nei settori che compongono il file ricercato (vedi frammentazione
(informatica)).
Oltre alle
tre viste sopra, altre caratteristiche influenzano in misura minore le
prestazioni di un disco rigido. Tra queste:
Il buffer
è una piccola memoria cache (in genere di alcuni megabyte) posta a bordo del disco
rigido, che ha il compito di memorizzare gli ultimi dati letti o scritti dal
disco. Nel caso in cui un programma legga ripetutamente le stesse informazioni,
queste possono essere reperite nel buffer invece che sul disco. Essendo il
buffer un componente elettronico e non meccanico, la velocità di trasferimento
è molto maggiore, nel tempo, la capacità di questa memoria è andata sempre
aumentando, attualmente 32 MB sono una dimensione abbastanza usuale.
L' interfaccia di collegamento tra il disco rigido
e la scheda madre (o, più specificatamente, il controller) può influenzare le
prestazioni perché specifica la velocità massima alla quale le informazioni
possono essere trasferite da o per il disco. Le moderne interfacce tipo ATA133,
Serial ATA o SCSI possono trasferire centinaia di megabyte per secondo, molto
più di quanto qualunque singolo disco fisso possa fare, e quindi l'interfaccia
non è in genere un fattore limitante. Il discorso può cambiare nell'utilizzo di
più dischi in configurazione RAID, nel qual caso è importante utilizzare
l'interfaccia più veloce possibile, come per esempio la Fibre Channel da 2
Gb/s.
Organizzazione fisica della memorizzazione dei dati
Struttura
della superficie di un piatto: A) Traccia, B) Settore, C) Settore di una
traccia, D) Cluster, insieme di settori contigui
I dati sono
generalmente memorizzati su disco seguendo uno schema di allocazione fisica ben
definito in base al quale si può raggiungere la zona dove leggere/scrivere i
dati sul disco. Uno dei più diffusi è il cosiddetto CHS acronimo per il
termine inglese Cylinder/Head/Sector (Cilindro/Testina/Settore); in
questa struttura i dati sono memorizzati avendo come indirizzo fisico un numero
per ciascuna delle seguenti entità fisiche:
un disco
rigido si compone di uno o più dischi paralleli, di cui ogni superficie, detta
"piatto" e identificata da un numero univoco, è destinata alla
memorizzazione dei dati.
ogni
piatto si compone di numerosi anelli concentrici numerati, detti tracce,
ciascuna identificata da un numero univoco.
l'insieme
di tracce alla stessa distanza dal centro presenti su tutti i dischi è detto cilindro.
Corrisponde a tutte le tracce aventi il medesimo numero, ma
diverso piatto.
ogni
piatto è suddiviso in settori circolari, ovvero in "spicchi" radiali
uguali ciascuno identificato da un numero univoco.
L'insieme
di settori posti nella stessa posizione in tutti i piatti.
Su ogni
piatto è presente una testina per accedere in scrittura o in lettura ai dati
memorizzati sul piatto; la posizione di tale testina è solidale con tutte le
altre sugli altri piatti. In altre parole, se una testina è posizionata sopra
una traccia, tutte le testine saranno posizionate nel cilindro a cui la traccia
appartiene.
Questa
struttura introduce una geometria fisica del disco che consta in una
serie di "coordinate" CHS, esprimibili indicando cilindro, testina,
settore. In questo modo è possibile indirizzare univocamente ciascun blocco di
dati presente sul disco. Ad esempio, se un disco rigido si compone di 2 dischi
(o equivalentemente 4 piatti), 16384 cilindri (o equivalentemente 16.384 tracce
per piatto) e 16 settori di 4096 byte per traccia, allora la capacità del disco
sarà di 4×16384×16×4096 byte, ovvero 4 GB.
Il settore
è l'unità più piccola della formattazione di basso livello che riguarda la
struttura fisica del disco rigido (formattazione fisica da non
confondere con la formattazione logica che riguarda la creazione delle tabelle
di allocazione dei file [FAT] necessarie al sistema operativo per
gestire e navigare i dati presenti nelle cartelle del disco). Generalmente i
settori sono raggruppati dal punto di vista logico in cluster per motivi di efficienza,
quindi quando parliamo di cluster ci riferiamo a un gruppo di settori. Si
ricordi che un file occupa sempre almeno un cluster. Per accedere a un settore
bisogna specificare la superficie (platter), la traccia e il settore stesso. Il
settore non è un semplice spazio sul disco memorizzabile, ed ha dimensione
variabile tra 32 byte e 4 KB, solitamente 512 byte.
Superficie
di un hard disk danneggiata dal crash di una testina. Notare, in basso a
sinistra, le dimensioni di un granello di polvere.
Il suono emesso
da un disco è composto da un sibilo continuo, generato dalla rotazione dei
dischi e da un crepitio intermittente, di cui ogni clic corrisponde ad
un movimento della testina. Anomalie nei suoni emessi dall'hard disk sono
indicativi di severi danni meccanici,
L'interfaccia
più comune è quella IDE (prima versione dello standard ATA), poi evolutasi in
EIDE e Serial ATA. Un cavo piatto, solitamente grigio, è usato per connettere
il disco rigido alla scheda madre. Spesso il cavo ha un terzo connettore per
poter usare un altro disco (o altre periferiche ATA come i lettori cd) con lo
stesso cavo. In tal caso, per poter distinguere tra le due periferiche, esse
devono essere configurate una come master e una come slave.
Una scheda
madre ha solitamente due connettori IDE (primario e secondario,
detti spesso canali e impropriamente controller), ad ognuno dei
quali è possibile connettere due unità per un totale di quattro periferiche.
Non mancano schede madri con quattro connettori. Il cavo IDE non porta
l'alimentazione elettrica necessaria per il funzionamento delle periferiche,
che quindi devono essere connesse all'alimentatore per mezzo di un cavo
separato.
Tipicamente,
un personal computer ha un disco fisso come master sul canale IDE primario, ma
a seconda del sistema operativo utilizzato esso può risiedere su una qualunque
interfaccia IDE.
Hard disk
con connettore Serial ATA (il secondo da sinistra)
Negli
ultimi anni con l'evoluzione delle periferiche di memorizzazione l'interfaccia
ATA ha mostrato i suoi limiti tecnologici e quindi è stata sostituita da una
nuova versione chiamata serial ATA. Questa nuova interfaccia ha come principale
caratteristica quella di trasmettere i dati in modo seriale e quindi invece di
utilizzare molteplici fili per trasmettere i dati ne utilizza solo due, uno per
trasmettere i dati e uno per ricevere, oltre a due fili per le masse. In realtà
il cavo è a sette fili dato che lo standard utilizza anche alcuni fili come
segnali di controllo.
La scheda madre
La scheda
madre, anche conosciuta come motherboard o mainboard
(sinonimi mutuati dall'inglese), in sigla MB, è una parte fondamentale
di un moderno personal computer: raccoglie in sé tutta la circuiteria
elettronica di interfaccia fra i vari componenti principali e fra questi e i
bus di espansione e le interfacce verso l'esterno. È responsabile della
trasmissione e temporizzazione corretta di molte centinaia di segnali diversi,
tutti ad alta frequenza e tutti sensibili ai disturbi: per questo la sua buona realizzazione
è un fattore chiave per la qualità e l'affidabilità dell'intero computer.
È composta
di un circuito stampato estremamente complesso, ricavato da un sandwich di
strati di vetronite e rame: generalmente una scheda madre può avere da quattro
a sei strati di rame. In questi sono ricavate le piste che collegano i
componenti, che devono essere calcolate con molta cura: alle frequenze
normalmente adoperate dalle CPU e dalle memorie RAM in uso oggi, infatti, la
trasmissione dei segnali elettrici non si può più considerare istantanea ma
deve tenere conto dell'impedenza propria della pista di rame e delle impedenze
di ingresso e di uscita dei componenti connessi, che influenzano il tempo di
volo dei segnali da un punto all'altro del circuito.
Su questo
circuito stampato vengono saldati una serie di circuiti integrati, di zoccoli e
di connettori; gli integrati più importanti sono il chipset che svolge la gran
parte del lavoro di interfaccia fra i componenti principali e i bus di espansione,
la ROM (o PROM, EEPROM o simile) il Socket per il processore e i connettori
necessari per il montaggio degli altri componenti del PC e delle schede di
espansione. La struttura attuale delle schede di sistema dei computer è il
frutto di un'evoluzione tecnologica che ha portato a definire una architettura di sistema valida, in linea di massima, per
tutti i sistemi di classe personal computer o di potenza paragonabile.
Parti di una scheda madre
I
componenti di una scheda madre possono variare molto a seconda di che tipo di
computer si sta considerando: nel seguito di questa descrizione faremo
riferimento a una generica scheda madre per personal computer.
CPU
Socket: è uno
zoccolo ZIF (Zero Insertion Force) che accoglie la CPU. Nelle schede embedded
(o in quelle vecchie e molto economiche) è assente, e il processore è saldato
direttamente sullo stampato.
La ROM
(può essere PROM, EEPROM, flash o altro) che contiene il BIOS della scheda
madre; è un tipo di firmware dalle funzionalità molto limitate. Le sue funzioni
sono essenzialmente tre: eseguire il controllo dell'hardware all'accensione (il
POST, Power On Self Test), caricare il sistema operativo e mettere a
disposizione di questi alcune primitive (routine
software) per il controllo dell'hardware stesso.
Northbridge: un circuito integrato che connette
il processore con la memoria RAM e con i bus di espansione principali (PCI, PCI
express e AGP); i modelli più recenti incorporano anche le interfacce ATA e/o
SATA per gli hard disk, che sono i componenti più critici per le prestazioni di
un personal computer. È l'elemento più importante del chipset e il suo
buon funzionamento è cruciale per la stabilità e la velocità della macchina.
Southbridge: è il secondo componente del chipset e il suo compito è
quello di gestire tutte le interfacce a bassa velocità: è connesso al north
bridge tramite il bus di espansione e gestisce le porte seriali e parallele,
l'interfaccia per la tastiera e il mouse, l'interfaccia Ethernet, le porte USB
e il bus SMB.
Una
batteria al litio
in grado di alimentare per anni l'orologio di sistema e una piccola quantità di
memoria RAM in tecnologia CMOS in cui il BIOS memorizza alcuni parametri di
configurazione dell'hardware.
Gli slot
d'alloggiamento della Memoria RAM (Random Access Memory) che possono essere di diversi
tipi quanti sono i tipi di RAM diffusi dalle industrie sin dai primi anni
ottanta.
Il bus
di espansione. Si
tratta di un collegamento dati generico punto-multipunto, progettato per
permettere di collegare alla scheda madre delle altre schede di espansione
alloggiate su connettori (slot), che ne estendono le capacità.
Attualmente il tipo di bus più diffuso è il bus PCI, destinato nel tempo a
lasciare strada alla sua estensione PCI Express, più veloce e più semplice
elettricamente. In linea di principio ad un bus può essere collegato hardware
di ogni tipo: schede video aggiuntive, schede audio professionali, schede
acquisizione dati, unità di calcolo specializzate, coprocessori: nella pratica
si ricorre ad una scheda di espansione su slot interno solo per hardware che ha
bisogno di una collaborazione estremamente stretta con la CPU o con la memoria
RAM; per le espansioni hardware meno critiche si
sfruttano le connessioni "lente" (USB, seriali ecc.). Fa parte del
bus PCI anche lo slot AGP, dedicato alla scheda video, che è uno slot PCI
dotato di alcuni comandi aggiuntivi separati e di una trasmissione dati
privilegiata; anche le interfacce AGP sono destinate ad essere sostituite dagli
slot PCI Express, perfettamente in grado di fare da ponte fra la scheda grafica
e il resto del sistema.
Una serie
di interfacce standard: seriali RS232,
parallela Centronics, PS/2 per mouse e tastiera, USB per altri dispositivi;
sono solitamente tutte raggruppate sul lato posteriore alto della scheda madre.
Interfacce
Shugart, ATA, SATA e/o SCSI per la gestione delle unità a disco (Disco rigido,
CD e DVD).
In molte
schede madri, specie se compatte, possono essere incluse la scheda video, la
scheda audio, interfacce di rete Ethernet e porte Firewire e USB.
L’avvio del pc
Il termine
di origine inglese boot (o bootstrap, o più
raramente booting) indica, in generale, i processi che vengono
eseguiti da un computer durante la fase di avvio, dall'accensione fino al completato
caricamento del sistema operativo. .
Il termine
originale inglese è bootstrap (la fascetta di cuoio cucita sul bordo
posteriore degli stivali per aiutarsi a calzarli), da cui la contrazione boot
(e termini derivati come booting e reboot), e fa riferimento alla
leggenda del Barone di Münchhausen e alla sua capacità
di sollevarsi in aria "tirandosi per gli stivali". Esiste il modo di
dire inglese pull yourself up by your bootstraps (tirati su da solo
prendendoti per le stringhe degli stivali), che significa "datti da
fare da solo per tirarti fuori dai guai, senza aspettare l'aiuto di
altri".
L'analogia
è con il fatto (solo apparentemente paradossale) che, durante il bootstrap,
il computer esegue un determinato processo allo
scopo di mettersi in condizione di operare (eseguire processi). In
italiano si può rendere questo concetto anche come "avvio"
("riavvio"), sebbene questi termini (come i loro corrispondenti
diretti inglese "start" e "restart") abbiano generalmente
una connotazione meno tecnica.
Dalle
espressioni boot e bootstrap anche in italiano sono derivati
alcuni termini di gergo informatico come il verbo bootare (o boottare)
o l'aggettivo bootabile (o boottabile) che si riferisce a un
supporto di memorizzazione (per esempio un CD o un altro genere di disco) dal
quale sia possibile caricare il sistema operativo all'avvio del computer (e
quindi completare il boot).
Struttura del processo di bootstrap
All'accensione
di un computer il processore resta inizialmente sospeso nello stato di RESET
dall'hardware, che tiene attivo il corrispondente ingresso della CPU finché le
tensioni di alimentazione non sono stabili. Appena il segnale di RESET viene
disattivato il processore carica la sua prima istruzione
da una locazione fissa del suo spazio di memoria, a cui di solito corrisponde
una ROM o altra memoria non volatile che porta l'esecuzione al vero inizio del
programma di firmware (o del BIOS, se si tratta di un personal IBM compatibile)
che poi prende il controllo del computer.
I passi
compiuti dal BIOS sono:
- il
POST (Power On Self Test), una serie di test diagnostici per verificare il
corretto funzionamento dell'hardware della scheda madre: se tutti i dispositivi
controllati sono funzionanti emette un "beep" dall'altoparlantino di
sistema e prosegue, ma se uno o più dispositivi fra quelli testati non
funzionano, l'altoparlante emetterà una serie di bip, lunghi o corti, in numero
variabile secondo un codice ben preciso che indica la periferica guasta e il
tipo di problema riscontrato.
-
cerca una scheda video installata, prima di tutto quella che secondo i suoi
dati interni dovrebbe essere presente, ed esegue il POST video che si trova
nella ROM interna della scheda video
-
cerca eventuali ROM di altri dispositivi installati e ne esegue le routine POST
-
esegue altri test, come il conteggio della memoria e lo stato della tastiera.
Se incontra degli errori, non ricorre al codice sonoro dei bip ma (ora può
farlo) mostra un messaggio a video
-
mostra a video una schermata di presentazione, con alcuni dati sull'hardware di
quel particolare computer
-
compila l'inventario completo del tipo di hardware installato e delle capacità riscontrate:
registra i timing della memoria, i parametri fisici dei dischi rigidi e i modi
di accesso che questi supportano, le porte seriali e parallele e le loro
velocità, se hanno una FIFO o no, eccetera
- (se
il BIOS supporta il Plug and Play) configura automaticamente i dispositivi Plug
and Play presenti e mostra un messaggio a video per ciascuno di essi
- si
interfaccia con la memoria CMOS, contenente i parametri di configurazione
suscettibili di modifica, ed esegue le relative istruzioni dopo averne
verificato l'integrità attraverso un algoritmo di checksum
-
finalmente, cerca una unità a disco da cui caricare il
sistema operativo. Se c'è, carica in RAM, all'indirizzo 0000:7C00, il primo
settore del disco (cilindro 0, testina 0, settore 1), che corrisponde al master
boot record (MBR) e l'esecuzione continua da lì.
- da
questo punto in poi il processo di bootstrap dipende dal particolare sistema
operativo installato.
L'espressione
derivata 'Reboot' (analoga a "riavviare") si riferisce alla
sequenza di spegnimento e riavvio del computer, di solito per installazioni di
software di sistema o per riparare a gravi errori hardware o software che hanno
compromesso la stabilità o le prestazioni della macchina.
Il reboot
può essere effettuato in tre modi:
-
spegnimento e riaccensione fisici (interruzione e ripristino della
alimentazione elettrica). Chiamato hard reboot, è pericoloso sia per
l'integrità dei dati che per quella dell'hardware e non dovrebbe mai essere
effettuato se non in casi estremi;
-
pressione del tasto di reset, che attiva il segnale di reset della CPU. Anche
questo è un hard reboot ed anche questa è una operazione
sconsigliabile, perché può creare perdite di dati, ma non presenta rischi per
l'hardware. L'intera sequenza di operazioni di bootstrap del BIOS e del sistema
operativo riparte da capo, tuttavia è possibile che alcuni dispositivi già in
condizioni di errore prima del reset non rispondano al BIOS durante
l'inizializzazione, costringendo ad uno spegnimento fisico della macchina.
-
riavvio con combinazioni di tasti (p.e. su PC, nella piattaforma di Windows,
attraverso la combinazione dei tasti Ctrl+Alt+Del, o nei sistemi UNIX
Ctrl+Alt+SysReq+B) chiamato soft reboot: a differenza del boot completo, nel
soft reboot non viene eseguito il POST e la ricerca di tastiera e video, ma il
processo riparte dall’inventario dell'hardware.
TERZA PARTE
Il sistema operativo
Cos'è un sistema operativo
Un Sistema
operativo è un software che fornisce all'utente una serie di comandi e servizi
per fruire al meglio della potenza di calcolo di un qualsivoglia elaboratore
elettronico, spaziando dal più piccolo dei palmari al più potente tra i
Mainframe. I Sistemi Operativi nascondono tutti i dettagli tecnici legati allo
specifico hardware e architettura rappresentando le informazioni ad un alto
livello, meglio comprensibile dall'uomo.
Prima dei Sistemi Operativi
In un
periodo delimitabile tra il 1945 e il 1955 gli elaboratori elettronici erano
ammassi di valvole termoioniche, occupavano intere stanze, erano lentissimi e
così costosi che potevano permetterseli soltanto grossi centri di calcolo o
Università. Inoltre questi calcolatori erano molto inaffidabili, in quanto le
valvole che li componevano si rompevano spesso. In questo periodo non esisteva
ancora il concetto di Sistema Operativo; infatti il
programma da eseguire veniva inserito ad ogni esecuzione in codice binario
attraverso dei primitivi lettori di schede perforate e dopo alcune ore il
risultato veniva inviato ad una stampante.
I primi Sistemi Operativi (anni '50)
Tra il 1955
e il 1965, grazie alla rivoluzionaria invenzione del transistor gli elaboratori
(chiamati Mainframe) divennero abbastanza affidabili da poter essere costruiti
e venduti in serie, anche se erano comunque macchine grosse e costosissime
tanto che gli unici acquirenti possibili erano ancora una volta i Centri di
Calcolo, le Università e le banche. Per eseguire dei programmi (o come venivano
chiamati, job), un programmatore doveva scrivere il proprio programma su
carta, trasferirlo su schede, caricarlo nel computer, attendere il termine
dell'esecuzione e la stampa del risultato. Tale operazione era molto
dispendiosa in termini di tempo Per questo motivo venne utilizzato il sistema
di dividere le tre operazioni tipiche, ovvero il caricamento dei dati, il
calcolo e la stampa su macchine distinte. Il calcolo veniva affidato ad un
calcolatore centrale costoso come l'IBM 7094 mentre gli elaboratori satelliti
erano macchine più economiche come gli IBM 1401. Il Sistema Operativo di questi
Mainframe doveva erogare pochi semplici servizi: gestione dell'input/output,
interpretazione dei comandi contenuti nelle schede controllo e controllo
dell'esecuzione di programmi, sia quelli lanciati dall'utente, sia le utilità
di sistema. I sistemi operativi tipici per questi elaboratori, per lo più
programmati in FORTRAN e in Assembler erano il FMS (Fortran Monitor System)
e l'IBSYS. Dai primi anni '60 cominciò a farsi strada il concetto di dispositivo
virtuale e astrazione. Prima di ciò un programmatore che avesse voluto
comandare ad esempio una stampante, doveva conoscere, nei minimi dettagli, il
funzionamento a basso livello della periferica, mentre a partire
dall'introduzione del concetto di periferica virtuale il Sistema Operativo
avrebbe fatto da intermediario tra utente e periferica.
Nell'aprile
del '64 l'IBM
presentò una famiglia di computer chiamata IBM System/360,
prima realizzazione di una netta distinzione tra architettura
hardware e implementazione. Tutti gli elaboratori della suite, che
andavano da piccole macchine a grandi Mainframe utilizzavano varianti dello
stesso Sistema Operativo, l'OS/360, che supportava sia il calcolo scientifico
che quello commerciale. Tuttavia questa eccessiva diversificazione tra i diversi computer rese difficile scrivere codice efficiente
che rispettasse tutti i requisiti che erano in conflitto tra di loro. Il
risultato fu un Sistema Operativo enorme e molto complesso scritto da migliaia
di programmatori. OS/360 conteneva centinaia di errori che resero necessarie
diverse revisioni. Ogni nuova versione correggeva alcuni problemi,
introducendone però degli altri. Un esauriente rapporto sull'esperienza con
OS/360 è descritto da Fred Brooks sul suo saggio sull'Ingegneria del Software
intitolato "The Mythical Man-Month: Essays on Software Engineering".
In questo e in molti altri Sistemi Operativi dell'epoca venne implementata la
multiprogrammazione, che rendeva possibile la presenza di più programmi in
memoria contemporaneamente. Questo rendeva necessaria la presenza di hardware
specializzato per proteggere i programmi dalle reciproche interferenze. Quando
un job in esecuzione aveva bisogno di effettuare una operazione
di I/O il Sistema Operativo lo sospendeva e al suo posto faceva girare un altro
job. Quando l'operazione di I/O si concludeva il primo job tornava pronto
all'esecuzione e attendeva il suo turno attendendo la sospensione di uno degli
altri. Questi sistemi ottimizzavano l'uso delle risorse disponibili ma non lo
sviluppo dei programmi, infatti il tempo che
intercorreva tra il caricamento dei programmi e la disponibilità dei risultati
era spesso di alcune ore, per cui il più piccolo errore poteva far perdere al
programmatore un sacco di tempo.
Dagli anni
sessanta esiste il concetto di timesharing: ogni utente dispone di un
dispositivo di ingresso (la tastiera) e un dispositivo di uscita (un monitor o
una telescrivente), ed ha la possibilità di inviare comandi al Sistema
Operativo ottenendo subito una risposta. Infatti in
questi sistemi con timesharing un programma resta in esecuzione fino a quando
esso richiede un'operazione di I/O, oppure occupa la CPU per più di un certo
intervallo di tempo prestabilito (detto quanto temporale).
Nel 1962
venne realizzato al MIT il primo sistema di timesharing su un IBM 7094: il
CTSS. Fu in realtà il MULTICS la vera rivoluzione. Venne sviluppato
congiuntamente dal MIT, dalla General Electric e dai
Bell Labs, ed era in grado di supportare centinaia di utenti in timesharing. La
realizzazione fu però molto più complessa del previsto, tanto che i Bell Labs abbandonarono il progetto. Tuttavia Multics
introdusse molte nuove idee che influenzarono non poco i successivi Sistemi
Operativi. Se da un lato esistevano questi supercomputer dall'altro
negli stessi anni vi fu lo sviluppo dei minielaboratori, dei quali un
importante esponente fu il PDP-1 del 1961 che costava solo 120.000$
(cioè il 5% del prezzo di un IBM 7094) e che ebbe un gran successo. Per questi
sistemi vennero progettati appositi Sistemi Operativi, il più famoso dei quali
fu senza dubbio UNIX.
UNIX fu
progettato a partire dal 1969 da un gruppo di ricercatori della
AT&T presso i Bell Labs, tra cui erano presenti Ken Thompson (che
lavorò anche al progetto Multics), Dennis Ritchie e Douglas McIlroy. Esso prese
notevole spunto dal padre Multics, e grazie all'ottimo lavoro di queste persone
divenne un sistema molto interattivo, affidabile e ricco di funzionalità, tanto
che, nelle sue varianti ed evoluzioni, tuttora domina il mercato delle
workstation. Da esso furono realizzate varianti come BSD (Berkley Software
Distribution) e sistemi Unix-like come Minix (usato in ambito didattico) e
successivamente l'ormai famosissimo Linux sviluppato dallo studente finlandese
Linus Torvalds. Oggigiorno i sistemi operativi *NIX sono conformi allo standard
POSIX (che uniforma l'interprete dei comandi e le API dei programmi), offrendo
una compatibilità reciproca di base necessaria a non stroncarne lo sviluppo.
L'arrivo del Personal Computer (anni '80)
Verso gli
anni '80 grazie alla tecnologia LSI (large scale integration) la costruzione di
chip integrati divenne massiccia e portò all'abbattimento dei prezzi
dell'hardware, facendo sorgere l'era dell'elaboratore personale o Personal
Computer. Queste macchine erano piccole, economiche ed avevano prestazioni
simili a quelle dei calcolatori medio-grandi di 10-20 anni prima. I primi
modelli erano dotati di Sistemi Operativi monoutente con accesso interattivo e
supporto al timesharing. Il più importante tra i primi Sistemi Operativi per
Personal computer era il CP/M-80 della Digital Research per le CPU 8080 / 8085
/ Z-80. Era basato sui Sistemi Operativi della Digital Equipment Corporation
specialmente quelli per l'architettura PDP-1. MS-DOS (o PC-DOS quando
fornito da IBM) era originariamente basato proprio sul CP/M-80.
Steve Jobs
era uno dei pochi che credeva nell'idea del Personal Computer. All'epoca era
difficile immaginare cosa potesse farsene una persona di un computer in casa.
Egli invece continuò per la sua strada fondando Apple Computer Inc. il 1°
Aprile 1976 assieme a Steve Wozniak e Ronald Wayne. Jobs era convinto che il
futuro del Personal Computer sarebbe stato legato
all'interfaccia grafica. E così, ispirandosi a quella sviluppata da Xerox
qualche anno prima, Apple lanciò nel 1984 Mac OS il primo sistema operativo per
Personal Computer con interfaccia grafica. Questa fu una vera rivoluzione tanto
che di lì a poco Microsoft avrebbe commercializzato Windows (20 novembre 1985)
e sarebbe nato l'X Window System in ambiente Unix
(1984). All'inizio Windows non era definibile Sistema Operativo: era piuttosto
un'estensione di MS-DOS. Fu con il rilascio di Windows 3.0, nel 1990, che
Microsoft si impose sul mercato. Oltre alle maggiori performance che garantiva
alle applicazioni rispetto alle versioni precedenti, Windows 3.0 forniva un
ambiente multitasking migliorato rispetto alle precedenti versioni di MS-DOS,
grazie all'introduzione del supporto alla memoria virtuale, e divenne così un
degno rivale del Macintosh (su cui girava Mac OS) di Apple. A partire da
Windows 3.1 fu introdotto il supporto alla multimedialità (perfezionato via via
nelle successive release), mentre con l'introduzione di Windows 95 si passò
definitivamente dal calcolo a 16 bit a quello a 32 bit.
I sistemi operativi di rete e il fenomeno Linux
A fianco di
Microsoft ed Apple il mercato delle workstation e dei grandi elaboratori era
comunque dominato da UNIX. Un fenomeno interessante che iniziò a prendere piede
da metà degli anni '80 fu lo sviluppo delle reti di calcolatori, fenomeno che
ha poi portato all'incredibile crescita di Internet. Nacquero così i Sistemi
Operativi di rete e i Sistemi Operativi distribuiti.
I primi
altro non sono che normali Sistemi Operativi ai quali vengono aggiunti i
software per il collegamento a macchine remote e quindi alle relative risorse
condivise come file e stampanti. I secondi sono Sistemi Operativi che girano su
sistemi a più processori oppure che inviano i processi da elaborare ad altri
computer della rete. Essi sono dotati di particolari politiche di scheduling
che permettono una efficace allocazione dei processi
tra le CPU disponibili. Inoltre anche il sistema di archiviazione (il file
system) è unico, anche se in realtà è distribuito tra vari nodi della rete.
Esempi
della prima classe di sistemi di rete sono tutte le versioni di Windows dalla
3.1 e NT in poi, mentre UNIX e derivati fanno parte di entrambe le categorie in
quanto supportano entrambe le tecnologie.
Nel 1991
Linus Torvalds sviluppò un kernel Unix-like, capace però di girare sulla
piattaforma x86. Così nacque Linux. Fu quando venne abbinato al Progetto GNU di
Richard Stallman, portavoce della filosofia del Software Libero, che
iniziò la fortuna di Linux in quanto la combinazione risultava, e lo è tuttora,
un sistema operativo efficiente ed affidabile.
Oggigiorno
è disponibile una grande varietà di sistemi di elaborazione dalle più disparate
dimensioni e performance a costi contenuti; questo permette una diffusione
pervasiva degli elaboratori elettronici nelle più diverse attività umane.
Inoltre sono oggi sempre più diffuse le
interconnessioni tra i vari dispositivi in modalità sia wired che wireless.
Tutte queste innovazioni hanno portato allo sviluppo di sistemi operativi per
le più svariate architetture, in particolare per dispositivi handheld
come cellulari (tra i quali non si può non citare il Symbian OS) e PDA (con
Windows Mobile e Palm OS).
Per qualunque
architettura venga sviluppato un Sistema Operativo moderno esso deve fornire il
supporto, oltre a quanto visto sinora, a molteplici esigenze quali:
Streaming
audio/video (trasmissione ed elaborazione continua di dati multimediali)
supporto
alle più diverse tecnologie di interconnessione (ad esempio Ethernet, Bluetooth
e Wireless LAN)
integrazione di tecnologie per la fruizione di contenuti su Internet
una
efficiente gestione dell'energia.
La linea di
sviluppo dei sistemi operativi moderni per il mercato consumer è principalmente
incentrato su multimedialità, connettività e risparmio energetico.