prof. Nunzio Brugaletta |
atapSO |
EnneBi –
Computer Science
Avanti – Indietro – Inizio
Time-sharing è un termine comune per indicare i sistemi multiprogrammati e multiutente. Un sistema multiutente permette a due o più terminali di accedere allo stesso calcolatore.
Come già accennato in precedenza, i sistemi batch rappresentarono un grosso passo in avanti in termini di incremento delle prestazioni di un sistema di elaborazione, ma restava un problema: se il programma in esecuzione richiede l'intervento delle unità di I/O, la CPU resta inattiva e questo avviene tanto più spesso quanto più sono le richieste. Per poter sfruttare al meglio il tempo macchina, si può cercare di sfruttare l'inattività della CPU, quando il programma è in attesa di una operazione di I/O, impegnandola per l'esecuzione di un altro programma. Il principale scopo dei sistemi multiutente in generale, e dei sistemi time-sharing in particolare, è quello di fornire buoni tempi di risposta. I sistemi time-sharing cercano di distribuire in maniera equa le risorse fra gli utenti: le elaborazioni che richiedono maggior uso della CPU vengono fatte aspettare più a lungo.
Il sistema per fornire all'utente l'illusione di avere una macchina a propria disposizione si basa sulla suddivisione del tempo macchina in piccole parti chiamate time-slice e sull'assegnazione, a turno, dei time-slice ai vari programmi in esecuzione. Viene assegnato un time-slice ad un programma, quando il time-slice termina, l'esecuzione del programma viene sospesa e, si assegna un time-slice ad un altro programma, e così via. Chiaramente si avrà tanto più l'illusione di avere a disposizione una macchina quanto più sarà oculata l'assegnazione dei time-slice.
La copresenza e l'esecuzione contemporanea, nel senso già trattato, di più programmi pone problemi di due tipi:
Problemi di sicurezza. Ogni utente deve avere la possibilità, come si notava prima, di avere la propria macchina a disposizione senza che possa avvertire in alcun modo la presenza di altri utenti. Ciò vuol dire adottare meccanismi, sia hardware che software, che non consentano ad un singolo utente, per errore, di interferire con il lavoro degli altri pur usando tutte le risorse disponibili. Per esempio un utente che deposita i propri dati nell'hard disk, deve poter essere sicuro che a questi non accedano utenti non autorizzati.
Problemi di condivisione risorse. L'hard disk essendo una memoria di massa che consente l'accesso diretto, può essere utilizzato da due utenti: uno lavora in una zona, l'altro in una zona diversa e il sistema può saltare da una zona ad un'altra spostando le testine di lettura-scrittura. Esistono però anche risorse hardware che, per loro natura, non si prestano alla condivisione. Si pensi, per esempio, ad una stampante: non può essere usata da due programmi in contemporanea, non si può stampare una riga di uno e una riga di un altro. In questi casi le soluzioni adottate possono essere sia di tipo hardware con i sistemi multiprocessore, cercando di parallelizzare le operazioni, rendere per esempio la stampa di un documento indipendente dall'intervento della CPU che può dedicarsi ad altri programmi, sia di tipo software generando una stampante virtuale cui il singolo programma può dirottare i propri dati in uscita.
Per il momento si tratterà dei problemi di sicurezza. In un sistema multiutente esiste, ed è il primo utente messo a disposizione dal sistema, un utente che ha accesso a tutte le risorse disponibili e a cui è demandato il compito di creare gli account per gli altri utenti. L'utente di cui si parla viene chiamato amministratore di sistema, superutente o anche utente root (nel sistema Linux). Un utente per poter usare le risorse di una macchina è necessario che abbia un account, cioè sia stato registrato, dall'utente root, come utente con determinati diritti che, a seconda delle politiche di sicurezza adottate, sono soggette a restrizioni nelle operazioni permesse: si può andare, per esempio, dal limitare l'accesso delle directory di sistema alla sola lettura, per arrivare anche a non permettere nemmeno la lettura o a limitare la parte di hard disk che l'utente può utilizzare.
Una volta che l'account è attivo, l'utente può accedere, per mezzo della procedura di login, specificando il proprio user-id o identificativo utente, il nome con cui è registrato come utilizzatore della macchina, e la propria password, una parola segreta che conferma la identità dell'utente. Quando un utente finisce il suo lavoro effettua la procedura di logout e si scollega dal sistema. In generale lo spegnimento della macchina è un privilegio dell'utente root e, d'altra parte, un utente non può avere il potere di spegnere il sistema: potrebbero esserci altri utenti collegati. La procedura di spegnimento o shutdown, forza la chiusura di programmi ancora in esecuzione e lo scollegamento forzato di eventuali utenti ancora collegati. Quando si ha necessità di effettuare, per esempio per motivi di manutenzione del sistema, lo spegnimento del sistema, può essere avviato uno shutdown differito, mandandone comunicazione, per permettere agli utenti di chiudere le proprie sessioni di lavoro in maniera normale effettuando il backup dei propri dati.
http://ennebi.solira.org |
ennebi@solira.org |