Che cos’è un sistema operativo ?

()

Che cosa e’ un SISTEMA OPERATIVO

Un sistema operativo è una piattaforma software che crea un ambiente in cui un utente può eseguire diverse applicazioni su un dispositivo di elaborazione. Il sistema operativo funge da ponte tra i programmi software e i componenti hardware di un sistema. È utilizzato da diversi dispositivi come cellulari, schede, desktop, server Web, console per videogiochi, ecc. Esistono vari sistemi operativi disponibili sul mercato e Windows, Linux, Unix e Mac OS X sono alcuni degli esempi.

Diamo un’occhiata ai componenti necessari per il funzionamento di un sistema operativo.

Bootloader: Si occupa del processo di avvio del dispositivo.

Shell: Una shell è un linguaggio di programmazione che controlla altri file, elabora e controlla anche tutti gli altri programmi.

Il kernel: E’ il componente principale del sistema operativo e gestisce la memoria, la CPU e  altri componenti correlati.

Ambiente desktop: Dove interagisce un utente.

Server grafico: E’ un sottosistema di sistema operativo utilizzato per mostrare la grafica sullo  schermo.

Applicazioni: Sono i programmi che eseguono diverse attività utente come word, excel, ecc.

Demoni: Fornitore di servizi in background.

BOOTLOADER :

La funzione fondamentale di un boot loader è dunque caricare ed eseguire un kernel di sistema operativo, unitamente ai processi e servizi secondari. Nella maggior parte dei casi, questo richiede di accedere alla memoria di massa, per leggere il kernel di sistema operativo, e potenzialmente altri file. Nei casi più semplici, il boot loader contiene l’indirizzo dei blocchi di disco in cui sono memorizzati i file da caricare, e deve quindi essere aggiornato se questi file vengono modificati. L’accesso al disco spesso avviene attraverso le funzioni fornite dal firmware (il BIOS nei sistemi PC IBM compatibili). Alcuni boot loader posseggono la capacità di interpretare uno o più file system per trovare i file da caricare. In questo caso, possono anche caricare un file di configurazione dal disco, o permettere ad un utente avanzato di esplorare il disco alla ricerca di file da caricare. Alcuni boot loader sono in grado di utilizzare le funzionalità fornite da alcune schede di rete (tipicamente ethernet) per scaricare un kernel dalla rete, tipicamente via TFTP.

Ogni sistema operativo installato anzi ogni volume avviabile (esistono infatti anche ambienti di ripristino o simili) ha uno specifico boot loader o, meglio, il file di configurazione di avvio (per Windows 10 si chiama BCD, ad esempio) contiene le istruzioni di avvio specifiche che devono essere lette dal boot loader per ogni volume avviabile.

Funzionalità aggiuntive presenti in alcuni boot loader:

  • Molti kernel supportano la possibilità di ricevere parametri di avvio per configurare il loro comportamento; il boot loader si occupa di passarli al kernel, e in alcuni casi permette all’utente di editare questi parametri.

  • Alcuni kernel prevedono che altri file siano resi disponibili al kernel durante il boot (per esempio nei sistemi Unix-like è comune l’uso di initrd, un piccolo file system memorizzato in un file). Il caricamento di questi file viene gestito dal bootloader.

  • Un boot loader può mostrare all’utente un menù di possibili kernel da caricare, con relativi parametri, permettendo all’utente di scegliere quale sistema operativo avviare.

  • Un boot loader può richiedere una password per consentire l’avvio del sistema.

SHELL:

La shell (detta in italiano interprete dei comandi), in informatica, è la componente fondamentale di un sistema operativo che permette all’utente il più alto livello di interazione con lo stesso. Tramite di esso è possibile impartire comandi e richiede l’avvio di altri programmi. Insieme al kernel costituisce una delle componenti software imprescindibili di un sistema operativo. Il suo nome proviene dall’inglese e significa “guscio” a conferma del fatto che questa componente viene considerata l’involucro, la parte visibile del sistema ed è dunque definibile come l’interfaccia utente o il programma software che la rende possibile. L’interfaccia di una shell può essere grafica (GUI), testuale (TUI) o a riga di comando (CLI). Nei moderni Sistemi (es.Windows), rispetto al passato (spec. anni 80′-90′) è possibile utilizzarne più di una nello stesso ambiente.

In generale esistono molti tipi di shell, che si dividono principalmente in testuali e grafiche:

Quando si parla semplicemente di “shell”, o anche di “terminale”, si intende di solito una shell testuale con cui l’utente interagisce attraverso un terminale o un terminale virtuale (quest’ultimo può anche far parte della shell stessa anziché essere un programma a parte) tramite un’interfaccia a riga di comando; nel caso di shell grafiche è comune fare riferimento ai cosiddetti desktop environment, che forniscono agli utilizzatori un ambiente grafico da cui è possibile gestire file e avviare programmi.

Una shell testuale (o interprete dei comandi) può definirsi in due varianti.

La prima è costituita da un ambiente simile alle interfacce grafiche, comprensivo quindi di finestre e pulsanti ma dall’assenza di qualsiasi componente grafica. Si utilizza tramite tastiera e, talvolta, mouse.
La seconda è un programma dotato di un’interfaccia a riga di comando, che viene eseguito all’interno di un terminale testuale. L’utente digita un comando, ovvero richiede l’esecuzione di un programma, e il programma eseguito può interagire con l’utente e/o mostrare dati sul terminale.

Shell grafiche

L’evoluzione grafica delle shell è rappresentata dalle cosiddette GUI (Graphic User Interface, interfacce grafiche utente), che hanno una rappresentazione dei dati pensata per essere molto più vicina al modo di percepire il mondo da parte degli esseri umani e quindi più user-friendly.

Con le GUI il computer e il suo contenuto non sono più rappresentati da linee di testo, ma da icone e finestre che permettono di fare operazioni complesse con un clic del mouse. In molti sistemi le operazioni attivate dai click su icone e pulsanti mappano le rispettive istruzioni delle interfacce testuali che rappresentano dunque l’interfaccia diretta con il kernel del sistema operativo o il core delle applicazioni.Il limite delle GUI è il loro alto consumo delle risorse di calcolo del computer: sono più pesanti e in rete geografica possono essere gestite da remoto solo a discapito di prestazioni ed eleganza. Molti utenti esperti, inoltre, le ritengono meno efficienti (ad esempio perché per svolgere compiti ripetitivi possono essere di grande aiuto le capacità di scripting che molte shell testuali incorporano) e meno flessibili.

Le shell grafiche più conosciute sono sicuramente GNOME e KDE (nei sistemi Unix e Unix-like), Finder (in macOS) e File Explorer (nei sistemi Microsoft Windows)

Nei sistemi operativi Microsoft Windows, il comando shell:history accede una cartella speciale di Windows che contiene i file locali modificati dall’utente, e per la quale è possibile impostare la creazione periodica di un punto di ripristino. Naturalmente, non è possibile consultare il contenuto della cartella “History” appartenente ad account differenti da quello corrente, anche se l’utente accede come amministratore del computer, o si dispone di privilegi equivalenti

KERNEL:

Un kernel, in informatica, costituisce la chiave di un sistema operativo, ovvero il software che fornisce un accesso sicuro e controllato dell’hardware ai processi in esecuzione sul computer.
Dato che possono eventualmente esserne eseguiti simultaneamente più di uno, il kernel può avere anche la responsabilità di assegnare una porzione di tempo-macchina (scheduling) e di accesso all’hardware a ciascun programma (multitasking).Un kernel non è strettamente necessario per far funzionare un computer: i programmi possono essere infatti direttamente caricati ed eseguiti sulla macchina, a patto che i loro sviluppatori ritengano necessario fare a meno del supporto del sistema operativo: questa era la modalità di funzionamento tipica dei primi computer, che venivano resettati prima di eseguire un nuovo programma. In un secondo tempo, alcuni programmi accessori come i program loader e i debugger venivano lanciati da una memoria a sola lettura, o fatti risiedere in memoria durante le transizioni del computer da un’applicazione all’altra: essi formarono la base di fatto per la creazione dei primi sistemi operativi.

Un’altra situazione in cui l’assenza di sistema operativo è auspicabile è l’esempio dei microcontrollori minimalisti. L’accesso diretto al kernel da parte di un utente/amministratore può avvenire in modalità user mode o kernel mode.

L’accesso diretto all’hardware può essere anche molto complesso, quindi i kernel usualmente implementano uno o più tipi di astrazione dall’hardware, il cosiddetto: Hardware abstraction layer. Queste astrazioni servono a “nascondere” la complessità e a fornire un’interfaccia pulita ed uniforme all’hardware sottostante, in modo da semplificare il lavoro degli sviluppatori. I kernel si possono classificare – in base al grado di astrazione dell’Hardware – in quattro categorie:

Kernel monolitici, che implementano direttamente una completa astrazione dell’hardware sottostante.

Microkernel, che forniscono un insieme ristretto e semplice di astrazione dell’hardware e usano software (chiamati device driver o server) per fornire maggiori funzionalità.

Kernel ibridi (o microkernel modificati), che si differenziano dai microkernel puri per l’implementazione di alcune funzioni aggiuntive al fine di incrementare le prestazioni.

Esokernel, che rimuovono tutte le limitazioni legate all’astrazione dell’hardware e si limitano a garantire l’accesso concorrente allo stesso, permettendo alle singole applicazioni di implementare autonomamente le tradizionali astrazioni del sistema operativo per mezzo di speciali librerie.

AMBIENTE DESKTOP:

Un ambiente desktop o ambiente grafico (in lingua inglese desktop environment che tradotto letteralmente significa “ambiente della scrivania”, abbrev. DE, o anche desktop, in italiano scrivania), in informatica, è un’interfaccia grafica di un sistema operativo che permette ad un utente di utilizzare il computer o il software in maniera user-friendly tramite l’interazione con oggetti grafici come le icone, le finestre, le barre di scorrimento, la barra delle applicazioni, il menù, ecc. disegnati sullo schermo del computer in quella che è chiamata metafora della scrivania, in maniera del tutto simile a quanto accade con le interfacce grafiche delle applicazioni.

Gli ambienti grafici dei sistemi operativi come Microsoft Windows e macOS impediscono di cambiare totalmente il proprio aspetto, poiché essi sono integrati nel sistema operativo. Quindi tale ambiente grafico tende per il pubblico a rappresentare il sistema operativo stesso. È possibile comunque modificare l’aspetto degli elementi principali dell’interfaccia, come le finestre, i pulsanti e le icone, nonché di modificarne il comportamento, tramite temi e altri software di personalizzazione.

Al contrario, nei sistemi basati sull’X Window System (ad esempio i sistemi Unix-like come Linux), il DE consiste di un componente separato dal sistema operativo, che può essere sostituito in modo indipendente dagli altri moduli. Il sistema può quindi presentare interfacce differenti, mantenendo le stesse funzionalità e gli stessi software. Un DE Unix è composto da un window manager, da skin personalizzabili, da programmi e librerie che gestiscono il desktop. Tutti questi moduli tendono ad essere intercambiabili, modificabili e configurabili anche individualmente, al fine di ottenere la combinazione voluta.

Storicamente l’introduzione dell’interfaccia grafica a finestra tipica del desktop environment è dovuta alla Xerox, mentre la diffusione capillare è senz’altro dovuta a Microsoft Windows.

Server Grafico :

Fornisce l’ambiente e i componenti di base per le interfacce grafiche ovvero il disegno, lo spostamento delle finestre sullo schermo e l’interazione con le periferiche di input quali mouse e tastiera. X non gestisce invece l’interfaccia grafica utente cioè lo stile grafico delle applicazioni che vengono gestite invece dall’ambiente desktop scelto dall’utente e in uso sul computer.

Un’altra caratteristica molto importante è la trasparenza di rete: la macchina dove girano i programmi (client) non deve essere necessariamente la macchina locale (display server). I termini server e client vengono spesso confusi: per X il server è il display locale dell’utente, non una macchina remota. Questo permette anche di visualizzare sullo stesso display applicazioni che vengono eseguite su diversi host, oppure che su un host vengano eseguite applicazioni la cui interfaccia grafica finisce su diversi display.

X è ormai usato secondariamente anche da sistemi operativi che non lo supportano nativamente (es. macOS, che usa nativamente Quartz), per permettere il funzionamento del software progettato per questo sistema grafico, come la suite da ufficio OpenOffice.org e GIMP. Utilizza un modello client/server: in altre parole, il server X comunica con gli altri programmi (client). Il server accetta richieste per output grafici (finestre) e input dall’utente (tramite tastiera, mouse o dal touch screen). Il server X può essere:

-Un programma di sistema che controlla l’output video di un computer;
-Un componente hardware dedicato (i cosiddetti X terminal: calcolatori dotati solo dell’hardware necessario ad eseguire il server X, pensati per visualizzare applicazioni eseguite su appositi server applicativi); un’applicazione che mostra dati su una finestra di un altro sistema grafico. La denominazione client/server spesso confonde i nuovi utilizzatori di X perché i termini sembrano invertiti: sul terminale dell’utente è in esecuzione il “server” che viene utilizzato dai programmi applicativi (client). X fornisce un servizio di visualizzazione ai programmi, in quest’ottica agisce da server, mentre il programma applicativo (che può anche essere remoto tramite connessione remota) usa i servizi, così agisce come un client.

Il protocollo di comunicazione tra server e client opera in modo trasparente rispetto alla rete: entrambi possono risiedere sulla stessa macchina o su altre, anche con architetture e sistemi operativi differenti; il server ed il client possono anche comunicare in modo sicuro attraverso la rete sfruttando un tunnel cifrato (spesso viene utilizzato SSH).

APPLICAZIONI:

Microsoft Office è una suite di applicazioni desktop, server e servizi di tipo office automation per i sistemi operativi Microsoft Windows e macOS, annunciata da Bill Gates il 1º agosto 1988 durante il COMDEX a Las Vegas. La prima versione di Office conteneva Microsoft Word, Microsoft Excel e Microsoft PowerPoint.

In informatica Apache OpenOffice (AOO), (in precedenza OpenOffice.org, abbreviato in OOo) è un software di produttività personale sviluppato da Apache Software Foundation che dal giugno 2011 ne detiene la proprietà ed il copyright e lo distribuisce con licenza libera AL2.

Il suffisso “.org” fu aggiunto nel periodo in cui il software era gestito da Sun Microsystems (poi divenuta Oracle America) dopo una disputa sul marchio con una società olandese, con richiesta che il progetto adottasse formalmente OpenOffice.org come suo nome ufficiale. Tuttavia, comunemente ci si riferisce tuttora alla suite senza usare il suffisso.

Sono disponibili anche diverse versioni di OpenOffice che possono essere trasportate e utilizzate su un supporto di memoria esterna, come ad esempio un supporto USB. Sono generalmente gratuite, open source e disponibili per i sistemi Windows e per Wine. OpenOffice offre un buon livello di compatibilità con i formati di file di Microsoft Office, ma impiega come formati predefiniti quelli definiti dallo standard internazionale OpenDocument basato su XML. I file in questo formato utilizzano l’algoritmo di compressione LZW (lo stesso dei file “ZIP”) ridurre le dimensioni. Apache OpenOffice supporta ufficialmente Linux, Microsoft Windows, Solaris e macOS (la versione 2.x su macOS richiede l’uso di X11), ma è possibile installarlo anche su altri sistemi operativi

DEMONI:

In informatica, nei sistemi Unix, e più in generale nei sistemi operativi multitasking, un demone (daemon in inglese) è un programma eseguito in background, cioè senza che sia sotto il controllo diretto dell’utente, tipicamente fornendo un servizio all’utente. Di solito i demoni hanno nomi che finiscono per “d”: per esempio, syslogd è il demone che gestisce i log di sistema, dhcpd è il demone che assegna l’indirizzo IP in maniera dinamica tramite DHCP, httpd è il demone che fa girare il servizio HTTP ecc…

Spesso i demoni vengono avviati al boot del sistema: in generale hanno la funzione di rispondere a determinate richieste, che siano di rete, hardware, ecc. Ad esempio, alcuni usi dei demoni possono essere la configurazione delle periferiche, (come DEVFS nei sistemi Linux), eseguire dei compiti impostati a determinati intervalli (come cron), gestire il suono (come aRts e esd), gestione del controllo versione (come CVS o subversion) e una vasta varietà di altri compiti. In generale dunque essi offrono all’utente e all’amministratore determinati servizi. In senso strettamente tecnico, i sistemi Unix considerano come demone qualsiasi processo che abbia init come processo padre e che non abbia più alcun terminale controllante (cioè un terminale che gli possa inviare direttamente dei segnali). Poiché init adotta i processi orfani, il metodo comunemente usato dai programmi per rendersi demoni è quello di invocare la chiamata di sistema fork per creare un processo figlio che sia un loro duplicato e poi terminare, mentre il figlio, rimasto orfano (e quindi adottato da init), continua normalmente l’esecuzione chiudendo i canali standard, invocando la chiamata di sistema setsid per disconnettersi da ogni terminale controllante e cambiando la directory corrente a / in modo da non tenere inutilmente occupati dei file system (cosa che impedirebbe di smontarli). Questo idioma di programmazione è talvolta descritto con l’espressione inglese «fork off and die».

Nei sistemi Unix è possibile rendere un qualsiasi programma non interattivo pressoché identico ad un demone eseguendolo in background tramite il comando nohup ed effettuando la redirezione dello standard input, standard output e standard error a /dev/null). Ad esempio:

user@host:/path $ nohup batchscript.sh </dev/null >/dev/null 2>&1 &
[1] 29788
user@host:/path $
Dove:

batchscript.sh è il programma da avviare;
</dev/null indica di usare /dev/null come standard input;
>/dev/null indica di indirizzare lo standard output a /dev/null;
2>&1 indica di indirizzare lo standard error alla stessa destinazione dello standard output (sempre /dev/null);
lo & finale indica di eseguire in background il tutto.

In Microsoft Windows, i programmi che svolgono le funzioni di demone sono i cosiddetti servizi di Windows.

/ 5
Grazie per aver votato!

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?