Time-sharing

Da Wikipedia, l'enciclopedia libera.

In informatica il time-sharing (termine di origine inglese che tradotto letteralmente significa "condivisione di tempo") è un approccio concorrente del sistema operativo all'uso delle risorse di processamento attraverso il quale l'esecuzione o attività della CPU viene suddivisa in quanti o intervalli temporali da assegnare sequenzialmente a vari processi di uno stesso utente o a processi di più utenti.

Il time-sharing è l'estensione logica della multiprogrammazione e non implica necessariamente che il sistema sia multiutente, ma se lo è allora più utenti possono, con i loro programmi in esecuzione, interagire con il sistema centralizzato ciascuno con un proprio terminale sempre in timesharing. In questo caso la CPU del computer centrale viene utilizzata per rispondere alle richieste dei singoli utenti, passando rapidamente da uno all'altro (context switch) dando così l'impressione ad ognuno di avere a disposizione il computer centrale interamente per sé ovvero dando l'impressione di un processamento multiplo in parallelo di più processi verso più utenti.

Descrizione[modifica | modifica wikitesto]

Dal momento che i primi computer mainframe erano estremamente costosi, non era possibile garantire l'accesso esclusivo ad un singolo utilizzatore per l'uso in modo interattivo. Dal momento che con questa modalità di utilizzo i computer trascorrevano molto tempo in attesa dell'input dell'utente, si pensò di far utilizzare a più utenti lo stesso elaboratore, utilizzando i tempi morti per servire i diversi utenti a rotazione. Allo stesso modo, le piccole porzioni di tempo che trascorrevano nell'attesa dei dispositivi, quali dischi, nastro magnetico o rete potevano essere utilizzati per servire i vari utenti. I computer capaci di fornire servizi in time-sharing normalmente venivano impiegati per lavori in batch durante la notte.

Da sole, queste soluzioni non erano sufficienti per costruire un sistema di time-sharing perfettamente funzionante. Per fare in modo che il servizio a più utenti fosse uniforme, era necessario un sistema che gestisse anche i processi che non fanno pause per l'attesa di input, quali i programmi che impiegavano molte risorse, ad esempio per calcoli di grande precisione. Si rendeva necessario un sistema di interrupt hardware, capace di mettere in pausa un processo in esecuzione, per dare tempo di processore ad un altro processo in attesa.

Questo concetto fu descritto pubblicamente la prima volta all'inizio del 1957 da Bob Bemer in un articolo nella rivista Automatic Control Magazine. Il primo progetto ad implementare un sistema di time-sharing fu iniziato da John McCarthy alla fine del 1957. Sebbene egli abbandonò per lavorare al Project MAC e ad altri progetti, uno dei risultati del suo lavoro, noto come Computer Time Sharing System o CTSS, fu dimostrato nel novembre 1961 e costituisce, molto probabilmente, il primo sistema di time-sharing, che è rimasto in uso fino al 1973. Il primo tentativo di introduzione commerciale del sistema in time-sharing, che poi si è diffuso ampiamente alla fine degli anni 1960 e nei primi anni 1970 è stato il Dartmouth Time Sharing System o DTSS che è stato implementato per la prima volta al Dartmouth College nel 1964 ed in seguito ha costituito la base del servizio di computer bureau di General Electric.

A volte l'invenzione del concetto di time-sharing viene attribuita a Christopher Strachey, tuttavia, sebbene egli abbia utilizzato il termine time-sharing, il concetto che egli descrisse è oggi noto come multitasking. Il time-sharing è correlato al multitasking nel senso che in ambedue i sistemi un singolo computer esegue più processi in modo che appare simultaneo. Tuttavia il time-sharing fa riferimento ad un computer che supporta più utenti simultaneamente, mentre il multitasking è un termine più ampio che implica l'esecuzione di più processi, indipendentemente dal numero degli utenti.

Voci correlate[modifica | modifica wikitesto]

Informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica