Inquadramento Storico Le origini del sistema operativo UNIX risalgono al 1969 quando venne sviluppato nei Bell Laboratories dell' AT&T. L'obiettivo era quello di realizzare un ambiente di calcolo multiprogrammato portabile per macchine di medie dimensioni Le prime versioni di Unix Nel 1970 viene realizzata la prima versione di UNIX, interamente sviluppata nel linguaggio assembler del calcolatore PDP-7; questa versione era multiprogrammata e monoutente. Nel 1973 Unix viene realizzato nel linguaggio di programmazione C; essendo il C un linguaggio di alto livello, il suo utilizzo nella realizzazione di Unix ha determinato vari vantaggi: Elevata portabilità: capacità di fornire lo stesso ambiente di esecuzione e di sviluppo su architetture diverse. Questa prerogativa, decisamente inusuale all'epoca in cui Unix è nato, è stata la chiave di volta nella capillare diffusione che ha raggiunto nei giorni nostri. Leggibilità: la struttura del sistema è facilmente comprensibile e quindi apprezzabile da parte della comunità scientifica e accademica. Per questo motivo, Unix è stato utilizzato dagli anni 80 in avanti per la formazione di intere generazioni di persone operanti nel settore dell'informazione. Linux Una delle versioni di Unix attualmente più diffuse è Linux, un sistema operativo di tipo Unix (System V) di pubblico dominio, disponibile su varie architetture (Intel x86, SUN sparc, motorola 68k, PowerPC, Alpha, MIPS). Linux è nato nel 1991, per iniziativa di Linus Torvalds, uno studente dell'Università di Helsinki che, per coltivare un interesse personale sviluppo il kernel di Minix (una versione semplificata di Unix, definita in ambito accademico da A. Tanenbaum) per Personal Computer. I sorgenti della prima versione di Linux furono messi a disposizione attraverso la rete Internet. Questa possibilità invogliò molti programmatori a scaricare il codice di Linux per estendere il sistema con nuove o più efficienti funzionalità. Lo sviluppo di Linux, quindi, da una sola persona passò ad un gruppo di persone numeroso ed aperto, distribuite su una rete geografica. In questo modo nel 1994 viene prodotta la prima versione completa ed affidabile del sistema operativo. Negli anni seguenti Linux ha avuto una diffusione enorme grazie alle sue caratteristiche di affidabilità ed efficienza, che lo mettono in diretta competizione con i corrispondenti rivali commerciali. La distribuzione di Linux è gratuita: attualmente esistono numerosi siti Internet presso i quali è possibile scaricare tutto il software necessario per l'installazione del sistema operativo. Nonostante questo, esistono anche delle distribuzioni "commerciali" di Linux, che offrono tutto il software di Linux su CDROM facendo pagare agli utenti non una licenza, ma semplicemente il lavoro necessario alla realizzazione del CDROM. L'architettura del sistema operativo Unix Caratteristiche principali Le caratteristiche del sistema Unix possono riassumersi nei seguenti punti: Multiutente: più utenti possono interagire contemporaneamente (da terminali diversi) con il sistema, che evita interferenze tra le attività dei vari utenti. All'interno del sistema ogni utente è individuato univocamente da un nome logico (lo username In ogni sistema è definito l'utente root, che rappresenta l'amministratore di sistema, e che, in generale, non ha alcuna limitazione nell'accesso alle risorse del sistema. Multiprogrammato: il suo nucleo, può supportare la contemporanea esecuzione di processi, gestiti a divisione di tempo (time sharing) Gestione della memoria virtuale: il sistema di gestione della memoria in Unix si basa su paginazione e segmentazione (per mettere a disposizione dell’utente più memoria rispetto a quela disponible) Portabile: grazie all'impiego del linguaggio C nella realizzazione del sistema, il sistema gode di un'elevata portabilità, ed è oggi disponibile su una vastissima gamma di architetture. Ambiente di sviluppo per programmi C: Unix mantiene tuttora uno stretto legame con il linguaggio C. Questa relazione si manifesta anche nella disponibilità all'interno delle utilità di sistema di un insieme piuttosto ricco di strumenti per lo sviluppo di applicazioni C (tra i quali il compilatore cc). Interazione con l'Utente Il sistema Unix prevede che 'interazione dell'utente avvenga attraverso un processore comandi (lo shell) che interpreta ed esegue le richieste dell'utente formulate dall'utente attraverso opportune direttive (i comandi). In particolare, allo shell è associato un vero e proprio linguaggio che definisce il vocabolario e la sintassi dei comandi, che l'utente deve necessariamente conoscere per potere interagire con il sistema. Tuttavia, nelle moderne versioni di Unix l'interazione dell'utente con il sistema è semplificata grazie all'introduzione di interfacce grafiche (simili a quella prevista dal sistema operativo Windows) che permettono di specificare le proprie richieste in modo più semplice ed intuitivo mediante l'introduzione di finestre, icone, menu da utilizzare con un dispositivo di puntamento (il mouse). Modalità di interazione Lo shell può acquisire i comandi dalla linea di comando, oppure da un file (detto file comandi). Nel primo caso si parla di modalità interattiva di esecuzione: l'utente può impartire un comando alla volta allo shell, digitandolo direttamente dalla tastiera al prompt della linea di comando. Ogni shell prevede un prompt caratteristico: per lo shell di Bourne il classico prompt è il carattere "$". Nel secondo caso l'interazione avviene tramite file comandi: l'utente indica dalla linea di comando il nome del file comandi. Lo shell eseguirà, nello stesso ordine con cui appaiono nel file, i comandi specificati. Ogni volta che viene invocato un comando, lo shell genera un processo dedicato all'esecuzione del comando. Sintassi di comandi La sintassi tipo di un comando è la seguente: $ nomecomando [opzioni] [lista degli argomenti] o o le opzioni indicano modalità specifiche di esecuzione del comando la lista degli argomenti contiene i parametri del comando Il File System Struttura del File System Il file system è la struttura all'interno della quale vengono memorizzati e gestiti i file. In generale i file possono essere raggruppati in direttori (o cartelle). Una delle caratteristiche fondamentali del file system di Unix è l'omogeneità: ogni risorsa del sistema è rappresentata all'interno del file system sotto forma di file. In particolare, esistono tre tipi di file: il file ordinario: rappresenta un insieme di blocchi di dati effettivamente allocati in memoria di massa; il direttorio il file speciale: rappresenta un dispositivo fisico collegato al sistema; Questa omogeneità di rappresentazione di file e dispositivi consente di uniformare le modalità di input e output dei processi da/verso file e periferiche. Ad esempio, la stampa su un certo dispositivo di output può essere effettuata con gli stessi strumenti utilizzabili per la stampa su file. Organizzazione logica del File System di Unix Il file system di Unix ha una struttura gerarchica che può essere rappresentata da un grafo ad albero (v. Figura 2) , in cui: esiste un direttorio principale che rappresenta la radice dell'albero (indicata con il simbolo "/"); i direttori sono, in generale, nodi del grafo; i file (ordinari e speciali) rappresentano le foglie dell'albero. Nomi di file e di direttori Unix Il nome di un file in Unix indica il cammino da compiere per raggiungere il file a partire da un direttorio di riferimento. In particolare, per riferire un file (o un direttorio), è possibile utilizzare due modalità: nome relativo: indica la posizione del file rispetto direttorio corrente; nome assoluto: indica la posizione del file rispetto al direttorio radice ("/"). Le convenzioni da adottare per la costruzione di nomi di file in Unix sono: "/" è il direttorio radice "." è il direttorio corrente ".." è il direttorio padre del direttorio considerato ogni passo del cammino è separato dal successivo mediante il simbolo "/". Nell'ipotesi che il direttorio corrente sia home: per riferire il file F4 è possibile utilizzare : o il nome assoluto: /home/cesare/F4 o il nome relativo: cesare/F4 analogamente, per riferire il direttorio tmp si possono usare indifferentemente: o il nome assoluto: /usr/tmp o il nome relativo: ../usr/tmp File e Direttori Attributi del file Ogni file Unix è caratterizzato da un insieme di attributi, tra cui: Tipo: indica se il file è ordinario, direttorio o file speciale (cioè, rappresenta un dispositivo) Proprietario e Gruppo: indicano rispettivamente chi è l'utente proprietario del file e qual è il gruppo di appartenenza del proprietario. Dimensione: è il numero di blocchi occupati dal file in memoria di massa. Data: indica la data dell'ultima modifica effettuata sul file; I bit di protezione: è un insieme di 12 bit che sintetizza la politica di protezione da applicare al file; si vedrà nel capitolo 7 in che modo è possibile specificare tale politica. Vettore di Indirizzamento: è costituito da un insieme di indirizzi (tipicamente 15) che consentono di individuare la collocazione dei vari blocchi componenti il file all'interno della memoria di massa. Sicurezza e Protezione Come ogni sistema operativo multiutente, anche Unix affronta e risolve alcune problematiche relative alla sicurezza ed alla protezione delle risorse, offrendo alcune funzionalità di sicurezza come l'autenticazione degli utenti ed il controllo nell'accesso delle risorse. Autenticazione Il sistema Unix controlla l'accesso degli utenti utilizzando un meccanismo di autenticazione basato su password. Utenti e Guppi Ad ogni utente viene assegnato uno username ed un groupname. L'elenco degli utenti (e relativi attributi) del sistema è contenuto all'interno del file di sistema /etc/passwd. Questo file, leggibile da ogni utente, può essere modificato soltanto dall'utente root. Per motivi di sicurezza, nel file /etc/passwd le password degli utenti vengono memorizzate in forma crittografata. Ad ogni password, cioè, viene applicato un algoritmo di crittografia che la trasforma in modo tale che risalire alla password vera e propria da quella crittografata sia così arduo, da rendere questa evenienza praticamente impossibile. Accesso al sistema L'accesso di ogni utente al sistema, avviene attraverso il login. In questa fase, l'utente deve fornire al sistema i propri username e password, affinchè possa avvenire l'autenticazione. Solo se l'autenticazione ha successo (cioè, se la coppia di informazioni (username, password) è presente nel file /etc/passwd), l'utente ottiene l'accesso al sistema. La protezione delle risorse Nel sistema Unix il meccanismo che controlla l'accesso alle risorse da parte degli utenti è basato sulle liste di controllo degli accessi, o ACL : per ogni risorsa sono stabiliti i diritti di accesso associati ad ogni utente. Ricordando che in Unix ogni risorsa è presente nel file system come file (v.capitolo 4), la protezione riguarda essenzialmente il controllo degli accessi a file e direttori. Come già accennato nel paragrafo 4.2, ad ogni file è associato un utente proprietario: il proprietario stabilisce la politica di protezione da applicare al file, concedendo o negando agli altri utenti il permesso di accedervi. In particolare, per ogni file sono previste tre modalità di accesso: Lettura: il contenuto del file può essere letto; Scrittura: il contenuto del file può essere modificato; Esecuzione: il file può essere eseguito; in questo caso è necessario che il file contenga del codice eseguibile o una sequenza di comandi Unix (nel caso di file comandi). Per ogni file l'ACL è sintetizzata da 9 bit (i bit di protezione), che indicano quali sono i diritti di accesso al file per ogni utente del sistema. In particolare, dato un file, ogni utente del sistema può rientrare in una delle tre categorie seguenti:: User: è il proprietario; Group: l'utente non è il proprietario, ma appartiene al gruppo del proprietario; Others: l'utente non appartiene al gruppo del proprietario. I 9 bit di protezione sono suddivisi in tre triplette: ogni tripletta è associata ad una delle tre categorie di utenti (User, Group e Others), come mostrato in Figura 6 . I tre bit di ogni tripletta rappresentano rispettivamente il diritto di lettura (indicato con "r"), il diritto di scrittura (indicato con "w") ed il diritto di esecuzione (indicato con "x"): se un certo bit è settato, significa che il diritto di accesso che rappresenta è concesso agli utenti della categoria a cui la tripletta è associata; se invece ha valore 0, il diritto è negato. Grazie ai bit di protezione, il sistema operativo è in grado di controllare gli accessi alle risorse. Comandi relativi a sicurezza e protezione Cambio della password: ogni utente può, con il comando passwd, sostituire la propria password con una nuova stringa. Visualizzazione dei bit di protezione: I bit di protezione, l'utente proprietario ed il gruppo associati ad un file possono essere visualizzati mediante il comando ls con opzione -l. Modifica dei bit di protezione: l'utente proprietario (o l'utente root) può configurare i bit di protezione associati ai propri file con il comando chmod. Comandi per la gestione del File System L'insieme dei comandi Unix per la gestione del file system è piuttosto ricco: in questa sede verranno descritti ed esemplificati solo alcuni dei comandi di uso più comune, rinviando eventualmente al manuale di riferimento del sistema, per un approfondimento sulla gestione del file system. Comandi per la gestione dei direttori Visualizzazione del direttorio corrente: il comando pwd restituisce come risultato il nome assoluto del direttorio sul quale l'utente è correntemente posizionato. Cambio di direttorio: per modificare il direttorio corrente si utilizza il comando cd, che richiede come argomento il nome (assoluto o relativo) del nuovo direttorio. Visualizzazione del contenuto di un direttorio: si utilizza il comando ls , che visualizza la lista dei nomi di file e di direttori contenuti nel direttorio dato. Il comando ls prevede che il direttorio da ispezionare sia specificato come argomento; in assenza di argomenti l'azione del comando viene riferita al direttorio corrente. 10 caratteri che indicano il tipo di file e la politica di protezione (si veda il paragrafo 7.2) applicata ad esso (il carattere "d", indica che si tratta di un direttorio); l'utente proprietario del file ed il relativo gruppo di appartenenza; la dimensione in blocchi; la data e l'ora di modifica; il nome del file. Creazione di direttori: il comando per la creazione di un nuovo direttorio è mkdir, che richiede come argomento il nome del direttorio da creare: Cancellazione di direttori: per eliminare un direttorio esistente si utilizza il comando rmdir, che richiede la specifica del direttorio da eliminare.Affinchè un direttorio sia cancellabile, è necessario che non contenga alcun file Comandi per la gestione dei file Cancellazione di file: si effettua utilizzando il comando rm, con uno o più argomenti che indicano i nomi dei file da cancellare. Il comando rm può servire anche per eliminare direttori non vuoti; in questo caso va utilizzato con l'opzione -r. Copia di file: il comando cp consente di duplicare file. Per eseguire la copia di un file in un altro, la sintassi del comando cp prevede che vengano specificati due argomenti: il primo rappresenta il nome del file da copiare (l'origine della copia) ed il secondo indica il nome da attribuire alla copia (la destinazione della copia). Nel caso in cui il file destinazione esista già, il comando provoca la perdita del contenuto preesistente. Visualizzazione del contenuto di file: il comando cat visualizza il contenuto dei file specificati come argomenti. Ricerca di un file: con il comando find è possibile localizzare un file all'interno del file system (o di un sottoalbero del file system), conoscendone il nome. La ridirezione Le già evidenziate caratteristiche di omogeneità delle risorse nel sistema Unix, rendono possibile la gestione dei dispositivi di I/O in modo del tutto analogo a quanto visto finora per i file. A questo scopo, esistono degli operatori di ridirezione che consentono di modificare l'associazione tra canale di Input o Output di un comando, e file. Ridirezione in uscita: mediante l'operatore ">" è possibile deviare l'output di un comando su un qualunque file o dispositivo. Utilizzando l'operatore di ridirezione in uscita si sostituisce il dispositivo standard di output con un file o altro dispositivo: pertanto nei due esempi precedenti, non viene prodotto alcun risultato sullo standard output (monitor). Ridirezione in ingresso: i comandi filtro (come visto in 3.1) sfruttano il canale di input per l'acquisizione dei dati. Con l'operatore di ridirezione in ingresso (rappresentato dal simbolo "<") è possibile sostituire al dispositivo standard di input (normalmente associato al canale di input) un qualunque altro file. Ad esempio, il comando filtro sort, produce sul canale di output le linee di testo fornite attraverso il canale di input ordinate in ordine alfabetico. Ridirezione in ingresso ed in uscita possono essere utilizzate in modo congiunto, quando si vogliono deviare entrambi i canali di input ed output su file (o dispositivi differenti da quelli standard). I Processi in Unix Come più volte è stato ricordato, Unix è un sistema operativo multiprogrammato: il sistema può quindi supportare la contemporanea esecuzione di più processi, eventualmente interagenti tra loro Processi Pesanti Il processi Unix sono processi pesanti: non esiste cioè la possibilità di condivisione di variabili tra processi. Esiste, invece, la possibilità di condividere file (e quindi, più in generale, risorse): processi diversi possono quindi, in generale, accedere contemporaneamente allo stesso file.Va comunque sottolineato che in molte delle versioni attualmente commercializzate di Unix vengono fornite librerie addizionali (si vedano ad esempio le librerie specifiche di Sun-OS) che forniscono funzioni per la creazione e la gestione di processi leggeri Rientranza del codice Tra le caratteristiche più importanti del processo Unix, vi è la rientranza del codice: più processi possono condividere lo stesso codice; più processi, cioè, possono eseguire lo stesso programma.Il codice non consente quindi di individuare il processo in modo univoco: per questo motivo il sistema, all'atto della creazione, assegna ad ogni processo un valore intero (il PID, o Process IDentifier) che consente di identificarlo univocamente. Creazione di Processi Il meccanismo fondamentale a supporto del concetto di processo è il meccanismo di creazione: attraverso opportuni strumenti, ogni processo è in grado di creare altri processi. Lo strumento per la creazione dei processi è costituito dalla chiamata di sistema fork, mediante la quale un processo può creare un nuovo processo che condividerà il codice con il creatore, e farà riferimento ad aree dati ottenute per copia dalle aree dati del creatore. Ogni processo creato può, a sua volta generare altri processi, che possono generarne altri, ecc. Si vengono così a formare delle gerarchie di processi (come illustrato in Figura 3) in cui ogni processo creatore assume il ruolo di padre, mentre il processo creato è un figlio. Ogni padre può sospendersi in attesa della terminazione dell'esecuzione del figlio, e rilevarne lo stato di terminazione; la stessa cosa non è possibile per il processo figlio. Lo scheduling in Unix Unix è un sistema a time sharing. In particolare, ad ogni processo è associato un livello di priorità. Lo scheduler esegue un algoritmo per l’assegnazione della cpu (scheduling)) per i processi a diverse priorità. Le priorità possono variare in funzione di alcuni parametri come ad esempio, il tempo di inattività o il tipo di operazioni che il processo è in attesa di eseguire Interazione tra processi: comunicazione e sincronizzazione Come già visto, in Unix non è consentita la condivisione di variabili tra processi. Per questo motivo, i processi, facendo riferimento al modello ad ambiente locale, possono interagire essenzialmente in due modi: Sincronizzazione mediante l'invio di segnali; Comunicazione attraverso scambio di messaggi. Sincronizzazione Attraverso i segnali, un processo (che svolge il ruolo di mittente) genera un evento che può essere rilevato da uno o più processi (che svolgono il ruolo di destinatari). Il destinatario di un segnale, in generale, interromperà la propria esecuzione per reagire alla ricezione di un segnale. Nel sistema Unix esistono vari tipi di segnale, ad ognuno dei quali è associata un'azione di default che stabilisce in che modo il destinatario deve reagire alla ricezione del segnale. Il processo destinatario, tuttavia, ha la possibilità di sostituire all'azione di default associata ad un segnale un'azione diversa, o eventualmente, di "mascherare" il segnale (in questo caso, esso non reagirà in alcun modo alla ricezione del segnale Comunicazione I processi comunicanti sfruttano i meccanismi di comunicazione forniti dal sistema operativo, basati sul concetto di pipe. La pipe è un canale di comunicazione bidirezionale che consente lo scambio di messaggi (rappresentati da sequenze di caratteri) tra processi. In particolare, la pipe incorpora dei meccanismi di sincronizzazione che permettono uno scambio di messaggi affidabile. Comandi per la gestione dei processi Monitoraggio dei processi: mediante il comando ps, un utente può ottenere informazioni sui processi presenti nel sistema. Il comando ps prevede delle opzioni che consentono di visualizzare informazioni più dettagliate sui processi. Gestione delle priorità dei processi: il comando nice permette modificare la priorità associata al processo. Gli utenti normali possono solo decrementare la priorità dei processi. Soltanto l' utente root può incrementarla. Il supporto alla rete L'evoluzione dell'informatica moderna ha definito uno scenario in cui la distribuzione delle risorse, e la comunicazione tra sistemi sono diventate caratteristiche irrinunciabili per ogni sistema operativo. Questa costante, decisa tendenza nella direzione dei sistemi distribuiti ha portato allo sviluppo e alla diffusione delle reti di calcolatori, e, in particolare, ad Internet. Come si vedrà nel seguito, il sistema operativo Unix incorpora dei meccanismi e dei servizi che, sfruttando i protocolli di comunicazione tipici della rete Internet, consentono il collegamento di sistemi Unix alla rete. Questo aspetto spiega perché, in origine, la maggior parte dei nodi della rete Internet utilizzava il sistema operativo Unix: Unix, infatti, ha rivestito un ruolo fondamentale nello sviluppo e nella espansione della rete, rappresentando per molti anni il sistema operativo di riferimento in ambiente Internet. Il supporto alla comunicazione tra processi nella rete In particolare, Unix fornisce supporto alla comunicazione tra processi in esecuzione su nodi diversi della rete. A questo scopo, uno degli strumenti disponibili è la socket. La socket rappresenta un punto di accesso alla rete che permette ai processi di scambiare messaggi con altri processi nella rete. Il meccanismo di comunicazione offerto dalle socket in una specifica libreria di sistema, è realizzato mediante alcuni dei protocolli di comunicazione tipici della rete Internet. I Servizi di rete Alcuni dei più diffusi servizi Internet sono integrati all'interno del sistema operativo Unix. Tra questi, ad esempio, citiamo il servizio telnet per effettuare il login presso nodi remoti, il servizio ftp per il trasferimento di file tra nodi della rete e la posta elettronica, disponibile attraverso il comando mail. Nel seguito vedremo brevemente le caratteristiche di questi servizi. Login remoto Ogni utente del sistema può effettuare un login presso un qualunque sistema collegato alla rete, mediante il comando telnet. Il requisito essenziale affinchè il login possa avere successo è che l'utente possegga un account presso il sistema remoto. Superata la fase di login, come nel caso locale, all'utente viene presentato il prompt dello shell remoto: l'utente anna può quindi interagire con il sistema remoto esattamente con le stesse modalità previste per il login locale. Trasferimento di file Il comando ftp consente il trasferimento di file tra nodi diversi, ed è realizzato con il protocollo FTP (File Transfer Protocol). ftp è, in realtà, un'applicazione che prevede un proprio linguaggio comandi per l'interazione con l'utente. Tra i comandi più comuni ricordiamo: open e close, rispettivamente per il collegamento e la chiusura della connessione con il server remoto; get e put, per il trasferimento di un file rispettivamente da e verso il file system del server remoto; dir, per visualizzare il contenuto di direttori del server remoto; cd, per posizionarsi in un dato direttorio del server remoto Posta Elettronica Gli utenti di sistemi Unix possono scambiarsi messaggi utilizzando il servizio di posta elettronica, realizzato mediante il protocollo SMTP (Simple Mail Transfer Protocol). Si può accedere al servizio di posta elettronica utilizzando il comando mail. Ogni utente è univocamente individuabile attraverso un indirizzo il cui formato è "nome@host", dove host è il nome della macchina presso la quale l'utente di username uguale a nome riceve la posta. Gestione di un sistema Unix Come in ogni sistema multiutente, anche in Unix è necessario prevedere la presenza di un utente amministratore del sistema, il cui ruolo è quello di occuparsi della gestione delle risorse del sistema, della gestione degli utenti, della riconfigurazione del sistema in caso di modifiche o aggiunte di risorse, e di intervenire nel caso di malfunzionamenti. In Unix questo ruolo può essere ricoperto dall'utente root, che, come visto in precedenza, non ha limitazione alcuna nell'accesso alle risorse del sistema (per questo motivo, l'utente root viene anche chiamato super-user). Nel seguito verranno descritte alcune caratteristiche dei Unix relative all'amministrazione di sistema. Gestione degli utenti Le tipiche operazioni di gestione degli utenti che il super-user di ogni sistema Unix compie sono la creazione e l'eliminazione di utenti e gruppi. File di sistema Come già visto, le informazioni relative ad ogni utente sono memorizzate nel file /etc/passwd, In modo del tutto analogo, nel file /etc/group vengono memorizzate le informazioni relative ai gruppi di utenti. In particolare, in questo file viene realizzata l'associazione tra groupname e group-id. Creazione e rimozione di utenti In Unix non esistono comandi specifici per la definizione di nuovi utenti; quasi sempre, però, ogni diversa versione di Unix propone strumenti proprietari (non standard, ma di solito più user-friendly) che assistono l'amministratore di sistema nella gestione degli utenti. In questa sede, tuttavia, parleremo delle procedure da effettuare nel caso più generale (cioè, in assenza di tool), rinviando eventualmente ai manuali delle varie realizzazioni per gli stumenti non standard. La creazione di un nuovo utente è una procedura che richiede le seguenti fasi: aggiungere una nuova linea al file /etc/passwd (con uno strumento di editing) contenente la definizione del nuovo utente , con il campo della password vuoto. creare la home directory del nuovo utente; attribuire la proprietà della home directory (creata al punto precedente) al nuovo utente; creare una password iniziale per l'utente (effettuando un login con il nuovo username e utilizzando il comando passwd). Più semplicemente, la rimozione di un nuovo utente si effettua eliminando dal file /etc/passwd la linea in cui è definito l'utente, e cancellando la home directory dell'utente dal file system. Gestione delle risorse Come già visto, in Unix tutte le risorse sono rappresentate da file. Per ogni amministratore di sistema la gestione del file system è quindi di importanza fondamentale, in quanto dall'integrità del file system dipende la vita del sistema stesso. In particolare, i dispositivi sono collocati all'interno del direttorio /dev. La lista di tutti i dispositivi del sistema è quindi visualizzabile, come al solito, con il comando ls. L'installazione di ogni nuovo dispositivo richiederà quindi l'aggiunta del corrispondente file speciale nel direttorio /dev. Le Prime Versioni della Piattaforma Windows Il sistema operativo Microsoft Windows nasce alla metà degli anni ottanta, con lo scopo di fornire un'interfaccia grafica al sistema operativo MS-DOS, in modo da semplificare l'interazione degli utenti con i primi Personal Computer. Le prime due versioni di Windows hanno in realtà forti limitazioni, derivanti dallo stretto legame con il sottostante sistema operativo MS-DOS. La prima versione che ottiene un importante successo commerciale (Windows 3.0) è del 1991 e sfrutta le capacità dei processori Intel 80386. Nel corso di pochi anni la piattaforma Windows diventa la principale piattaforma operativa per i Personal Computer. Nel 1995 Microsoft immette sul mercato Windows 95, che è un vero e proprio sistema operativo per Personal Computer e supera i 100 milioni di copie vendute. Windows 95 è un sistema operativo a 32 bit, monoutente e multitasking. In seguito, Microsoft produce Windows 98, Windows Millennium e Windows XP, evoluzioni di Windows 95, per seguire le innovazioni dell'hardware e soprattutto per agevolare l'utilizzo di Internet e delle Intranet aziendali. Il Progetto Windows NT Il progetto della versione NT (New Technology) della piattaforma Windows nasce nel 1989 e rappresenta, anche dal punto di vista tecnico, un significativo passo in avanti compiuto da Microsoft rispetto alle versioni 3.x e 95/98. La versione NT è un nuovo sistema operativo completamente diverso dalle versioni precedenti e offre una piattaforma solida e robusta indirizzata al mercato dei server aziendali e di rete Internet e Intranet. Windows NT presenta alcune significative differenze e alcuni vantaggi rispetto alla piattaforma 95/98: NT è portabile (esistono versioni per Intel, DEC Alpha, PowerPC, ecc.), a differenza di 95/98 che funziona solo sui processori Intel x86. NT è un sistema operativo multiutente, con funzioni per l'autenticazione dell'utente e per il controllo nell'accesso ai file. supporta i sistemi multiprocessore (fino a 8 CPU), mentre Windows 95/98 supporta solo macchine monoprocessore. La Piattaforma Windows: Ragioni del Successo Uno dei motivi principali del successo ottenuto da Windows è sicuramente legato alla presenza di un'interfaccia grafica, che rende più semplice l'interazione tra utente ed elaboratore. Inoltre, Windows si propone come ambiente di lavoro capace di spostare a livello di sistema operativo l'integrazione tra le diverse funzioni applicative. È infatti Windows che fornisce il supporto per scambiare informazioni tra applicazioni: per esempio gli appunti (clipboard) sono una memoria temporanea di Windows che può essere usata per spostare dati tra due applicazioni diverse, come per esempio da un documento Word a un foglio elettronico come Excel. In questo modo un utente può scegliere i programmi applicativi che preferisce, lasciando al sistema operativo il compito di integrarli L'Evoluzione della Piattaforma Windows Il motivo alla base dell'introduzione da parte di Microsoft di diverse versioni dell'ambiente Windows (NT, 95/98, CE) era per offrire una piattaforma di lavoro di caratteristiche simili su un vasto insieme di architetture hardware. Windows 95/98 è indicato per macchine poco potenti e con poca memoria RAM a disposizione (4-8 MB); Windows NT è indicato come piattaforma di calcolo per i desktop più potenti e Windows CE per i sistemi palmari, in cui la configurazione hardware è sacrificata per favorire il minimo ingombro e la massima facilità di trasporto. Considerato il notevole miglioramento delle caratteristiche hardware di tutti i desktop, Microsoft si sta preparando al lancio di una nuova piattaforma, Windows 2000, che rappresenta un'evoluzione di NT 4.0, con cui condivide molte caratteristiche architettoniche (stesso kernel, stesso modello di interfaccia con i dispositivi, medesima organizzazione del file system, stessa architettura del sistema di sicurezza). Windows 2000 dovrebbe essere l'unica piattaforma Microsoft per tutti i tipi di desktop, dai meno potenti alle workstation multiprocessore, con l'esclusione dei soli sistemi palmari. La principale innovazione di Windows 2000 rispetto a NT 4 riguarda il ruolo centrale acquisito dalla rete. L'integrazione in Internet e in Intranet aziendali è un obiettivo centrale, per il quale Windows 2000 offre un nuovo insieme di servizi distribuiti e di rete. Alcuni dei principali servizi presenti in Windows 2000 sono: un'infrastruttura distribuita per la sicurezza, per rendere il sistema più sicuro contro attacchi di possibili utenti malintenzionati; un'infrastruttura centralizzata per l'amministrazione, per facilitare l'amministrazione di tutte le macchine Windows presenti in una stessa rete locale. Architettura del Sistema Operativo WindowsNT Caratteristiche Principali Le caratteristiche principali di Windows NT si possono così riassumere: sistema operativo multiutente; più utenti possono accedere contemporaneamente al sistema, che evita interferenza tra i diversi utenti; sistema operativo multitasking a 32 bit; più processi possono eseguire concorrentemente sulla macchina; ogni processo dispone di uno spazio di indirizzamento privato di 32 bit; portabile; Windows NT è disponibile su diverse architetture (Intel, PowerPC, DEC Alpha, MIPS, ecc.); sicuro; Windows NT offre molte funzionalità di sicurezza, come l'autenticazione degli utenti e la protezione dei file; stessa interfaccia utente di Windows 95; questo rende l'ambiente di lavoro di NT intuitivo per tutti gli utenti con una esperienza sviluppata su Windows 95/98; architettura microkernel; molti dei servizi offerti da Windows NT sono eseguiti in modalità utente; supporto per sistemi multiprocessore Architettura del Sistema Operativo WindowsNT Architettura L'architettura di Windows NT è strutturata in una serie di livelli, in maniera simile a quanto visto per il sistema operativo Unix e può essere rappresentata come in Figura 1. Il livello più basso è costituito dall'hardware, al di sopra del quale si trova il sistema operativo, chiamato modulo esecutivo e incaricato della gestione dei processi , della memoria, e del file system. Il modulo esecutivo mette a disposizione i propri servizi ai livelli superiori mediante l'interfaccia costituita da servizi di sistema.Al di sopra dell'esecutivo si trovano i sottosistemi di ambiente, che offrono l'interfaccia di programmazione mediante API (Application Program Interface). Le applicazioni Windows NT possono richiedere le funzionalità del sistema operativo invocando le Win32 API. L'Interfaccia per il Programmatore L'interfaccia fondamentale per la programmazione nella piattaforma Windows è l'API Win32. Le API sono funzioni che un programmatore può utilizzare nel progetto di un'applicazione per richiedere dei servizi al sistema operativo. Per esempio, se un'applicazione vuole cancellare un file, può invocare la funzione DeleteFile(…), che fa parte della Win32 API. La Win32 API rappresenta la specifica (in termini di nome, di parametri passati e di comportamento) di tutte le funzioni che si possono usare per programmare in Windows, e tale specifica è la stessa per le diverse piattaforme Microsoft, come NT, 95/98 e CE. L'obiettivo è quello di assicurare la portabilità delle applicazioni che fanno uso della interfaccia Win32 a tutte le stazioni di lavoro basate sul piattaforme Microsoft. Questo obiettivo è in pratica limitato dal fatto che l'implementazione delle Win32 API è ovviamente diversa e specifica per ognuna delle tre piattaforme. Ogni piattaforma implementa un sottoinsieme diverso delle funzioni specificate nella Win32 API. NT le implementa quasi tutte, Windows 95/98 e CE ne implementano solo dei sottoinsiemi, a causa delle limitazioni hardware delle macchine a cui tali piattaforme sono indirizzate. Concentrando la nostra attenzione su Windows NT, la Figura 1 mostra come i programmi applicativi possano richiedere i servizi del sistema operativo invocando le Win32 API, un set di funzioni molto esteso e documentato. Il compito delle funzioni implementate in Win32 è quello di trasformare le richieste ricevute in chiamate ai servizi di sistema di NT, che sono un insieme di funzioni del sistema operativo NT, che possono essere invocate dalla modalità utente ma di cui non è provvista nessuna documentazione. Per esempio, la funzione CreateProcess() della Win32 API internamente richiede il servizio di sistema della NtCreateProcess(). Alcuni dei servizi più importanti che possono essere richiesti attraverso la Win32 API riguardano la gestione dei processi, la comunicazione tra processi, la gestione della memoria., dell'I/O, delle finestre e della grafica. Le funzioni della Win32 API sono implementate da librerie ad aggancio dinamico (Dynamic Linked Library, DLL), che sono delle funzioni tradotte in codice eseguibile e che possono essere caricate da una applicazione dinamicamente a tempo di esecuzione. Le principali DLL sono: KERNEL32.dll; implementa le funzioni per la gestione della memoria, dei thread e dei processi; USER32.dll; per la gestione dell'interfaccia con l'utente e del sistema di finestre; GDI32.dll; Graphics Device Interface, contenente le funzioni di grafica. L'interfaccia Grafica di Windows L'interfaccia grafica, uguale nelle versioni 95/98 e nella versione NT, rappresenta una delle principali ragioni del successo di Windows. L'interfaccia grafica adotta opportune metafore per riprodurre su computer un ambiente di lavoro tradizionale e sfrutta dei dispositivi di puntamento (per esempio, il mouse) per selezionare e manipolare gli oggetti. le icone, oggetti grafici che rappresentano le risorse del sistema. I programmi sono rappresentati attraverso icone che richiamano le loro specifiche funzionalità, le stampanti e i dischi fissi da icone rappresentanti i vari dispositivi, i direttori sono rappresentate da icone simili a cartelle, i file da icone simili a documenti con uno specifico aspetto che rappresenta il loro tipo; le finestre, che contengono i programmi applicativi in esecuzione; la scrivania (desktop), che rappresenta la tradizionale scrivania utilizzata nel lavoro di ufficio e sulla quale si tengono i documenti su cui si sta lavorando e gli strumenti di utilizzo più frequente. La scrivania può essere personalizzato dagli utenti, che possono cambiare la disposizione delle icone, decidere di inserirne altre, o modificare lo sfondo; il cestino, in cui sono depositati gli oggetti che vengono cancellati; la casella della posta in ingresso (mailbox), che contiene i messaggi arrivati; la barra delle applicazioni, che visualizza le applicazioni attive e contiene il pulsante Avvio, che permette di attivare tutte le principali funzionalità del sistema operativo, come l'avvio dei programmi, l'apertura dei documenti, lo spegnimento del sistema, la modifica delle impostazioni di sistema, la ricerca degli oggetti e la visualizzazione della guida; Struttura del File System Il file system di Windows è organizzato in maniera gerarchica. La radice è chiamata desktop, che contiene tutte le risorse fisiche e logiche della macchina. Nell'esempio sono rappresentati due dischi fissi, di nome Programmi e Dati, con un insieme di direttori (Varie, Temp, Sw, ecc.) appartenenti al disco Dati. Sono inoltre presenti un direttorio chiamato Stampanti, un direttorio chiamato Pannello di controllo, un direttorio chiamato CD-ROM e uno chiamato Floppy disk. La Figura 5 mostra come lo stesso file system viene visualizzato utilizzando gli strumenti grafici messi a disposizione dell'utente in Windows. Un'ultima considerazione a proposito del file system Windows riguarda la possibilità di caratterizzare i file sulla base di un tipo, definito dall'estensione del file stesso. Per esempio, un file chiamato documento.doc è un file con un'estensione doc , che viene solitamente utilizzata per identificare i file creati con Microsoft Word. Un file dati.xls è un file di nome dati creato con il foglio elettronico Excel. Inoltre, i file sono rappresentati da icone con uno specifico aspetto che rappresenta il tipo di file (e quindi, indirettamente, l'applicazione usata per aprirlo). Strumenti per la Gestione del File System Tutte le versioni di Windows mettono a disposizione alcuni strumenti grafici per la gestione del file system e delle risorse disponibili su una macchina. Lo strumento Gestione risorse Lo strumento Gestione risorse è il principale strumento di Windows per la visualizzazione delle varie risorse (dischi, stampanti, ecc.) disponibili nel computer. Gestione risorse visualizza le informazioni avvalendosi di due pannelli: la gerarchia del file system sulla sinistra, che può essere utilizzata per facilitare lo spostamento all'interno del file system, e il contenuto della cartella selezionata sulla destra. Più in dettaglio,le informazioni a cui si può accedere mediante Gestione risorse sonole seguenti: file e cartelle; dischi e dispositivi periferici (per esempio stampanti); tutti gli strumenti presenti nel Pannello di controllo; i documenti in attesa di essere stampati, per ognuna delle stampanti contenute nella cartella Stampanti; il Cestino, che rappresenta un'area di memorizzazione temporanea in cui vengono salvati i file eliminati e dal quale è possibile recuperare quelli eliminati erroneamente. I file eliminati non sono effettivamente rimossi dal disco rigido fino a quando il cestino non viene esplicitamente svuotato; i computer collegati alla stessa rete locale e raggruppati nell'icona Risorse di rete. La cartella Sincronia file che può essere usata per mantenere aggiornate e sincronizzate le versioni degli stessi file presenti in due diversi computer (tipicamente, un personal computer e un portatile). Tutte le principali operazioni sul file system possono essere eseguite utilizzando le funzioni messe a disposizione dai menù di Gestione risorse. Il menù File offre le principali funzioni per la creazione e per la cancellazione dei file e dei direttori, il menù Modifica permette di copiare file e direttori, il menù Visualizza cambia il modo in cui possono essere mostrate le informazioni e Strumenti offre alcune funzionalità tra cui quella di ricerca dei file Lo strumento Risorse del computer Lo strumento Risorse del computer è rappresentato da una icona sulla scrivania e contiene le informazioni contenute nel pannello destro di Gestione risorse, mentre non visualizza la gerarchia delle cartelle. Per cambiare direttorio è sufficiente utilizzare il mouse per selezionare il direttorio di interesse. Risorse del computer offre inoltre un sottoinsieme dei menù già descritti per lo strumento Gestione risorse. La ricerca di un file Windows mette a disposizione un semplice strumento per la ricerca dei file all'interno dei file system di una macchina. Tale strumento, chiamato Trova può essere attivato dal menù Strumenti di Gestione risorse oppure dal menù Avvio della Barra degli strumenti Lo strumento Trova consente di cercare un file in una specifica cartella, o di elencare tutti i file modificati in un certo intervallo di tempo, o i file che contengono una stringa specificata. I Processi in Windows NT Windows NT è un sistema operativo multitasking, che supporta quindi l'esecuzione concorrente di più processi. Ogni processo dispone di un proprio spazio di indirizzamento e il sistema operativo impedisce interferenza tra processi diversi. Windows NT è inoltre multithreaded e supporta quindi il concetto di thread. All’interno di un processo possono essere presenti molti thread, che condividono tra di loro lo spazio di indirizzamento del processo stesso. Questo permette di migliorare le prestazioni in molti casi applicativi (es. processi server Web), poiché i thread possono scambiarsi dei dati in modo molto efficiente (a differenza di quello che avviene in Unix) e il sistema operativo impiega molto meno tempo nell'eseguire il cambio di contesto dei thread rispetto a quanto avviene nel caso di processi tradizionali. Il thread che in un qualunque momento ha il controllo della CPU si trova nello stato di esecuzione, mentre lo stato di attesa contiene il successivo thread che prenderà il controllo della CPU. I thread sospesi in attesa del completamento di operazioni di I/O sono nello stato bloccato, quelli che sono invece logicamente pronti ad eseguire si trovano nello stato pronto. Lo Scheduling in Windows NT In Windows NT le unità di scheduling sono i thread, a ognuno dei quali è associata una priorità. In particolare, NT dispone di 32 livelli di priorità suddivisi in tre classi (classe real time, classe a priorità variabile, classe di sistema). Lo scheduler di NT esegue il thread (di qualunque classe) con priorità più alta, eventualmente togliendo il controllo del processore a un thread con priorità più bassa. Thread con la stessa priorità appartengono a una stessa coda di scheduling, all'interno della quale sono gestiti in modalità roundrobin . La priorità di un thread viene definita in relazione alla priorità del processo che lo ospita e, inoltre, i thread della classe a priorità variabile possono cambiarla dinamicamente: NT abbassa la priorità dei thread che impegnano intensamente la CPU e privilegia i thread interattivi che interagiscono con l'utente e con i dispositivi di I/O come dischi, stampanti, ecc. Il Task Manager Il principale strumento per la gestione dei processi in Windows NT è il Task Manager, che può essere attivato premendo il pulsante destro del mouse su un'area vuota della barra delle applicazioni. Le principali funzioni messe a disposizione dal Task Manager sono le seguenti: visualizzazione dello stato delle applicazioni in esecuzione, con possibilità di terminare le applicazioni bloccate. visualizzazione dei processi in esecuzione sulla macchina, con indicazione delle risorse utilizzate da ognuno di essi; è anche possibile modificare la priorità dei processi. visualizzazione dello stato di occupazione delle risorse della macchina, in termini di memoria occupata, percentuale di utilizzo della CPU, ecc. Il Performance Monitor Un altro strumento molto potente per visualizzare lo stato delle risorse di una macchina è il Performance Monitor, che rende possibile anche la visualizzazione dello stato in cui si trovano tutti i thread presenti su una macchina. Tale strumento di gestione si trova tra gli Strumenti di amministrazione. La Memoria Virtuale Windows NT fornisce l'astrazione di memoria virtuale per permettere a ogni processo di usufruire di aree di memoria di dimensioni molto superiori a quelle della memoria centrale effettivamente disponibile. In pratica, ogni processo in Windows NT dispone di una memoria virtuale di 4Gbyte, grazie all'uso di indirizzi a 32 bit. NT utilizza pagine di 4KB. Sicurezza e Protezione Una delle principali differenze di NT rispetto alle piattaforme 95/98 riguarda l'aspetto della sicurezza e della protezione. Le piattaforme Windows 95/98 sono indirizzate a sistemi monoutente e non offrono quindi nessuna autenticazione dell'utente e nessun controllo nell'accesso ai file: un qualunque utente è autorizzato ad accedere a tutti i file del sistema. Windows NT è invece indirizzato a sistemi multiutente e quindi offre alcune importanti funzionalità di sicurezza quali l'autenticazione degli utenti e il controllo nell'accesso alle risorse. L'Autenticazione degli Utenti Il sistema operativo Windows NT controlla l'accesso degli utenti utilizzando un meccanismo di autenticazione basato su password. Un utente può entrare nel sistema solo se è provvisto di uno username e se è a conoscenza della corrispondente password. Username e password sono richieste e verificate nella fase di logon. Ogni utente è quindi identificato in modo univoco all'interno del sistema dal proprio username, e può inoltre appartenere a uno o più gruppi. Un utente che appartiene a più gruppi può svolgere le azioni consentite a tutti i singoli gruppi. La Protezione delle Risorse Windows NT è dotato di un meccanismo di protezione di tutte le risorse del sistema che ne controlla l'accesso da parte degli utenti. Il sistema operativo verifica che un utente, una volta superata la fase iniziale di autenticazione, possa accedere solo alle risorse per le quali dispone di una autorizzazione. Alcune delle principali risorse che possono essere protette sono, per esempio, i file, i direttori, i dispositivi, le stampanti, ecc. Il meccanismo di protezione di NT associa a ogni risorsa l'identificativo dell'utente proprietario della risorsa stessa. È compito del proprietario definire per una risorsa una lista di controllo degli accessi (ACL, da Access Control List), cioè una lista di utenti o di gruppi che possono eseguire delle azioni specifiche sulla risorsa. Il tipo di azioni che possono essere eseguite sono detti diritti, ed NT estende l'insieme dei diritti già presentati nel paragrafo di Unix. A differenza di Unix, NT permette di specificare i diritti su una risorsa per una lista di un qualsivoglia numero di utenti; inoltre, i diritti di operare su una risorsa possono essere concessi, ma possono anche essere vietati, per indicare le azioni che sono esplicitamente vietate a un particolare utente o gruppo di utenti. La lista di controllo degli accessi associata a una qualunque risorsa di sistema può essere modificata direttamente dalla finestra che visualizza le proprietà della risorsa stessa (uso del tasto destro del mouse). Come esempio, si consideri un direttorio e si guardino le proprietà associate a tale risorsa. Nella finestra Proprietà è possibile selezionare varie opzioni di protezione, tra cui compaiono le Autorizzazioni, il Controllo e il Proprietario. L'Ambiente di Rete Negli ultimi anni tutti i sistemi informativi di industrie e aziende sono evoluti nella direzione di una maggiore distribuzione delle risorse, con collegamenti su scala globale, in un contesto in cui Internet e tutti i sistemi aperti hanno acquisito grande importanza. Un qualunque sistema operativo moderno deve quindi fare fronte a nuovi scenari, con un aumento della complessità dovuto, più in dettaglio, a: eterogeneità delle piattaforme sia hardware sia software (all'interno di una stessa azienda possono coesistere workstation e PC, con varie versioni di sistema operativo, come Windows, Unix, ecc.); collegamento in rete di tutte le risorse di calcolo, a volte anche su scala globale (una azienda può dover collegare macchine appartenenti a diverse filiali geograficamente distribuite); accesso alla rete Internet, con tutti i problemi di sicurezza che derivano da una interconnessione su una rete pubblica come Internet (un'azienda può voler accedere alle informazioni attraverso Internet, o può usare tale rete come supporto per il collegamento di macchine di filiali diverse). Il Supporto di Rete I progettisti di Windows NT hanno dotato il sistema operativo di un supporto di rete capace di rispondere alle esigenze sopra elencate, che sono caratteristiche diffuse in tutti i nuovi ambienti di lavoro. Per fronteggiare il problema della eterogeneità, NT dispone di un'interfaccia di sistema di rete flessibile in grado di interagire con molti altri sistemi operativi Per facilitare il collegamento in rete delle stazioni di lavoro, NT supporta tutti i principali standard di comunicazione (per esempio, TCP/IP). Infine, NT è stato progettato tenendo in considerazione le esigenze di sicurezza e di protezione delle informazioni e delle risorse di calcolo che emergono nello scenario Internet. Organizzazione di Rete Windows I sistemi informativi delle aziende e delle organizzazioni sono costituiti da numerose macchine collegate in rete e il problema dell'amministrazione e della gestione di tutto il sistema può facilmente raggiungere una complessità molto elevata. Per fronteggiare questi problemi, Windows NT offre alcuni modelli per l'organizzazione e la gestione dei sistemi in rete. Il modello a workgroup Il più semplice modello organizzativo delle macchine proposto da NT è il modello a workgroup, a gruppo di lavoro (vedi Figura 22), in cui ogni macchina è amministrata autonomamente e tutte le operazioni, come per esempio l'aggiunta di un utente, devono essere eseguite su ogni singola macchina presente nell'organizzazione. Il difetto principale di questa soluzione è chiaramente la scarsa scalabilità nella gestione dell'insieme delle macchine. Il modello a dominio In molti ambienti di lavoro esistono dei gruppi di utenti, come gli impiegati di una stessa organizzazione, che si vuole siano in grado di accedere a delle risorse condivise messe a disposizione di tutti. Per gestire le politiche di accesso di questi gruppi di utenti, NT propone il modello di organizzazione a dominio (vedi Figura 23). Un dominio NT è un gruppo di macchine Windows che condividono le politiche di sicurezza e l'archivio degli utenti. In particolare, tutte le informazioni amministrative e le politiche di sicurezza per il dominio sono concentrate in una macchina Server, in figura chiamata PDC (Primary Domain Controller). Le altre stazioni di lavoro del dominio interrogano il PDC per avere le informazioni corrette e aggiornate sui diritti di accesso di ogni utente. Questo modello di organizzazione centralizza l'amministrazione di tutto il dominio. Infatti, tutte le operazioni di configurazione e modifica delle politiche di sicurezza, come per esempio l'aggiunta di un nuovo utente, vengono eseguite solo sulla macchina PDC. In questo modo si semplifica notevolmente la gestione e l'amministrazione delle macchine del dominio. La centralizzazione imposta dalla presenza del PDC potrebbe in alcuni casi rappresentare un collo di bottiglia per il sistema e addirittura portare a un blocco di tutte le macchine del dominio nel caso di un malfunzionamento della macchina PDC. Tale rischio può essere ridotto utilizzando una o più macchine Server di backup, in figura indicate come BDC (Backup Domain Controller). Sulle macchine BDC vengono periodicamente immagazzinati i dati presenti nel server PDC, soprattutto quelli più importanti e strategici, in modo da poterli avere disponibili anche quando il server PDC dovesse interrompere la propria attività. In Figura 23 è rappresentato un dominio NT con un server PDC e 2 stazioni BDC di backup. In Strumenti per la Gestione di Rete L O Il sottosistema di rete di Windows NT permette la trasmissione dei dati, la comunicazione tra processi, la condivisione dei file attraverso la rete e la possibilità di stampare utilizzando stampanti remote. Le stampanti remote collegate alla macchina sono presenti nella cartella Stampanti. L W Il L La condivisione delle risorse In Windows NT è possibile offrire delle risorse presenti su una macchina (che svolge le funzioni di servitore) a tutte le altre macchine (che agiscono come clienti) che sono collegate alla stessa rete locale). In generale, una stessa macchina potrà essere servitore di alcune risorse e accedere come cliente a delle altre. Un utente che vuole mettere a disposizione una risorsa (lato servitore), la offre in condivisione modificando le Proprietà della risorsa stessa. Una risorsa condivisa può essere acceduta da un utente su una macchina cliente mediante lo strumento Risorse di rete e utilizzata come se fosse una risorsa locale. Le macchine e le risorse presenti sulla stessa rete locale sono accedute utilizzando degli strumenti per la gestione di rete. Lo strumento Risorse di rete Lo strumento Risorse di rete è rappresentato da una icona sulla scrivania e permette di visualizzare tutte le macchine Windows collegate a una stessa rete locale. Ogni macchina è identificata da un nome logico Windows. Lo strumento Trova Lo strumento Trova (già incontrato per la ricerca di file) può anche essere utilizzato per la L S L G W ricerca di computer collegati sulla rete locale. Gestione di un Sistema Windows NT La gestione di un sistema è un compito complesso e delicato, che prevede la configurazione iniziale, la riconfigurazione a fronte dell'aggiunta o della modifica di nuove periferiche collegate alla macchina, l'amministrazione del sistema, la gestione degli utenti, ecc. Per ridurre il rischio che utenti inesperti possano compromettere l'integrità del sistema, molte delle operazioni di gestione sono eseguibili solo dagli utenti che abbiano i diritti di amministratore. La configurazione e l'amministrazione di un sistema Windows NT sono facilitate dalla presenza di molti strumenti con una facile interfaccia grafica, che sono raggruppati in due posizioni: all'interno del Pannello di controllo e nel menù Strumenti di amministrazione. Pannello di Controllo Il Pannello di controllo è una cartella che si può raggiungere dal menù Avvio, oppure usando Gestione risorse. Contiene molti strumenti di configurazione del sistema: la cartella Stampanti mostra le stampanti collegate alla macchina (sia in locale sia attraverso la rete locale) e permette di aggiungere nuove stampanti; la Rete permette di configurare schede di rete, servizi e protocolli di comunicazione, e l'inserimento della stazione di lavoro in uno specifico dominio; lo Schermo, per modificare l'aspetto dello schermo, cambiando colori, tipi di caratteri, sfondo, ecc.; l'installazione delle applicazioni per installare e rimuovere programmi o componenti software; il Modem per la configurazione di un modem per il collegamento su linea telefonica. Strumenti di Amministrazione Gli Strumenti di amministrazione si trovano all'interno dei Programmi, a loro volta dentro il menù Avvio e sono i principali strumenti per l'amministrazione di un sistema Windows NT. Alcuni degli strumenti più importanti sono i seguenti: lo User manager consente di gestire il sistema di protezione e sicurezza di Windows NT; grazie a questo strumento è possibile svolgere tutte le funzioni di gestione degli utenti e dei gruppi (inserimento nuovi utenti, modifica password, cambio di gruppo, ecc.); il Disk administrator consente di gestire i dispositivi di memorizzazione di massa e di configurare i nuovi dischi che possono essere aggiunti a una macchina (partizionamento e formattazione dei dischi); il Performance monitor, per controllare le prestazioni della macchina; il Backup per eseguire il backup dei dati sull'unità a nastro locale, in modo da evitare la perdita di dati a causa di malfunzionamenti.