Il Bootstrap Il BIOS del Computer Il BIOS è l'acronimo di Basic Input/Output System. E' un programma immagazzinato all'interno di un chip di memoria delle vostre schede madri. La memoria in cui è presente questo programma è di tipo ROM (Read Only Memory) una memoria a sola lettura, ma ormai è abitudine utilizzare altri tipi di memorie come EPROM o EEPROM (cioè memorie più flessibili che si possono cancellare e riscrivere in modo elettronico). Che cosa fa il BIOS Il BIOS fa diverse operazioni utili, ne elenchiamo alcune: Lancia la fase di POST (Power-on Self test) - test che il BIOS fa a sè stesso, alla macchina, all'hardware per verificare se ci sono dei problemi. ● ● Avvia il computer e lancia il Sistema Operativo; ● Gestisce varie impostazioni dell'hardware della macchina. Approccio al Sistema Operativo 1 Il Bootstrap Il BOOTLOADER è un piccolo programma utilizzato, come suggerisce il nome stesso, per il boot del sistema. Spesso si commette l’errore di identificare il bootloader con il programma che lo fornisce: prendendo come esempio il loader più utilizzato, LiLO (Linux LOader), si dice che questo sia il bootloader anche se in realtà non è propriamente così: LiLO (il programma) fornisce il bootloader. Il funzionamento di un bootloader è assai complicato ma lo si può sintetizzare e semplificare in poche fasi: ● in un primo momento, il BIOS della macchina carica il bootloader; questo, in seguito, carica il kernel del sistema o i "boot sectors" di altri sistemi operativi (come Windows) passando ad altri programmi la successiva operazione di boot. ● A questo punto la funzione del boot loader è terminata ed inizia la vera e propria fase di bootstrap del sistema operativo. Approccio al Sistema Operativo 2 Il Bootstrap IL KERNEL costituisce il nucleo di un sistema operativo. Si tratta di un software avente il compito di fornire ai processi in esecuzione sull'elaboratore un accesso sicuro e controllato all'hardware. Dato che possono esserne eseguiti simultaneamente più di uno, il kernel ha anche la responsabilità di assegnare una porzione di tempo-macchina e di accesso all'hardware a ciascun programma (multitasking). Naturalmente, un kernel non è strettamente necessario per far funzionare un elaboratore. 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 elaboratori, che venivano resettati prima di eseguire un nuovo programma. Approccio al Sistema Operativo 3 Il Bootstrap SEQUENZA DI INIT All'avvio del sistema, ci sono molte scritte che scorrono e il testo è il medesimo ad ogni avvio. La sequenza di tutte queste azioni viene chiamata boot sequence ed è (più o meno) definita staticamente. Per prima cosa, il boot loader carica l'imagine del kernel, definita nella configurazione in memoria, dopo di che dice alla CPU di eseguire il kernel. Quando il kernel è caricato e in esecuzione, inizializza la struttura del kernel e i task e avvia il processo init. Questo processo si assicura che tutti i filesystem (definiti in /etc/fstab) siano montati e pronti per l'uso. Poi esegue alcuni script situati in /etc/init.d, che avviano i servizi necessari per un corretto avvio del sistema. Alla fine, quando tutti gli scripts sono eseguiti, init attiva i terminali (nella maggior parte dei casi solo le console virtuali che sono nascoste in Alt-F1, Alt-F2, ecc.) attaccandogli un processo chiamato agetty. Questo processo per prima cosa si assicura che sia possibile eseguire il login su questi terminali eseguendo login. Approccio al Sistema Operativo 4 Servizi di Base COSA FA CRON? Cron è un demone che esegue operazioni pianificate gestite tramite il comando crontab. Porta a termine questo compito attivandosi ogni minuto e controllando la presenza di operazioni da eseguire (cron-job) in tutti i crontab degli utenti. Nota: crontab è sia il nome di una lista di cron-job (operazioni da eseguire) che il nome del comando necessario alla configurazione di tale lista. Approccio al Sistema Operativo 5 Servizi di Base Inetd è un demone (servizio) che ascolta sulle porte specificate nel suo file di configurazione e fa avviare il relativo servizio nel momento in cui viene fatta una richiesta. Viene chiamato superdemone proprio per questa sua funzione di controllo di altri demoni. Il vantaggio di usarlo è di ottimizzare le risorse del sistema, avviando il programma che gestisce un determinato servizio solo quando ci sono effettive richieste. Sebbene possa essere usato per gestire quasi tutti i servizi è consigliabile farlo solo per quelli a basso e occasionale traffico. /etc/inetd.conf E' solitamente il suo file di configurazione /etc/services E' un file che assegna un nome di servizio alla relativa porta. Viene usato anche da altri programmi. Inetd è comune su tutti gli Unix, ma su Linux più recenti si utilizza Xinetd,che è una versione più evoluta che introduce nuove funzionalità. Approccio al Sistema Operativo 6 Servizi di Base Nella procedura di inizializzazione del sistema, Getty è quel programma che si occupa di attivare il terminale e iniziare la procedura di accesso. Come dice la pagina di manuale getty: «Getty è il secondo dei tre programmi (init, getty e login) utilizzati dal sistema per permettere all'utente di accedere». In pratica, il programma Getty si occupa di: aprire la linea di terminale e impostare le modalità necessarie; emettere l'invito della procedura di accesso; ricevere il nominativo usato dall'utente per identificare attivare il programma per la procedura di accesso (convenzionalmente si tratta di / bin/login), fornendogli già il nominativo-utente (successivamente è compito di login la richiesta di inserire la parola d'ordine). Il programma Getty tipico fa uso di alcuni file: /etc/gettydefs : per la definizione delle caratteristiche delle linee dei terminali; /etc/issue : per definire un testo di «benvenuto» da inviare all'utente che tenta di connettersi. Approccio al Sistema Operativo 7 Servizi di Base XDM Xdm è il sistema di autenticazione grafica tradizionale di X, incluso anche in XFree86. In condizioni normali, i file e gli script di configurazione che lo riguardano, dovrebbero trovarsi nella directory /etc/X11/xdm/. La configurazione predefinita dovrebbe prevedere l'apertura di una sola sessione grafica locale, escludendo l'accesso remoto. L'avvio del demone xdm, che si occupa di controllare l'accesso e l'avvio di X, dovrebbe essere gestito da uno script della procedura di inizializzazione del sistema; per esempio /etc/init.d/xdm, o altro simile. Tuttavia, anche avviando direttamente l'eseguibile xdm, si ottiene il risultato (naturalmente lo si deve fare con i privilegi dell'utente root). Una volta superata la fase di autenticazione in modo corretto, inizia una sessione, controllata dallo script /etc/X11/xdm/Xsession. Al termine di questo script termina la sessione e ritorna la richiesta di autenticazione per quella stazione grafica. In condizioni normali, questo script dovrebbe richiamare un altro script usato anche per altri sistemi del genere (per esempio /etc/X11/Xsession), che a sua volta dovrebbe occuparsi di avviare lo script personalizzato dell'utente (~/.Xsession o ~/.xsession). Approccio al Sistema Operativo 8 Login e Logout Procedura di accesso, Login e logout, Con procedura di accesso si vuole fare riferimento al procedimento attraverso il quale un utente accede e può interagire con il sistema, dopo una fase di identificazione, che di solito consiste nell'indicazione di un nominativo-utente e di una parola d'ordine. In particolare, login è quel processo che viene usato quando si entra nel sistema. Può essere usato anche per passare in qualsiasi momento da un utente ad un altro (molte delle shell moderne hanno, comunque, il supporto per questa possibilità precompilato al loro interno). Mentre, logout identifica la conclusione dell'attività dello stesso. Approccio al Sistema Operativo 9 Login e Logout Shell: interprete dei comandi Ciò che permette a un utente di interagire con un sistema operativo è la shell, che si occupa di interpretare ed eseguire i comandi dati dall'utente. Dal punto di vista pratico, il funzionamento di un sistema Unix dipende molto dalla shell utilizzata, di conseguenza, la scelta della shell è molto importante. La shell tipica dei sistemi Unix è una shell derivata da quella di Bourne, possibilmente aderente allo standard POSIX: la shell POSIX. Nei sistemi GNU la shell tipica è Bash (il programma eseguibile bash), che è conforme allo standard POSIX. Una shell Unix normale svolge i compiti seguenti: ● mostra l'invito, o prompt, all'inserimento dei comandi; ● interpreta la riga di comando data dall'utente; ● esegue delle sostituzioni, in base ai caratteri jolly e alle variabili di ambiente; ● mette a disposizione alcuni comandi interni; ● mette in esecuzione i programmi; ● gestisce la ridirezione dell'input e dell'output; ● è in grado di interpretare ed eseguire dei file script di shell. Approccio al Sistema Operativo 10 Login e Logout File e file system Second-extended, Ext2, Ext3 Il file system nativo del sistema GNU/Linux è il tipo Second-extended, che prevede due varianti: Ext2 ed Ext3. La variante Ext3 contiene delle estensioni che consentono di ridurre la possibilità di perdite di dati, mantenendo la compatibilità con Ext2. FAT File allocation table. La FAT è una parte componente del file system dei sistemi Dos. È così particolare che tale tipo di file system viene chiamato con questa stessa sigla: FAT. Mount, unmount, Nei sistemi operativi Unix, quando si vuole accedere ai dati memorizzati su disco, non si può fare riferimento a un file appartenente a una certa unità come avviene nei sistemi Dos e derivati. Si deve sempre fare riferimento al file system globale. Per fare questo, tutti i dischi a cui si vuole accedere devono essere uniti tramite un procedimento simile all'innesto di rami. Il termine «montaggio», o mount, indica un collegamento, o l'innesto, del contenuto di un disco nel file system globale; il termine «smontaggio», o unmount, indica il distacco di un disco dalla struttura globale. Approccio al Sistema Operativo 11 Da Ricordare MULTIUTENTE - MULTITASKING Multiutente significa che puo' essere utilizzato da piu' utenti contemporaneamente, mentre multitasking significa che permette l'esecuzione di piu' programmi contemporaneamente. PROCESSO ● mem ● stat ● ps ● top ● jobs Approccio al Sistema Operativo 12 Bibliografia Documentazione di Gentoo: http://www.gentoo.org/doc/it/ Appunti di Informatica Libera: http://a2.pluto.it/ Html.it: http://linux.html.it/ Google: http://www.google.it/linux Approccio al Sistema Operativo 13