Crea sito
25 Ottobre 2020

Officine Informatiche Roma

ICT SERVICES ROMA – BAZAAR INFORMATICO

Linux 1° Parte – Fondamentali

Fondamentali di LINUX

Linux non è solo un sistema operativo ma anche un modo per concepire la programmazione e lo sviluppo del software.

Tanto si sente parlare in questi periodi di Linux e di free software; il problema maggiore è che molti ne parlano perché qualcuno ne ha parlato loro, e spesso queste informazioni “tramandate oralmente” iniziano a circolare in maniera errata o con qualche tipo di “personalizzazione” che nulla ha a che vedere con ciò che in verità è la filosofia Linux

In prima battuta, si può dire che un software rilasciato come free sia un software liberamente utilizzabile da chiunque senza alcuna restrizione, in forma sorgente o compilata; anche la distribuzione e la modifica dello stesso non sono vincolate sebbene, in caso di modifiche all’originale, ne debba essere sempre essere indicato l’autore.

Con queste poche righe, che spiegano per sommi capi cosa sia il software free (o libero), abbiamo già demolito le tesi errate citate poco sopra: il freeware ed il software libero hanno in comune soltanto la non onerosità del prodotto, ma il secondo è molto di più: spesso, anche l’autore del più misero programma freeware non ne fornisce i sorgenti, mentre grazie al software libero possiamo, se capaci ed interessati, leggere i sorgenti di programmi come Apache, sendmail e molti altri.

Inoltre, il programma freeware non è modificabile, cosa che non avviene con il free software a patto che l’autore delle modifiche non reclami la paternità del software.

Prendiamo ora la fine della definizione sopra riportata:

il software distribuito come free può essere venduto?

La GPL (Generic Public License, Licenza Pubblica Generica), che definisce cosa sia e come debba essere trattato il free software, non lo nega affatto, sebbene ci siano delle clausole: non è in nessun caso possibile far sembrare il software come proprio solamente perché lo si vende e non si può vendere un software rilasciato come free con una differente licenza d’uso; per questo, gli utenti che sopra sono definiti “ignari” non lo sono affatto o, almeno, non dovrebbero esserlo!
Il consiglio è comunque di leggere per intero la GPL reperibile tramite qualsiasi motore di ricerca o, per chi abbia già Linux installato (o sia in procinto di farlo!), nelle directory di documentazione del programmi, solitamente /usr/doc/*.

Una traduzione in italiano è reperibile sul sito di Open Press.

Adesso, come per tutte le cose, cerchiamo di ridimensionare il discorso: Linux non vive solamente di software libero, esistono anche realtà che scrivono software proprietario e non è sancito da nessuna parte che utilizzando Linux si debba utilizzare solamente software libero (software che comunque esiste anche per altri sistemi): pochi sono, in verità, gli esempi di software a pagamento o shareware: più spesso si vedono pacchetti etichettati come “non-free” per il fatto, ad esempio, di contenere algoritmi proprietari (si pensi al formato Gif, ad esempio); oppure perché tale software sia liberamente utilizzabile da privati ma non a scopo commerciale oppure sia distribuito solamente in forma binaria (come Netscape).

Ma prendiamo l’esempio del software non utilizzabile liberamente per scopi commerciali: perché etichettarlo “non free” quando per l’utente casalingo non lo è?

Semplicemente, per il fatto di non essere attinente ai dettami della GPL, che indica software free il software che ha le caratteristiche viste sopra indipendentemente da chiunque ne faccia uso ed in qualsiasi situazione.

1 Il KERNEL : Ruolo del kernel

I tre componenti principali di un sistema operativo sono: il KERNEL, la SHELL e il FILESYSTEM.

 Il kernel del sistema operativo è come un controllore del traffico aereo in un aeroporto. Il kernel determina quale programma ottiene quali pezzi di memoria, avvia e uccide i programmi e gestisce la visualizzazione del testo su un monitor. Quando un’applicazione deve scrivere su disco, deve chiedere al sistema operativo di completare l’operazione di scrittura. Se due applicazioni richiedono la stessa risorsa, il kernel decide chi lo ottiene e, in alcuni casi, uccide una delle applicazioni per salvare il resto del sistema.

Il kernel gestisce anche il passaggio tra le applicazioni.

Un computer avrà un piccola quantita’ di CPU e una quantità finita di memoria.

Il kernel si occupa di scaricare un’attività e caricare una nuova attività se ci sono più attività che CPU.

Quando l’attività corrente è stata eseguita per un periodo di tempo sufficiente, la CPU mette in pausa l’attività in modo che un’altra possa essere eseguita.

Questo si chiama multitasking preventivo.

Il multitasking significa che il computer sta eseguendo più attività contemporaneamente e la prevenzione indica che il kernel sta decidendo quando passare al focus tra le attività.

Con il rapido passaggio delle attività, sembra che il computer stia facendo molte cose contemporaneamente. Ogni applicazione può pensare di avere un grande blocco di memoria sul sistema, ma è il kernel che mantiene questa illusione, rimappando blocchi di memoria più piccoli, condividendo blocchi di memoria con altre applicazioni o addirittura sostituendo blocchi che non sono stati toccati su disco.

All’avvio del computer, carica un codice chiamato bootloader.

Il compito del bootloader è caricare il kernel e avviarlo. Se hai più familiarità  con sistemi operativi come Microsoft Windows o OS X di Apple, probabilmente non vedrai mai il bootloader, ma nel mondo UNIX di solito è visibile in modo da poter modificare il modo in cui il tuo computer si avvia.

Il bootloader carica il kernel Linux e quindi trasferisce il controllo.

Linux continua quindi con l’esecuzione dei programmi necessari per rendere utile il computer, come la connessione alla rete o l’avvio di un server web.

1.1.2 Applicazioni

Come un controllore del traffico aereo, il kernel non è utile senza qualcosa da controllare.

Se il kernel è la torre, le applicazioni sono gli aeroplani.

Le applicazioni inviano richieste al kernel e ricevono risorse, come memoria, CPU e disco, in cambio.

Il kernel estrae anche i dettagli dall’applicazione.

L’applicazione non sa se un blocco di disco si trova su un’unità a stato solido del produttore A, un disco rigido del produttore B o persino una condivisione di file di rete.

Le applicazioni seguono semplicemente l’interfaccia di programmazione dell’applicazione (API) del  kernel e in cambio non devono preoccuparsi dei dettagli di implementazione. Quando noi, come utenti, pensiamo alle applicazioni, tendiamo a pensare a elaboratori di testi, browser Web e client di posta elettronica.

Al kernel non  importa se sta eseguendo qualcosa di fronte all’utente, un servizio di rete che parla a un computer remoto o un’attività interna. Quindi, da questo otteniamo  un’astrazione chiamata processo.

Un processo è solo un’attività che viene caricata e tracciata dal kernel.

Un’applicazione potrebbe anche aver bisogno di  più processi per funzionare, quindi il kernel si occupa di eseguire i processi, avviarli e arrestarli come richiesto, e distribuire risorse di sistema.

1.1.3 Ruolo dell’open source

Linux è iniziato nel 1991 come progetto hobby di Linus Torvalds. Ha reso la fonte liberamente disponibile e altri si sono uniti per dare forma a questo nascente sistema operativo. Il suo non è stato il primo sistema sviluppato da un gruppo, ma poiché si trattava di un progetto ex novo, i primi utenti avevano la capacità di influenzare la direzione del progetto e assicurarsi che gli errori di altri UNIX non fossero ripetuti.

I progetti software assumono la forma di codice sorgente, che è un insieme leggibile di istruzioni per computer. Il codice sorgente può essere scritto in una qualsiasi delle centinaia di linguaggi di programmazione diversi, Linux sembra essere scritto in C, che è un linguaggio che condivide la storia con l’UNIX originale. Il codice sorgente non è compreso direttamente dal computer, quindi deve essere compilato nelle istruzioni della macchina da un compilatore. Il compilatore raccoglie tutti i file sorgente e genera qualcosa che può essere eseguito sul computer, come il kernel Linux. Storicamente, la maggior parte del software è stata rilasciata con una licenza di origine chiusa, il che significa che hai il diritto di utilizzare il codice macchina, ma non riesci a vedere il codice sorgente. Spesso la licenza dice specificamente che non tenterai di decodificare il codice della macchina al codice sorgente per capire cosa fa!

L’open source offre una visione del software incentrata sulla fonte. La filosofia open source è che hai il diritto di ottenere il software e di modificarlo per il tuo uso personale. Linux ha adottato questa filosofia con grande successo. Le persone hanno preso la fonte, apportato modifiche e le hanno condivise con il resto del gruppo.

Accanto a questo, c’era il progetto GNU (GNU, non UNIX). Mentre GNU (pronunciato “ga-noo”) stava costruendo il proprio sistema operativo, erano molto più efficaci nella costruzione degli strumenti che seguono con un sistema operativo UNIX, come compilatori e interfacce utente.

I sorgenti erano tutti liberamente disponibili, quindi Linux era in grado di indirizzare i loro strumenti e fornire un sistema completo. Come tale, la maggior parte degli strumenti che fanno parte del sistema Linux provengono da questi strumenti GNU.Ci sono molte varianti diverse sull’open source e quelle saranno esaminate in un capitolo successivo. Tutti concordano sul fatto che dovresti avere accesso al codice sorgente, ma differiscono nel modo in cui puoi, o in alcuni casi, ridistribuire le modifiche.

Translate »