Windows e sistemi a finestre
Prima che nascessero i sistemi operativi a finestre erano
nati alcuni programmi DOS con sistemi a menu (i primi menu a tendina) per la
selezione delle operazioni e le prime finestre concepite come riquadri di
dialogo. Il programma utilizzava l'interfaccia a caratteri riempiendo lo schermo
con caratteri detti grafici, ma facenti parte sempre del set ASCII (caratteri
della tastiera). In questo modo venivano
riprodotti riquadri e sfondo, pulsanti e caselle di selezione, con uno sforzo
notevole dal punto di vista del programmatore. Successivamente si è introdotto
l'uso del mouse, fino ad allora nato e utilizzato
solo per le applicazioni di grafica avanzata (CAD, disegno artistico).
Nasceva così un vero e proprio sistema nuovo di lavorare. Il punta e clicca, la finestra per i messaggi (dette di dialogo) e le prime
finestre di lavoro.
Ben presto pulsanti, trascinatori ed altri elementi visuali sarebbero divenuti
pane quotidiano di chi usa il computer. C'erano le basi per Windows (anni
'82-'85). Verso le fine del 1986 viene concepito il primo Windows, un sistema
totalmente grafico basato su finestre e icone, che
non faceva ancora nulla, ma era una valida base per tutto ciò che oggi è il
Sistema Operativo.
A dire il vero per i programmatori scrivere Windows è stato un grosso passo in
avanti. Benché si potessero eseguire solo il file manager, l'orologio, l'agenda
ed il taccuino, il sistema era composto da un desktop (scrivania)
nel quale erano poggiati i vari oggetti (le icone), le varie finestre di
messaggio e le finestre in cui scrivere (i fogli). Era nato un sistema che riproduceva a video le
condizioni di un ufficio. E non meno importante era nata la modularità
con la quale i programmi funzionavano, perché le varie finestre di programmi
diversi avevano i medesimi bordi, pulsanti e tante altre caratteristiche
identiche. Questo fu permesso grazie all'introduzione delle DLL:
Dynamic Link Library (librerie a collegamento dinamico), le quali non erano
altro (e lo sono ancora) che porzioni di programma (dette routine)
scritte separatamente, richiamabili da altri programmi e racchiuse in un unico
file. Così, per esempio, il programma della calcolatrice richiamava la funzione
'creafinestra' specificando punto iniziale, dimensioni, colore dello
sfondo, mentre il programma dell'agenda richiamava la stessa procedura 'creafinestra'
con parametri diversi (un altro punto, altre dimensioni, un altro colore).
Oltre a snellire di molto il programma principale, i riferimenti alle procedure
e funzioni esterne avevano il compito di liberare la memoria non
più necessaria nel momento in cui la procedura fosse terminata (ecco perché
dinamiche). Non dimentichiamo che la memoria fisica installata nei computer di
quel periodo era molto limitata ed i programmatori facevano i salti mortali per
creare un programma sempre più attento a non sprecare spazio, ma nel contempo
gettavano solide basi per la realizzazione di sistemi in cui coesistono e si
interconnettono vari programmi anche totalmente diversi tra loro. Obiettivo
molto lontano, ma centrato fin dall'inizio.
La prima versione di Windows
veramente usabile è stata la 3.0, soppiantata circa sei mesi dopo dalla storica
versione 3.1. In queste versioni era presente il Program Manager, uno strumento
tramite il quale era possibile creare le icone di collegamento ai programmi
installati e gruppi di programmi (tutto quello che adesso richiamiamo dal
pulsante start). Le nuove funzionalità di questi sistemi erano:
l'introduzione del pannello di controllo, dal quale era possibile modificare le
impostazioni di Windows, il supporto alla prima multimedialità (schede audio),
l'emulazione MS-DOS, per poter eseguire alcuni
programmi DOS in finestra o a schermo intero senza uscire da Windows. C'è da
ricordare che Windows stesso era un programma scritto per MS-DOS e non un
sistema operativo. Fu quindi denominato ambiente operativo.
La vera grande rivoluzione che Windows ha apportato al mondo informatico è stato
il multitasking. Questo è un sistema,
grazie al quale su di uno stesso computer possono essere eseguiti
contemporaneamente più programmi (che adesso vengono chiamati task).
Il microprocessore, però, è sempre uno solo. Come è
stata allora possibile la realizzazione di un simile sistema? Introducendo
diversi elementi nuovi:
- Allocazione dinamica della memoria. Quando vi sono più programmi caricati nella stessa memoria uno dopo l'altro ed uno di questi viene chiuso, la memoria deve essere liberata per lasciare spazio ad un eventuale altro programma da aprire. Ma spesso così facendo si creano dei 'buchi' di memoria libera tra zone di memoria allocata (occupata). La memoria disponibile diventa così frammentata, non contigua. Una nuova funzione studiata dai programmatori di Windows fa in modo che Windows stesso riordini la memoria spostandovi i dati in essa contenuti e compattando così le informazioni in spazi contigui;
- Utilizzo della memoria virtuale. I dischi hanno sempre avuto capacità maggiori rispetto alla memoria RAM installata nel sistema. Di conseguenza i programmatori di Windows hanno pensato di poter sfruttare questo spazio per sopperire alla scarsità di spazio disponibile nella memoria fisica durante le operazioni di passaggio tra un programma aperto e l'altro. Vengono così creati i file temporanei ed un nuovo file anch'esso temporaneo chiamato di swap o swap file (file di scambio) in cui vengono inserite le informazioni che non potrebbero risiedere in memoria per ragioni di spazio, ma che vengono richiamate al momento dell'effettivo bisogno scambiandole con quelle che in memoria al momento non servono. Avviene quindi l'operazione di caricamento delle prime informazioni e lo scaricamento di quelle nuove, le quali saranno ricaricate quando l'utente (ignaro di tutto questo processo) tornerà al primo programma aperto. Una volta esaurito l'utilizzo di questi file essi vengono eliminati (ecco perchè temporanei) deallocando (rendendo libero) lo spazio occupato sul disco;
- Rilascio del controllo al sistema operativo. I
programmi Windows hanno al loro interno delle istruzioni che rilasciano il
controllo al sistema che li ha chiamati. Queste pongono in attesa il programma
stesso permettendo al sistema di eseguirne un altro. Per esempio durante una
operazione lunga di calcolo vengono inserite ogni n cicli delle
istruzioni di rilascio, in modo che l'utente nel frattempo possa utilizzare un
altro programma, magari rallentato nelle proprie funzioni, ma non bloccato. Lo
stesso avviene quando deve essere visualizzato un messaggio o si attende la
decisione di un utente. Se per esempio stiamo copiando un dischetto ed intanto
inserendo dei dati nell'agenda, tra una pressione e l'altra dei tasti il
dischetto continua a inviare e/o ricevere informazioni.
Il programma in esecuzione su cui si sta lavorando viene detto attivo
o in primo piano. L'analogia è sempre quella della scrivania su
cui sono poggiati diversi fogli uno sopra l'altro. Nel caso del programma che
invece sta eseguendo operazioni in secondo piano e quindi inattivo,
viene chiamata esecuzione in background
(sullo sfondo).
Windows 3.0 e 3.1 lavoravano scambiando i dati tra
microprocessore e applicazioni (programmi), memoria, dischi, ed altre
periferiche con un sistema a 16 bit, mentre la versione 3.11 workstation creata
per eseguire programmi in rete aveva alcune funzionalità in grado di scambiare
dati a 32 bit, introducendo nuovi codici di controllo per rendere più affidabile
la trasmissione e l'interscambio dei dati.
Windows NT (network), invece, interamente studiato per lavorare in rete fu
riscritto quasi totalmente a 32 bit e reso molto più stabile e sicuro, ma
richiedeva ingenti quantità di memoria e capacità di calcolo più elevate. Era
quindi destinato al solo utilizzo nelle aziende e non sui computer domestici.
Alcune cose, però, dovevano ancora essere migliorate e questo scopo si raggiunse solo con l'avvento dei nuovi sistemi da Windows 95 in avanti (argomento del capitolo successivo). Vediamo alcuni aspetti che limitavano i sistemi:
- Utilizzo di uno spazio comune di memoria. In questo modo i dati erano accessibili da parte di tutte le applicazioni, quindi poco protetti sia dal punto di vista della privacy che dal punto di vista della sicurezza, perchè un errore di indirizzo causato da un programma poteva rovinare i dati che stava utilizzando un altro programma;
- Gestione della sospensione delle applicazioni. Eseguendo molti programmi insieme i programmi che impegnavano di meno il processore venivano rallentati in modo esagerato e dovevano comunque attendere che gli altri completassero le operazioni per proseguire. L'impressione era tale che sembrava andare tutto 'a singhiozzo';
- Blocco delle applicazioni in errore. Secondo voi cosa succedeva quando un programma non riusciva a proseguire? era tutto bloccato;
- Il sistema era ancora orientato ai programmi. Vuol dire che per scrivere una lettera bisognava cercare il programma di scrittura, eseguirlo e scrivere. Per disegnare bisognava cercare il programma adeguato di disegno, eseguirlo e disegnare, mentre oggi è possibile aprire un file grafico o una lettera direttamente senza sapere quale programma li ha generati.
Torna alla Home page Torna a Nozioni di base Torna a Software