martedì 24 novembre 2015

Tratti generali dei S.O.

Uno degli aspetti più importanti di un s.o. è l’abilità di multiprogrammazione. Un singolo programma, in generale, non tiene occupati la CPU o il dispositivo di I/O per tutto il tempo dell’esecuzione.
Poiché la maggior parte degli utenti ha diversi programmi contemporaneamente in esecuzione, si utilizza il multiprogramming per incrementare l’utilizzo della CPU, organizzando i jobs affinché la CPU ne abbia sempre uno da eseguire. L’idea è quella di tenere molti jobs in memoria in maniera simultanea, ma poiché la memoria principale di solito è troppo piccola per contenerli tutti, vengono tenuti nel disco, nel job pool contenente tutti i processi che aspettano di essere allocati in memoria. I sistemi multiprogrammed forniscono un ambiente nel quale le varie risorse sono effettivamente utilizzate, ma non forniscono un’interazione per l’utente con il sistema.

Multitasking
Il multitasking (detto anche time sharing) è un’estensione logica del multiprogramming. In questi sistemi la CPU esegue jobs multipli passando da uno all’altro, in una velocità tale che gli utenti possano interagire con ogni programma nel corso dell’esecuzione.
Il time sharing richiede un sistema computer interattivo (o hands-on) che fornisce una comunicazione diretta tra l’utente e il sistema, che da istruzioni attraverso un dispositivo di input e aspetta l’immediata risposta sul dispositivo di output. Per questo motivo il response time dovrebbe essere tipicamente inferiore a un secondo.
Un sistema di questo tipo deve fornire: un file di sistema; una gestione dei dischi; un meccanismo di protezione delle risorse da un utilizzo improprio; meccanismi per la sincronizzazione dei jobs; meccanismi di comunicazioni; garanzie per non incappare in deadlocks.

Un programma caricato in memoria e in esecuzione è detto processo. Se ci sono diversi jobs pronti da caricare in memoria e non vi è lo spazio necessario per tutti, il sistema deve fare la scelta di quali caricare. Questa scelta è data dal job scheduling. Se invece più processi sono già pronti in memoria, la scelta è data dal CPU scheduling.
Per garantire una certa velocità nel response time, si può utilizzare il meccanismo di swapping, in cui i processi sono passati all’interno e all’esterno, dalla memoria principale, al disco.

Virtual Memory
Un altro metodo è il virtual memory, una sorta di astrazione della memoria principale in un array di storage uniforme, separando la memoria logica, per com’è vista dall’utente, da quella fisica. Questo consente l’esecuzione di un processo sebbene non sia del tutto caricato in memoria. Il quale vantaggio principale è quello di permettere il caricamento di programmi più grandi dell’attuale memoria fisica, per cui i programmatori non devono preoccuparsi delle limitazioni di memoria.

1 commento: