Categoria | Scienza e Tecnologia

Open source e software libero – terza parte

Pubblicato il 11 giugno 2013 da redazione

http://www.siliconafrica.com/wp-content/themes/directorypress/thumbs//may-the-source-be-with-you_Open-source.jpgI Sistemi Operativi

Premessa

Questo articolo doveva trattare della storia del Software Libero, ma i necessari approfondimenti tecnici mi hanno in pratica costretto a rimandarla al prossimo mese.

Leggendo l’articolo, si noterà una sorta di commistione fra aspetti tecnici e commerciali, cioè economici, ma questa è la realtà. Come spesso succede, non necessariamente si afferma il prodotto migliore, ma quello che, in un modo o nell’altro, corretto o no, legale o meno, riesce semplicemente a emergere.

Struttura di un sistema operativo

Un sistema operativo (OS = operative system), talvolta detto anche piattaforma, è un insieme di componenti software che garantisce l’operatività di base di un computer coordinando e gestendo risorse hardware, periferiche, risorse e attività software e facendo da interfaccia con l’utente, senza il quale non sarebbe possibile l’utilizzo del computer stesso e di altri software più specifici.

Un computer senza un sistema operativo è solo hardware, un ammasso di componenti elettronici fisici, in poche parole ferraglia.

Per spiegare un OS si usa spesso un modello a cipolla o cosmografico, dal monumentale affresco orvietano del trecento di Piero di Puccio.

Cosmografia Teologica, Camposanto Monumentale, Pisa.
Cosmografia Teologica, Camposanto Monumentale, Pisa.

Modello Cosmografico di un Sistema Operativo

Il nucleo è costituito dall’hardware e su questo si adagia il sistema operativo, composto da più strati, partendo dall’interno, così suddivisi:

Modello Cosmografico

 

    • Kernel adibito a funzioni fondamentali e modo particolare all’interfacciamento con

      l’hardware.

    • Altri componenti, fra i quali:

      – un gestore di memoria che alloca la memoria primaria richiesta dai programmi e dal sistema operativo stesso e che salva sulla memoria di massa le zone di memoria temporaneamente non usate dai programmi.

      – uno scheduler (schedulatore), che scandisce il tempo di esecuzione dei vari processi e assicura che ciascuno di essi venga eseguito per il tempo richiesto. Un gestore di file system (sistema di file) che si occupa di esaudire le richieste di accesso alle memorie di massa e che viene utilizzato ogni volta che si accede a un file sul disco. Questo, oltre a fornire i dati richiesti tiene traccia dei file aperti, dei permessi di accesso agli stessi e si occupa anche e soprattutto dell’astrazione logica dei dati memorizzati sul computer (directory, ecc).

      Tutti i componenti descritti svolgono attività fondamentali per il funzionamento del computer, ma lo fanno in modo trasparente e silenzioso, viceversa l’interfaccia utente (shell) si palesa all’utilizzatore che, per mezzo di essa, interagisce direttamente con la macchina.  E’ questa la cosiddetta interfaccia a linea di comando (CLI , command line interface: interfaccia a linea di comando), che spesso spaventa e affascina il principiante, nota anche come terminale.

    • La parte più esterna è costituita dalla grafica, cioè l’aspetto con cui un OS si presenta all’utente. Col passare del tempo questa parte è diventata sempre più complessa e vorace sia di calcolo che di memoria, pertanto è stato introdotto un componente hardware dedicato: la scheda grafica, dotata di un processore specifico (GPU graphic processing unit, unità di processamento grafico) e propria memoria ram, la cosiddetta memoria dedicata. La memoria ram (random access memory, memoria ad accesso casuale) é quella che viene usata per eseguire i calcoli e le varie operazioni ed è una memoria velocissima che, però, perde tutte le informazioni quando non è alimentata (memoria volatile). In generale più ram ha una macchina e meglio è. Attualmente si arriva anche a qualche Gb. Per inciso la potenza delle schede grafiche è arrivata ormai a tal punto che già alcuni software la sfruttano per eseguire dei calcoli in parallelo con la CPU, rendendo così la macchina più veloce e performante.

Naturalmente nella realtà la struttura di un OS è ben più complessa, gli strati non sono separati così nettamente e i loro componenti variano da un sistema operativo all’altro, o appartengono a strati diversi, inoltre si interfacciano tra loro, per esempio, e più in generale, tutti possono collegarsi col kernel saltando gli strati intermedi, etc.. In ogni caso il modello cosmografico resta di grande aiuto per capire di cosa e come sia composto, un sistema operativo.

Esistono diversi sistemi operativi, alcuni mirati ad attività specifiche altri generalisti, ma per lo sviluppatore, sono solo un insieme di programmi, dedicato alle funzioni di base di un computer.

Come tutti i software, dunque, i sistemi operativi possono essere Liberi o proprietari. L‘uso di un OS Libero rende, naturalmente, una macchina Libera. Ovviamente abbiamo citato i due estremi, ma esistono anche sistemi ibridi, diversamente liberi, open source etc..

Di seguito i quattro più noti, asteriscando quelli proprietari:

    • Windows* di Microsoft

    • Macintosh* (Mac) di Apple

    • Linux il più usato fra quelli Liberi sui pc e i portatili

    • Android nato per smartphone e tablet.

Ogni OS ha naturalmente varie versioni e relativi aggiornamenti.

I software applicativi (o semplicemente applicativi), cioè i programmi direttamente usati dall’utente, si appoggiano al sistema operativo, di cui sfruttano le caratteristiche e peculiarità, condividendone, quindi, pregi e difetti.

Normalmente assieme al sistema operativo viene fornito un piccolo numero di semplici applicativi. Si parla, in questo caso, di bundle software (bundle: fascio, mazzo).

Altri software di base importanti

Per completare la panoramica occorre citare altre due importanti tipi di software di base:

  • BIOS, basic input output software: software di base per input output. Si tratta di un firmware che viene installato nativamente sulla scheda madre, di solito su un chip specifico, e che permette un funzionamento minimo della macchina in fase di avvio, in modo particolare è in grado di caricare il sistema operativo e di riconoscere i componenti hardware, come dischi rigidi, lettori etc..

    Il pc alla nascita non è quindi tabula rasa, ma dispone di un minimo di capacità dovuta al BIOS. Se, con un po’ di immaginazione (molta in realtà), lo paragoniamo ad un neonato, anche questo ha il suo BIOS, ovvero un codice da qualche parte nel DNA che gli permette alcune attività vitali volontarie e non, come respirare o succhiare il latte materno, senza le quali la sua sopravvivenza e, specialmente la sua crescita sia fisica che psicologica, sarebbero impossibili.

    Non tutte le macchine hanno il BIOS vero e proprio, (fra l’altro, attualmente in fase di modifica radicale), ma per semplificare, tutti i normali pc (non Apple) ne sono dotati.

    E’ possibile accedere al BIOS all’atto dell’accensione della macchina, premendo un determinato tasto, spesso canc (del), F2 o altro, come in genere si vede nella rapida schermata iniziale.

    Una volta effettuato l’accesso al BIOS è possibile intervenire su alcune impostazioni, quali, per esempio, la sequenza di avvio, cioè il dispositivo su cui cominciare a cercare un sistema operativo (bootable: avviabile). Inoltre, agendo sui vari menù del BIOS, si può, per esempio, cambiare l’ora del sistema, modificare il clock della CPU, cioè diminuire o aumentarne la frequenza di funzionamento rendendola più veloce (operazione da evitare se non si sa bene quello che si fa).

    La maggioranza dei BIOS usati sono proprietari e molti sono i produttori, esiste anche almeno un BIOS Libero (Coreboot).

  • Driver (guidatore), questi sono software di interfacciamento con i vari componenti hardware del sistema. Ogni componente ha il suo driver e, per semplificare, potremmo dire che quelli fondamentali e generalisti sono contenuti nel kernel, mentre altri possono essere installati in un secondo tempo quando e se necessario. In generale il driver è fornito direttamente dal produttore del componente hardware, di solito su cd, che lo produce facilmente perché ne conosce il funzionamento nei minimi dettagli. Poiché un driver viene scritto per uno specifico sistema operativo, talvolta anche per una specifica versione, o a partire da una release (versione) in poi, se è, come spesso, proprietario, può risultare molto difficile eseguire il portingsu un altro sistema. Il porting consiste nell’insieme di modifiche e adattamenti necessari per fare funzionare un software anche su un sistema operativo diverso da quello per cui è stato inizialmente progettato. Questo costringe spesso gli sviluppatori di SL a complicate operazioni di reverse engineering (ingegnerizzazione al contrario) che non sempre portano a risultati soddisfacenti. Questo è il motivo per il quale, a volte, può essere difficile e anche impossibile fare funzionare un determinato componente hardware con un OS Libero. Anche questa pratica può essere discutibile, ma è il classico cane che si morde la coda. La mancanza di driver spinge, infatti, all’uso di software proprietari, che girano su sistemi operativi proprietari, e di conseguenza il numero di utenti di OS Liberi, tende a non aumentare, e a non giustificare uno sforzo da parte dei produttori a fornire driver anche per quei sistemi. Per altro a loro non costerebbe nulla rilasciare il driver Libero, o almeno open source, lasciando così ad altri la libertà di produrne altre versioni per sistemi operativi diversi, ma senza il codice sorgente questa operazione non è possibile. Evitiamo a questo proposito disquisizioni sul marchio certified for Windows che sempre più spesso si vede sulle confezioni dei componenti hardware. Ancora una volta è inutile fare notare che queste tutte pratiche sono usate da alcune aziende per mantenere la leadership sul mercato, per non dire il monopolio. E qui si innescherebbero facilmente argomentazioni di tipo etico-politico, che, al momento, lasciamo volutamente da parte. Come caso tipico citiamo quello della ATI (ora acquisita dalla AMD), produttrice di processori grafici (GPU), impiegati su numerose schede video. Ebbene tale azienda si rifiutò per lungo tempo non solo di rilasciare driver, magari proprietari, per sistemi Linux, ma anche di fornire informazioni che permettessero di scriverne altri, adatti per quest’ultimo sistema. Ancora una volta i motivi sono essenzialmente commerciali, ovvero economici, e, specie nel caso di componenti particolari e non molto diffusi, difficilmente lo sforzo di reverse engineering, che gli sviluppatori del S.L. devono sostenere per ottenere la versione Libera, può essere in qualche modo giustificato se, come spesso accade, i produttori hardware non collaborano. In qualche modo, anche sulla spinta di una petizione mondiale, la ATI si è però aperta fornendo driver proprietari per Linux e anche più informazioni. Diverso è stato il comportamento dell’altra grande produttrice di GPU, la nVidia, la quale ha fornito, e continua a fornire, driver, seppure proprietari, anche per i sistemi Linux, rendendo quindi quasi inutile la necessità dello sviluppo di driver Liberi, necessità che, a questo punto, è quasi solo di natura etica e meno tecnica. Ultimamente la situazione è comunque, e in generale, molto migliorata, anche se ancora si possono presentare problemi talvolta insormontabili.

  • Le librerie sono software di base usate da altri software. Anche le librerie possono essere Libere o proprietarie.Un esempio ne chiarirà il significato. Supponiamo di aver bisogno in un software di ritocco di immagini anche fotografiche, per trasformare una foto a colori, in una color seppia, per simulare una patina retrò.Il programmatore scriverà quindi un software specifico che inserirà, probabilmente, come sottoprogramma (la subroutine di una volta) nel programma principale. Potrebbe però comportarsi diversamente, e scrivere un software separato, detto appunto libreria, chiamandolo per esempio libsep, che eseguirà questa operazione nel modo migliore possibile. A questo punto un qualsiasi altro sviluppatore di un qualsiasi altro software di ritocco, può, a meno di problemi legali se la libreria è proprietaria, chiamare libsep per eseguire l’operazione di seppiatura su una qualsiasi altra immagine a colori. Un altro esempio è quello delle librerie matematiche, che in pratica svolgono tutte le funzioni di calcolo possibili, risparmiando e facilitando lo sviluppo di complicati software scientifici. Va da se l’enorme importanza delle librerie, fra l’altro, nei casi di errori o aggiunte: basterà modificare solo quella libreria e tutti i software che ne faranno uso risulteranno ugualmente corretti e aggiornati. Inoltre una libreria può appoggiarsi su altre librerie, che, a loro volta, fanno uso di altre ancora e così via, si parla quindi di dipendenze di un software, riferendosi alle librerie che sono necessarie per il suo funzionamento, le quali devono essere, necessariamente, installate sulla macchina. Le librerie vengono usate anche nei software proprietari, ma il Software Libero ne fa grandissimo uso, specie, ma non solo, di quelle Libere. I sistemi operativi sono dotati di librerie per così dire native, ma altre possono e devono essere installate all’atto dell’installazione di altri applicativi che si appoggiano su di esse. Questa operazione è ormai, anche nei sistemi Linux, automatica e trasparente all’utente che non si accorge nemmeno di installare, assieme con il software voluto, anche delle librerie aggiuntive, che non molto tempo fa potevano essere fonte di problemi e intoppi, e che spessissimo scoraggiavano l’utente non esperto.

Alcune problematiche su applicativi e sistemi operativi

E’ importantissimo precisare che un software funzionante su un OS, o meglio, su una sua versione, non può funzionare su un altro sistema operativo e, talvolta, nemmeno su un’altra versione dello stesso.

Per poter usufruire di un programma scritto per un OS su un altro sistema è necessario realizzarne il porting.

Se un software è progettato bene e, specialmente, se è Libero, quindi ne è noto il sorgente, il porting è una attività relativamente facile, al contrario, per programmi proprietari è un’operazione difficilissima, dispendiosa e, talvolta, al limite del possibile, che costringe gli sviluppatori (hacker, direi) ad un complicato lavoro di reverse engineering per ottenere risultati spesso non soddisfacenti, come già detto per i driver, che sono, a loro volta dei software.

Questo è uno dei motivi perl quale non è facile trovare software Liberi dotati di versioni per i vari sistemi operativi, mentre quelli proprietari funzionano solo sull’OS per il quale sono stati progettati.

Come esempi si vedano il browser (sfogliatore di pagine internet) Firefox e la suite per ufficio Libre Office (già Open Office), disponibili, oltre che per Linux, anche per i sistemi Windows e Mac OS.

Naturalmente, e più in generale, lo sviluppatore, o meglio, il team (squadra) di sviluppo, di un software proprietario, è tecnicamente in grado di portare un software nei vari sistemi operativi con relativa facilità, ma questo può farlo solo lui, e ben difficilmente è disposto a farlo, per motivi essenzialmente commerciali, ma anche, talvolta, perché non è necessariamente esperto negli altri sistemi.

Questo è un ostacolo, non tecnico, alla diffusione del Software Libero. Le aziende produttrici di software proprietario, infatti, se realizzano lo stesso sistema operativo, non hanno alcun interesse a eseguire il porting su altri sistemi e, se, attraverso tecniche commerciali aggressive, riescono a fare in modo che l’utente, quando inizia ad usare un determinato tipo di software, parta proprio con il software della stessa azienda, possono in qualche modo fidelizzare il cliente con tutto quello che ne consegue. E’ quasi inutile ribadire l’enorme potenza commerciale dovuta alle altrettanto enormi disponibilità finanziarie delle aziende di software proprietario, il cui giro d’affari supera anche quello di alcuni stati sovrani, disponibilità che permette, fra l’altro, di ricorrere, a ogni piè spinto, ai migliori studi legali, per intentare cause di ogni genere al fine di proteggere la propria posizione.

Abbiamo parlato, eufemisticamente, di tecniche commerciali aggressive, fra le quali:

  • Favorire l’uso di software proprietario nelle scuole, anche attraverso campagne in cui si offrono pacchetti scontati agli studenti, che, abituandosi a determinati software tendono a portarli, o a continuare ad usarli, anche nel mondo del lavoro. Ne consegue che i prezzi diventano salati non solo per il pacchetto base, ma a volte, anche per le aggiunte, gli aggiornamenti e, spesso, per l’avanzamento di versione.

  • Imporre la preinstallazione del proprio sistema operativo sulle macchine nuove, in modo tale che l’utente si abitui e magari, come spesso succede, non si renda nemmeno conto che potrebbe accedere ad altre possibilità.

    In pratica se un pc, al momento dell’acquisto, ha preinstallata l’ultima versione di un determinato sistema operativo, sarà difficile trovare in vendita una macchina fissa priva di sistema operativo, e a maggior ragione se si tratterà di un portatile. Questa pratica commerciale è estremamente discutibile, fra l’altro la stessa macchina dovrebbe avere un prezzo inferiore senza sistema operativo, lasciando libero il cliente di installare quello che vuole, ovviamente spesso il cliente non vuole nulla, ma accetta semplicemente la macchina così come è. A seguito di cause legali, Microsoft, per esempio accetta di restituire del denaro se non si attiva Windows e se ne restituisce la licenza, ovvero l’adesivo con il numero di serie, ma questa è una pratica molto lunga e complicata, e, in ogni caso, la somma che si recupera è ben più bassa del prezzo di acquisto diretto e disgiunto della relativa licenza. Per i prodotti Apple il discorso è un po’ diverso, infatti la casa di Cupertino oltre che il sistema operativo produce anche le macchine.

  • Permettere (secondo alcuni) o, per lo meno, tollerare tacitamente, la copia illegale dei propri software per uso privato, sempre allo scopo di fidelizzare l’utente e legarlo perennemente ai propri prodotti.

    La possibilità di copiare determinati software è stata importantissima all’atto dell’introduzione degli stessi, sempre al fine di fidelizzare, se non, a parere di qualcuno, schiavizzare, l’utente.

  • Sempre a scopi di fidelizzazione fornire determinati software di uso comune assieme all’OS (in bundle).

    Ancora una volta fa testo Microsoft che forniva il browser Explorer in bundle con Windows, con il quale era connaturato, in modo tale da risultare praticamente impossibile disinstallarlo. Pratica questa che è stata sanzionata dalle autorità antitrust e ora, almeno su Windows 8, è possibile scegliere se installare Explorer al primo avvio. Anche questa pratica è a nostro avviso discutibile: perché un utente non può scegliere quando vuole, ma deve farlo all’inizio? Fra l’altro sarebbe anche il caso di controllare che tale browser sia facilmente disinstallabile, se e quando si decidesse di farlo. La fornitura in bundle con Windows di Explorer ridusse la Netscape, allora produttrice del più diffuso browser, Navigator, quasi al fallimento e la spinse a rilasciarne open il relativo codice, codice dalle ceneri del quale sorse, come l’araba fenice, Firefox, della Mozilla Foundation. Browser Libero e tuttora usatissimo, che ha costretto, vista la sua iniziale superiorità, Microsoft a migliorare il suo Explorer, che in qualche modo rimane il leader anche per i motivi suddetti, ma non certo per superiorità tecnica, tutta da dimostrare.

Conclusioni

In questo articolo, si sono visti i componenti essenziali di un sistema operativo e dei software di base che permettono il funzionamento di un computer, nonché del BIOS, firmare installato sulla macchina fin dalla fabbrica.

Inoltre si sono svolte alcune considerazioni tecnico e commerciali fra il Software Libero e quello proprietario.

di Tullio Bertinelli

Linkografia

Naturalmente sul web esistono moltissimi link ai vari argomenti trattati, il rischio è di avere troppe informazioni, qui sono riportati solamente quelli richiamati dal testo:

http://it.wikipedia.org/wiki/Lista_di_sistemi_operativi

http://it.wikipedia.org/wiki/Bios

Lascia un commento

Advertise Here

Foto da Flickr

Guarda tutte le foto

Advertise Here

LINK