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