Dispensa n.8
SISTEMA OPERATIVO
Un sistema informatico è costituito da un insieme di componenti fisici (hardware) e da un
complesso di programmi che in parte vengono scritti dall’utente per risolvere specifici
problemi (software applicativo) e in parte sono codificati direttamente dal produttore
dall’hardware e dalle ditte specializzate, al fine di gestire e rendere utilizzabile in maniera
efficace e modulare l’intero sistema di calcolo (software di sistema o di base).
Il software di sistema, generalmente fornito a corredo dell’hardware, comprende il sistema
operativo e, a volte, anche i compilatori, gli interpreti ed alcuni programmi di utilità.
Il termine sistema operativo indica l’insieme di programmi che gestiscono le risorse del
calcolatore per consentire agli utenti e ai loro programmi di utilizzare un computer e le sue
periferiche in modo più comodo, efficiente e sicuro.
L’hardware è una macchina capace solo di eseguire i programmi presenti nella memoria di
lavoro: è dunque necessario prevedere un insieme di programmi (appunto il sistema
operativo) sempre presenti nel calcolatore che controllino le periferiche e i collegamenti in
rete, riconoscano ed eseguano i comandi usuali di gestione della macchina, disciplinino il
buon uso della macchina stessa da parte di più utenti contemporaneamente e consentano
l’interazione corretta di un terminale utente con i programmi dell’utente stesso.
Il system consente ad un apparente ammasso casuale di microprocessori e componenti
elettronici, di trasformarsi in un computer funzionante.
Una parte del sistema operativo (operating system) risiede nella memoria di sola lettura
(ROM) di un computer e l’altra su una memoria magnetica. Viene caricato nella memoria
centrale (RAM) subito dopo l’accensione. E’ costituito da un insieme di programmi software
che gestiscono le risorse dell’elaboratore e l’esecuzione di tutti i programmi applicativi.
La parte del sistema operativo che ha il compito di interagire con noi è detta guscio (shell). Il
software che esegue la funzione di controllo è chiamato nucleo (kernell).
La struttura e le potenzialità del sistema operativo sono caratteristiche molto importanti del
calcolatore.
Le possibilità offerte all’utente e la facilità d’uso di un calcolatore dipendono dal sistema
operativo che definisce il comportamento del calcolatore stesso nei confronti del mondo
esterno.
I sistemi operativi possono essere visti come una collezione di programmi interagenti, che
operano sull’hardware per fornire agli utenti e ai programmi applicativi un insieme di
funzionalità ad un elevato livello di astrazione.
I vantaggi principali di tale approccio sono legati alla possibilità di definire delle modalità
standardizzate di interfaccia verso il calcolatore, che consentano:
- di sviluppare i programmi in maniera più semplice, modulare ed indipendente dallo
specifico calcolatore su cui il sistema operativo viene fatto funzionare
- di permettere l’aggiornamento e l’evoluzione del software di base e dell’hardware in
maniera trasparente sia ai programmi applicativi che all’utente, ovvero senza che essi
siano influenzati dall’operazione.
Questa interfaccia fra l’utente e l’hardware serve a facilitare l’utilizzo e la gestione delle varie
risorse del sistema, consentendo di superare i problemi legati alla limitazione delle risorse e di
regolamentare il loro impiego, evitando conflitti di accesso.
Quale è l’architettura del sistema operativo?
1
Il sistema operativo è costituito da strati successivi di programmi corrispondenti ad altrettanti
livelli di astrazione rispetto alla struttura circuitale.
Si vuole intendere con questo che solo lo strato più basso utilizza direttamente le risorse
circuitali del calcolatore mentre ogni strato intermedio fa uso delle funzioni fornite dallo
strato immediatamente inferiore per realizzare a sua volta altre che potranno essere utilizzate
dallo strato immediatamente superiore.
Al livello più basso si trova il calcolatore che è in grado di lavorare ad un livello molto
elementare a cui corrispondono il linguaggio macchina ed i segnali elettrici di comando alle
periferiche.
Lo strato intermedio, a cui appartiene il sistema operativo, contiene un insieme di
primitive software in grado di controllare direttamente i dispositivi fisici e interfacciarsi
facilmente con lo strato successivo.
Sul sistema operativo si innesta la rimanente parte del software di sistema che
comprende vari programmi, fra cui l’interprete dei comandi (shell) la cui funzione è ricevere e
interpretare i comandi direttamente impartiti dagli utenti, i compilatori che servono a tradurre
in linguaggio macchina i programmi scritti ad alto livello ed una serie di programmi di utilità
(per esempio per la diagnostica e la manutenzione o per la scrittura dei file). Questi
programmi, anche se logicamente distinti dal sistema operativo, fanno normalmente parte
della medesima dotazione del software che il produttore fornisce con il calcolatore.
Lo strato più esterno, che si interfaccia direttamente con l’utente finale, contiene i
programmi per la risoluzione dei problemi applicativi di quest’ultimo.
Ogni sistema operativo ha una struttura organizzata su diversi livelli cui corrisponde una
gerarchia di elementi con le seguenti caratteristiche:
- ogni elemento è un insieme di programmi che realizza funzionalità sempre più potenti,
utilizzando i servizi forniti dal livello inferiore.
- ogni elemento ha il compito di gestire risorse specifiche del sistema, fornendo meccanismi
logici di accesso che ne regolamentino l’uso e che siano accessibili mediante modalità di
interfaccia standardizzate e indipendenti nella loro realizzazione.
- i meccanismi che garantiscono la correttezza logica delle operazioni sono separati dalle
politiche di gestione delle risorse al fine di avere maggiore flessibilità nel processo di
ottimizzazione delle prestazioni del sistema operativo.
NUCLEO = è il livello più basso ed è direttamente a contatto con la struttura circuitale del
calcolatore. Colloquia direttamente con l’hardware e si occupa sia dell’esecuzione dei
programmi sia della risposta agli input generati dalle periferiche esterne.
La sue funzioni principali sono quindi il processamento dei dati e la gestione delle interfacce
fra CPU e periferiche, cioè l’inizializzazione dei dispositivi di input/output e lo scambio delle
singole informazioni.
Uno dei requisiti fondamentali del sistema operativo è consentire a diversi utenti la
condivisione delle medesime risorse fisiche, eventualmente anche da parte di programmi
diversi. Questa esigenza comporta la necessità di mascherare ai vari utenti la presenza di altri,
regolamentando l’accesso alle risorse disponibili, offrendo in definitiva la disponibilità
virtuale di un sistema a loro completamente dedicato. Lo scopo principale del nucleo è
appunto di gestire i vari processi corrispondenti ai programmi che sono contemporaneamente
attivi, siano essi originari dalle applicazioni utente (per esempio un programma) o dedicati
alla gestione dell’intero sistema informatico (per esempio il collegamento in rete di più
terminali).
2
GESTORE DELLA MEMORIA = è il livello che si occupa di gestire la memoria di lavoro
disponibile, assegnando spazi di memoria ai programmi che ne fanno richiesta e riciclando gli
spazi che i programmi rilasciano dopo averli utilizzati.
Fa uso del nucleo per conoscere le dimensioni di memoria disponibile e per gestire particolari
strutture di memoria eventualmente presenti (ad esempio memoria cache).
E’ particolarmente importante in sistemi che consentono la multiprogrammazione, poiché in
questo caso è il responsabile dell’efficienza di caricamento da memoria di massa dei vari
programmi che gli utenti vogliono eseguire contemporaneamente.
Ha il compito di destinare opportunamente la memoria centrale, al fine di risolvere le esigenze
dei vari processi in modo efficiente. Essendo una risorsa costosa e di dimensioni limitate, la
memoria deve essere opportunamente regolamentata; in caso contrario, si determinerebbe un
utilizzo limitato della memoria stessa.
Il modulo riesce ad offrire agli strati di livello superiore la possibilità di lavorare come se
avessero sempre a disposizione una memoria dedicata, di dimensione anche maggiore di
quella fisicamente presente nell’hardware.
GESTORE DELLE PERIFERICHE = è il livello che scambia informazioni con l’esterno mediante
periferiche. Fa uso del gestore della memoria per trovare spazio per le informazioni da
trasferire da e per il mondo esterno, e del nucleo, per scambiare con la periferica i singoli dati.
Tramite questo modulo, il sistema operativo fornisce agli utenti una visione del sistema in cui
i programmi operano mediante periferiche astratte.
Le caratteristiche fisiche delle periferiche e le operazioni di input/output che coinvolgono tali
unità vengono mascherate all’utente, che si trova ad operare solo con un insieme di primitive
ad alto livello per leggere e scrivere dati, senza preoccuparsi dei problemi di indirizzamento e
di sincronizzazione delle periferiche.
Per primitiva si intende ogni singola funzione che viene messa a disposizione dal sistema
operativo. Possono essere considerate come servizi di sistema operativo che un programma
applicativo può conoscere e chiamare per svolgere operazioni con la gestione generale del
calcolatore.
GESTORE DEI FILE = è il livello che gestisce dal punto di vista logico le informazioni
memorizzate sui supporti di memoria di massa sotto forma di file.
Di fatto, la memoria di massa, pur rientrando nelle unità periferiche, viene gestita da questo
modulo. Tale componente si occupa di organizzare le informazioni (dati e programmi) in
contenitori logici, detti file (ognuno identificato da un nome) accessibili tramite comandi ad
alto livello che rendono trasparenti all’utente le operazioni per l’allocazione e l’accesso alla
memoria di massa.
PROGRAMMI OPERATIVI = sono i programmi direttamente utilizzati dagli utenti del calcolatore,
che possono sfruttare tutti i livelli sottostanti per effettuare le operazioni necessarie. A questo
livello appartiene anche l’interprete dei comandi, cioè il programma di sistema che comunica
direttamente con l’utente per interpretare ed eseguire i comandi ricevuti.
INTERPRETE DEI COMANDI E I PROGRAMMI DI UTILITA’ = l’interprete dei comandi e i
programmi di utilità sono moduli direttamente visibili dall’utente. L’interprete comandi ha la
funzione di interpretare i comandi che arrivano alle periferiche (per lo più da tastiera) ed
attivare i programmi corrispondenti.
I programmi di utilità consentono di ampliare le funzionalità del sistema operativo, al fine di
facilitare e ottimizzare l’utilizzo del calcolatore da parte sia degli utenti che del gestore del
3
sistema. Alla categoria delle utilità appartengono i compilatori, i debugger, i programmi di
ottimizzazione dello spazio occupato su disco, i programmi di testo, gli editor di sistema.
La diffusione del personal computer ha indotto i produttori di sistemi operativi a fornire
modalità di interazione fra utente e sistema basate sempre maggiormente sulla grafica rispetto
ai sistemi tradizionali basati su comandi testuali.
FUNZIONI DI UN SISTEMA OPERATIVO “MODERNO”
Un moderno sistema operativo deve essere in grado di compiere diverse attività
contemporaneamente: per esempio mentre un programma è in esecuzione il calcolatore deve
poter stampare un file. Il termine processo denota in sostanza un programma in esecuzione.
L’agente hardware in grado di eseguire processi è detto processore, l’agente software in grado
di gestire i processi è detto nucleo (o kernel) del sistema operativo.
Interfaccia utente
L’interfaccia utente più spartana è quella basata sui comandi di linea (command line). Con
questo metodo è necessario digitare comandi in risposta ad un prompt (simbolo o parola che il
sistema operativo scrive sul terminale all’inizio della riga quando è pronto a ricevere i
comandi dall’operatore), un carattere tipo ? o > che il sistema operativo del computer utilizza
per comunicare all’utente che è in attesa di un comando.
Il vecchio sistema operativo dei PC, l’MS-DOS non fornisce alcun aiuto riguardo al tipo di
comando da digitare per avere una qualche interazione con il computer. L’utente è costretto a
ricordare a memoria il comando da digitare per ottenere la risposta.
L’interfaccia a comandi di linea era un ostacolo; non era semplice ricordarsi decine di termini
e comandi.
Questo tipo di interfaccia si rifaceva ai tempi in cui i computer erano governati da terminali
sprovvisti di video e visualizzavano comandi e relative risposte su moduli continui. Appena i
computer vennero equipaggiati di video, le cose migliorarono; i programmi furono così in
grado di visualizzare a schermo una lista di dei comandi disponibili, a cui corrispondevano
dei numeri e delle lettere. Nacquero i primi tentativi di interfaccia a menu, in cui ad esempio,
il comando dir (visualizzazione della directory dei file) veniva eseguito semplicemente
digitando la lettera D. La possibilità di visualizzare le opzioni disponibili, ridusse
drasticamente il numero degli errori causati da un’errata digitazione dei comandi.
L’introduzione del menu pose il problema della strutturazione degli stessi.
Si pensò di assegnare un numero ad ogni comando; oppure assegnare al comando la prima
lettera che lo componeva; oppure utilizzare le frecce cursore per posizionarsi sul comando
desiderato. Questo determinava il fatto che ogni volta che si utilizzava un nuovo programma
si doveva riiniziare tutto da capo.
Macintosh rivoluzionò tutto; fu il primo personal computer ad imporre un’interfaccia utente
standard, identica per tutti i programmi.
Multiprogrammazione
Sistema uniprogrammato = quando nella memoria centrale risiede, oltre al sistema operativo,
al più un programma utente.
Sistema multiprogrammato = quando nella memoria centrale può essere contenuto più di un
programma applicativo.
4
Nella gestione dei processi da parte del sistema operativo, ogni processo può trovarsi in uno
dei tre seguenti stati:
- in esecuzione, ovvero con il processore a disposizione per l’esecuzione del proprio codice.
Se il calcolatore è dotato di un solo processore, in ogni istante solamente un processo può
trovarsi in tale stato
- pronto, ovvero in grado e in attesa di essere eseguito, non appena il processore diventa
disponibile dopo il suo rilascio da parte del processo correntemente in esecuzione. I
processi in questo stato vengono generalmente definiti in coda, gestita secondo la politica
“primo arrivato primo servito”.
- in attesa, ovvero non in grado di essere effettivamente eseguito dal processore, poiché in
attesa del verificarsi di un evento esterno, per esempio la pressione di un tasto della
tastiera, per passare allo stato di pronto.
Un sistema privo di multiprogrammazione consente l’esecuzione di un solo processo
per volta. Questa limitazione in genere conduce ad un limitato utilizzo del sistema: durante
l’attesa per le operazioni di input/output (come nell’attesa della pressione del tasto da parte
dell’utente) il processore rimane pressochè inattivo.
In un sistema uniprogrammato, un metodo per sfruttare i tempi morti di attesa consiste nello
scaricare il programma residente in memoria e caricare dalla memoria di massa un nuovo
programma da mandare in esecuzione: si tratta di una soluzione accettabile solo qualora i
tempi di attesa siano molto maggiori del tempo di caricamento di un programma dalla
memoria di massa.
Con la tecnica della multiprogrammazione i tempi morti vengono ridotti sensibilmente e si
può utilizzare lo stesso calcolatore per svolgere contemporaneamente più operazioni, come
pure soddisfare contemporaneamente le esigenze di più utenti, collegati al calcolatore
mediante vari terminali.
Un netto miglioramento della multiprogrammazione è dato dal time-sharing in cui
l’avvicendarsi dei programmi in esecuzione avviene ogni pochi millisecondi, e non solo
quando il programma in esecuzione manifesta un tempo morto.
Il time-sharing è adottato nei sistemi operativi di tutti i grandi calcolatori.
Time-sharing
In un sistema multiprogrammato, la presenza di vari programmi nella memoria di lavoro del
calcolatore consente di passare a eseguire un nuovo programma quando quello in esecuzione
inizia un’operazione di input/output che richiede un certo tempo, durante in quale la CPU
rimarrebbe in attesa.
Questo modo di gestire il passaggio da un programma ad un altro ha però un difetto: se il
programma in esecuzione non fa mai operazioni che richiedano tempi di attesa da parte della
CPU, questo programma non lascia spazio ad altri programmi. Nel caso si voglia utilizzare lo
stesso calcolatore per soddisfare le esigenze contemporanee di tanti utenti, diventa necessario
che, anche nel caso in cui il programma di un utente non faccia mai operazioni di
input/output, venga sospeso di forza dal sistema operativo per dare tempo ai programmi degli
altri utenti.
Multiutenza
Caratteristica di un sistema operativo che permette l’uso dello stesso computer da parte di
molti utenti in modo contemporaneo. Chiaramente ciascun utente deve possedere un terminale
(di solito una semplice console composta da tastiera e monitor, ma anche un PC con un
5
software di emulazione), attraverso il quale accedere al computer centrale. La multiutenza
implica funzioni di timesharing e multitasking; tipici sistemi operativi multiutente sono Unix,
Linux e, in genere, tutti quelli creati per minicomputer e mainframe (difficilmente sistemi
operativi multitutente sono implementabili su PC e Workstations).
La gestione della memoria centrale
All’aumentare della sofisticazione del sistema operativo cresce il numero di processi che
dovrebbero risiedere contemporaneamente in memoria e di conseguenza cresce anche la
dimensione della memoria centrale necessaria al corretto funzionamento del sistema.
D’altra parte ora qualsiasi programma anche semplice richiede vari Mbyte di memoria.
Essendo la memoria centrale di un calcolatore limitata per motivi di costo è chiaro che la
quantità di memoria non occupata dal sistema operativo si può ridurre a valori tali da non
consentire che un numero significativo di programmi sia contemporaneamente in esecuzione.
Per ovviare a questa limitazione sono state messe a punto diverse tecniche che consentono di
superare l’apparente incompatibilità fra la dimensione della memoria fisica e lo spazio
complessivo richiesto dai programmi che devono essere eseguiti in modo concorrente e dai
relativi dati.
Le soluzioni sono basate sulle seguenti strategie:
- consentire il caricamento del programma a partire da un indirizzo qualunque della
memoria
- ridurre la necessità di spazio tenendo in memoria solo una porzione dei programmi e dei
dati
- condividere insiemi di istruzioni da parte di processi corrispondenti a uno stesso
programma
Queste strategie vengono attuate dal gestore della memoria, finalizzato a consentire un uso
ottimale della memoria disponibile.
TIPI DI SISTEMI OPERATIVI
MS-DOS
Indica un sistema operativo, prodotto dalla Microsoft su richiesta dell’IBM e per
questo diventato un imperante standard industriale (perché forzatamente adottato dai
produttori di Personal Computer compatibili con gli IBM) nonostante le sue chiare limitazioni
e la sua arretratezza rispetto ad altri sistemi operativi del momento (primi anni ’80). Anche le
prime versioni di Windows facevano uso di MS-DOS e delle sue funzionalità, e solo con le
versioni della metà degli anni ’90 è diventato inutile.
I sistemi compatibili con PC IBM, adottanti il sistema operativo MS-DOS e un hardware
basato su CPU integrata della ditta Intel, hanno fatto esplodere il mercato dell’informatica per
tutti.
Il sistema MS-DOS proponeva uno schermo nero; un’interfaccia utente del tipo a linea di
comando, quindi alfanumerica e non grafica. Per lanciare un programma o eseguire semplici
operazioni come la gestione del video, il controllo della tastiera, l’esecuzione dei programmi,
la conservazione dei file era necessario digitare parole dall’apparenza strane: dir, format,
copy, del, type, ecc. abbreviazioni, cioè, di termini in lingua inglese. L’utilizzo
dell’elaboratore era ostico.
6
OS/2
E’ uno dei sistemi operativi per personal computer compatibili IBM. E’ stato
sviluppato come successore di MS-DOS per poter sfruttare completamente le potenzialità
hardware dei nuovi microprocessori a 16 e 32 bit. E’ un sistema operativo monoutente e, a
differenza di MS-DOS, multitasking. L’interazione con l’utente avviene attraverso
un’interfaccia grafica a menu che lo rende particolarmente user-friendly. Tramite diversi
menu è possibile ad esempio eseguire le tipiche operazioni su file e directory, spostandosi
all’interno dei menu e selezionando l’operazione tramite mouse.
Poiché il sistema operativo è multitasking, è possibile attivare contemporaneamente più
programmi sia di sistema che di applicativi.
WINDOWS
Nelle versioni fino a Windows 95, è stato un ambiente operativo per personal
computer diffusissimo, sviluppato dalla Microsoft. Fino a questa versione veniva
erroneamente considerato un sistema operativo: in realtà per essere eseguito aveva bisogno
del sistema operativo MS-DOS.
Windows era costituito da un’interfaccia grafica per l’utente che come dice il nome
consentiva di organizzare l’ambiente operativo tramite finestre.
Ogni finestra rappresentava un programma specifico che può lavorare su uno specifico file:
più finestre possono essere aperte contemporaneamente (e cioè più programmi possono essere
attivati su file diversi): ovviamente visto che MS-DOS non era un sistema operativo
multitasking in ogni istante è in esecuzione una sola finestra. Ogni finestra poteva essere
ridotta ad un’icona, cioè un simbolo che rappresentava graficamente il programma ad essa
associato.
A partire da Windows 95 l’ambiente operativo si trasforma gradualmente in vero e proprio
sistema operativo inglobando funzioni di multitasking.
UNIX
Sigla che identifica un sistema operativo ideato da Ken Thompson nel 1969.
Di questo sistema operativo, di seguito adottato e modificato dall’Università di Berkeley,
esistono numerose versioni che possono essere istallate su quasi tutti i microprocessori e su
calcolatori di medie dimensioni.
Le ragioni del successo di UNIX sono state simili a quelle dell’MS-DOS per i personal
computer: la diffusione iniziale di UNIX, distribuito ad un prezzo relativamente ridotto, ha
favorito la nascita di un numero elevatissimo di programmi di utilità i quali a loro volta
invitavano ad adottare UNIX per poterne fare uso. Già da tempo, UNIX è lo standard di fatto
nel campo dei sistemi operativi per macchine di medie dimensioni e per workstation.
Oltre ad offrire le funzionalità tipiche per la gestione dei file, UNIX offre anche un buon
ambiente di sviluppo di programmi complessi (soprattutto per quelli scritti in C, linguaggio di
programmazione nato con UNIX stesso).
E’ un sistema operativo multiutente e supporta l’esecuzione concorrente.
L’interfaccia utente inizialmente orientata a terminali alfanumerici si è poi evoluta
nell’ambiente operativo a finestre X-Windows.
In Internet è disponibile come freeware anche una versione di UNIX per personal computer
denominata LINUX.
LINUX
7
E’ la versione di UNIX per personal computer. Il kernel è stato sviluppato dallo
studente finlandese Linus Torvalds; le altre parti sono state realizzate e rese disponibili come
freeware dall’iniziativa GNU.
GNU è la sigla di un’iniziativa di Boston per la realizzazione e la distribuzione come software
freeware di tutte le funzioni di sistema operativo ad eccezione del kernel di UNIX, nonché di
tutti i supporti di programmazione.
XENIX
E’ un sistema operativo per personal computer e workstation molto simile a UNIX.
MAC OS
Il sistema operativo, utilizzato dai prodotti Apple, ha introdotto a partire dal 1984 le
interfacce grafiche utente (Graphic User Interface, GUI) il concetto delle periferiche, il
supporto per l’interfaccia di sistema per piccoli computer (SCSI, Small Computer System
Interface) e la possibilità incorporata di collegamento in rete locale (LAN, Local Area
Network).
Sistema senza dubbio rivoluzionario all’epoca del rilascio; nonostante continui
aggiornamenti, insiste però ancora sulla stessa impostazione di base, ovvero multitasking,
singolo utente, gestione della memoria ormai non più adeguata (all’inizio invece era una delle
caratteristiche che lo distinguevano positivamente rispetto a MS-DOS).
MACOSX
Mac OS X è incentrato su Darwin, nucleo del sistema operativo studiato per garantire
stabilità e prestazioni superiori. Darwin è frutto del lavoro congiunto degli ingegneri Apple
con altri programmatori che insieme sono riusciti a creare basi robuste e moderne per rendere
i computer Mac più veloci e affidabili che mai.
Darwin ha un'architettura a memoria protetta che assegna uno spazio unico a ciascuna
applicazione. Se ogni programma è isolato nella propria porzione di memoria, quando
qualcosa va storto non è più necessario riavviare il sistema: Darwin si limita a chiudere
l'applicazione interessata dal problema permettendovi di continuare a lavorare o giocare senza
interruzione.
Darwin è in grado poi di assegnare la priorità all'applicazione principale, proseguendo
comunque con le altre operazioni in background. Fino ad oggi un'azione complessa (ad
esempio, un rendering di una transizione in iMovie o la compressione di un filmato) avrebbe
impegnato completamente il processore per diversi minuti, se non per ore, bloccando ogni
altra operazione. Grazie al preemptive multitasking di Mac Os X, invece, il sistema resta
sempre reattivo, così potrete controllare la posta, lavorare in un'altra applicazione o navigare
in Interneti mentre l'azione viene completata in background.
Con il preemptive multitasking le applicazioni potranno lavorare contemporaneamente senza
che debba essere il System o una delle applicazioni in uso a dichiarare la propria disponibilità
a interrompere il task attualmente in elaborazione per mandarne in esecuzione un altro.
Le applicazioni e le routine del sistema operativo che lavoreranno in preemptive multitasking
avranno a disposizione una zona della memoria RAM protetta e del tutto indipendente quindi
da quella delle altre applicazioni eseguite contemporaneamente.
Darwin è caratterizzato da una gestione della memoria eccezionalmente efficiente, non sarà
più necessario capire quale sia il quantitativo di memoria necessario, ad esempio, per
consentire a un'applicazione come Internet Explorer di utilizzare i plug-in. Se un programma
ha bisogno di una determinata quantità di RAM, il sistema infatti la assegna automaticamente
e con precisione.
8
Darwin offre il supporto integrato per i sistemi Power Mac G4 con doppio processore; in
questo modo potrete ad esempio servirvi di un processore per completare una trasformazione
complessa di un'immagine e sfruttare l'altro per creare un nuovo documento MP3. Tutte le
applicazioni beneficiano dell'incremento delle prestazioni offerto da un secondo processore.
Inoltre, se effettuate con l'ausilio di entrambi i processori, le operazioni più impegnative quali
la manipolazione di immagini, la compressione di filmati o la codifica di documenti MP3,
possono essere completate in quasi metà tempo.
Derivando in linea abbastanza diretta da UNIX, tutte le applicazioni scritte per questo sistema
operativo potranno “girare” senza troppe difficoltà o modifiche sotto Mac Os X.
Darwin è distribuito da Apple in licenza open source perchè gli ingegneri di tutto il mondo
possano contribuire a fare di Mac Os X il migliore sistema operativo del pianeta.
9