Punto informatico Network

Canali
20080829221338

GNU e Linux - Storia... "antica"

19/12/2009
- A cura di
Linux & Open Source - Dai primi sistemi in time-sharing alle distribuzioni moderne. Tre decenni di tecnologie e menti che confluiscono.

Tag

Passa qui con il mouse e visualizza le istruzioni per utilizzare i tag!

storia (1) , linux (1) , gnu (1) .

Valutazione

  •  
Voto complessivo 5 calcolato su 189 voti

GNU e Linux, due realtà al centro della comunità di hacker di mezzo Pianeta, tendono ormai a prendere sempre più piede nel mondo moderno, sebbene non senza difficoltà iniziali, livellate in certa misura dagli sforzi di molti appassionati, come potente e valida alternativa libera e gratuita a sistemi operativi proprietari come Microsoft Windows e Mac OS X.

Circa il 90% delle macchine nella lista dei 500 supercomputer più potenti del mondo sono governati da versioni modificate di Linux: tra questi il System z9 dell'IBM, un mainframe in grado di gestire migliaia di istanze del kernel contemporaneamente. Dalla parte opposta possiamo trovare sistemi operativi basati su Linux anche negli iPod, che usiamo spesso per ascoltare i nostri MP3 o i nostri video mentre siamo su un autobus o in treno.

Ma quali sono le radici di un sistema così portabile, versatile, scalabile e modificabile? Da che cosa derivano le sue caratteristiche? Cercherò di rispondere a queste domande nel modo più completo e stringato possibile.

Un tuffo nel passato

Per comprendere in modo più dettagliato le origini di Linux, GNU e UNIX dobbiamo ritornare indietro nel tempo, all'inizio degli anni 60, quando gli elaboratori a transistor della seconda generazione, come la serie IBM 7090 del 1959, cominciarono ad essere realtà di tutti i giorni nelle più grandi aziende di gestione dati. La loro velocità di calcolo e di esecuzione delle istruzioni cominciava paradossalmente ad essere sempre più un ostacolo per l'industria, i cui amministratori vedevano una intera macchina dai costi che superavano facilmente i 60mila dollari di noleggio al mese monopolizzata da un solo utente. Infatti quello che oggi viene chiamato "multiutenza" allora non esisteva e le macchine dovevano per forza di cose dedicare tutte le proprie risorse ad un utente alla volta.

Nel 1961 al MIT (Massachussets Institute of Technology) di Cambridge venne per la prima volta dimostrato un metodo per condividere le risorse di una macchina (principalmente memoria secondaria e processore) tra più utenti. Il sistema operativo, pionieristico per l'epoca, fu chiamato CTSS (acronimo di Compatible Time-Sharing System) e "insegnò al mondo come fare il time-sharing". Il primo mainframe che lo ospitò fu un IBM 7094.

Il CTSS comprendeva dei concetti all'epoca ritenuti futuristici, come una forma arcaica di shell scripting (usato in UNIX e in GNU/Linux) e un sistema di messaggistica tra gli utenti, che può essere visto come l'antenato della posta elettronica quasi trent'anni prima dell'invenzione del WWW. Tra le altre cose, il CTSS introdusse per la prima volta il concetto di demone, ovvero di programma che viene avviato in background e che resta in ascolto di eventuali cambiamenti dello stato logico di un sistema. Un esempio di demone moderno è udevd, che si preoccupa di "ascoltare" i dati inviati dal kernel Linux, esportati attraverso sysfs, quando "si accorge" che una periferica è stata inserita o rimossa dal sistema.

Time-sharing, multitasking, multiutenza

Si sente tanto parlare in giro di multitasking e multiutenza, ma prima di andare avanti ritengo giusto spiegare per sommi capi che cosa significano queste parole a chi ancora non sa di che cosa si tratta.

Il multitasking è una tecnica per la quale due o più processi (ovvero le "forme" che i programmi assumono quando vengono caricati in memoria e "fatti partire") "condividono" le risorse di una macchina per la loro esecuzione, dando l'illusione che su un sistema girino più processi contemporaneamente. Ma nella realtà non è così.

Il multitasking si può dividere in due branche: il multitasking cooperativo e i multitasking preventivo.

Il multitasking cooperativo era una vecchia implementazione di "accesso multiplo" alle risorse di un computer, ma avveniva tra i processi, senza interventi rilevanti da parte del sistema operativo. I processi "collaboravano" per cedersi le risorse a vicenda, ma senza controllo dall'alto si potevano avere due scenari estremamente controproducenti: se un programma non veniva scritto in modo ottimale poteva prendersi tutte le risorse di una macchina per un periodo di tempo eccessivo, oppure causare un hang di sistema, poiché se il blocco del programma avveniva prima che cedesse le risorse questo si poteva tradurre in conseguenze anche catastrofiche, specialmente in sistemi cosiddetti life-critical, che dovevano richiedere calcoli in tempo reale e senza alcun ritardo tollerabile.

Questo modello di multitasking non è praticamente più usato, e le ultime implementazioni conosciute al pubblico risalgono ai primi sistemi operativi Windows (prima di Windows 95) e Mac OS (prima di Mac OS X).

Il multitasking preventivo è il modello più diffuso attualmente. Esso usa il controllo da parte del kernel che, generando dei particolari segnali chiamati interrupt, "istruisce" i processi dicendo loro quando intervenire e quando tornare in standby. Il frammento di kernel che si occupa del ciclo dei processi è chiamato scheduler e ne esistono di vari tipi, che possono implementare molti tipi di ciclo, detti algoritmi di scheduling (scheduling algorithms).

In poche parole, dato un numero di processi n, si prende una certa quantità di tempo (chiamata in gergo quanto) e si assegna al processo x (0) affinché possa "prendere il controllo" del processore e fargli eseguire una certa quantità di istruzioni. Allo scadere del quanto il processo x (0) viene messo in standby e il quanto successivo viene assegnato al processo x (1), che a sua volta usa il processore per fargli eseguire una quantità di istruzioni permessagli dal quanto di tempo. Il ciclo continua fino al processo x (n-1), dopodichè il kernel ritorna al processo x (0) e il ciclo ricomincia.

Questo è l'esempio di algoritmo più semplice, conosciuto con il nome di round-robin, e durata e frequenza dei quanti assegnati può dipendere dalla priorità data dal kernel al processo (o anche attraverso strumenti software controllati dall'utente come nel caso di renice per un sistema GNU/Linux).

Pagine
  1. GNU e Linux - Storia... "antica"
  2. Pagina 2
  3. Pagina 3
  4. Pagina 4

 

Segnala ad un amico

Tuo nome Tuo indirizzo e-mail (opzionale)
Invia a:
    Aggiungi indirizzo email
    Testo

    megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2017 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising

    • Gen. pagina: 0.41 sec.
    •  | Utenti conn.: 75
    •  | Revisione 2.0.1
    •  | Numero query: 21
    •  | Tempo totale query: 0.24