Flash News

11 Luglio 2008 sarà disponibile il nuovo iPhone 3g, costi? operatori supportati? caratteristiche tecniche? puoi sapere tutto nella discussione: iPhone 3g
 
Tutti I software a portata Di Click

Ultime Dal Forum

Diventare Dio? E' Possibile Con Spor... by Bodom
scritto 21 minuti e 54 secondi fà, con 32 risposte.

Olimipiadi Di Pechino 2008 by Bodom
scritto 25 minuti e 2 secondi fà, con 13 risposte.

Diritti Tv Campionato 2008-2009 by Bodom
scritto 28 minuti e 48 secondi fà, con 5 risposte.

I Preferiti Di Safari by max
scritto 1 minuto e 14 secondi fà, con 5 risposte.

Casa O Cinema by Gemini
scritto 14 minuti e 17 secondi fà, con 6 risposte.

Piano Di Sviluppo 2008/2009 by Gemini
scritto 1 giorni e 15 ore fà, con 26 risposte.

Google...gigante Buono O Cattivo? by shoutshark
scritto 1 giorni e 18 ore fà, con 20 risposte.

Lavori E Sviluppi Sul Sito by Bodom
scritto 1 giorni e 20 ore fà, con 58 risposte.

I Am Legend by davidemac
, con 20 risposte.

Proposta Di Miglioramenti Tecnici by shoutshark
, con 61 risposte.

TiempoLibreSite e anche














Password dimenticata?
Prima Pagina arrow Utilità arrow Pannello Staff
Sistemi Operativi PDF Stampa E-mail
Valutazione utente: / 4
ScarsoOttimo 
 
Pagina vista 2084    
Favoriti 11

Lo staff di TiempoLibreSite.com vi augura un Buon 2007, in maniera diversa con un articolo di Gianfrix In Esclusiva Per la nostra rubrica "Lezioni Di Ingegneria Informatica"; un approfondimento dedicato ai sistemi operativi. Auguri e grazie per aver sclelto TiempoLibreSite.com.

In questa lezione parleremo del sistema operativo, che rappresenta la componente software più importante di un computer. È formato da un insieme di programmi che interagiscono e cooperano tra di loro per realizzare due obiettivi fondamentali: gestire efficientemente l’elaboratore e le sue periferiche, cercando di sfruttare al massimo tutte le componenti hardware e creare un ambiente virtuale per facilitare l’interazione uomo-macchina.
Noi tutti, o almeno la maggior parte, quando si parla di sistema operativo, pensiamo immediatamente alla nostra copia casalinga di Windows XP, e non vediamo l’ora di provare l’ultima release di Casa Microsoft, Windows Vista. Ma non dimentichiamoci che per arrivare all’avvento dei sistemi operativi con interfaccia grafica, siamo dovuti passare dai sistemi operativi con interfaccia esclusivamente testuale, come ad esempio il caro e vecchio MS-DOS.



Certo che se n’è fatta strada. Soprattutto negli ultimi anni, abbiamo assistito a una evoluzione impressionante, non solo per la grafica, ma per tutto quello che un Sistema Operativo ha il compito di svolgere. Andiamo a dare una descrizione a volte più dettagliata, altre volte meno formale e più descrittiva dell’argomento, per cercare di capire bene i fondamenti, l’importanza e il funzionamento di questo componente software. 
Le operazioni effettuate da un Sistema Operativo sembrano abbastanza semplici ma provocano una serie di eventi in cui vengono coinvolte sia risorse hardware che risorse software. Il coordinamento e la gestione delle varie risorse viene effettuato dal Sistema Operativo che fornisce i servizi necessari a tutti gli altri programmi in esecuzione.
Sebbene certe operazioni “sembrino abbastanza semplici” e di uso frequente esse provocano una serie di eventi e azioni molto complesse e articolate. Ad esempio l’immissione di un semplice carattere (tramite tastiera) può provocare l’esecuzione di una decina, o anche più, di funzionalità del S.O.

Strategie adottate
La gestione dei vari eventi che devono essere gestiti da un S.O. è una delle aree di vitale importanza
dell’informatica. L’idea di base che si utilizza è quella di creare una gerarchia di livelli di astrazione. In questo modo, ad ogni livello le funzionalità presenti possono ignorare i dettagli sulle funzionalità offerte da altri livelli. Quando, ad esempio, il modulo “listener” carica un programma prelevandolo dal disco rigido non deve specificare il posizionamento della testina del disco rigido. Queste operazioni vengono effettuate da un altro programma che si trova ad un livello più basso della gerarchia.
Dal punto di vista strutturale il sistema operativo è formato da un insieme di livelli, che formano la
cosiddetta struttura a cipolla. Ciascun livello fornisce un insieme di funzioni e di servizi a partire dalle funzioni e dai servizi forniti dal livello sottostante.

 
Al livello più alto della gerarchia di funzionalità si trova l’utente del sistema. Idealmente l’utente è ignaro di tutti i dettagli delle operazioni svolte dai livelli inferiori della gerarchia; esso conosce solo le operazioni che è interessato ad effettuare.

File System
Esistono diversi tipi di supporti per la memorizzazione permanente delle informazioni: dischi magnetici (floppy disk, hard disk), dischi ottici (cd), nastri magnetici. Il File System è quella parte del S.O. che si occupa di gestire e strutturare le informazioni memorizzate su supporti permanenti.
I file vengono utilizzati come supporto per la memorizzazione dei programmi (sia programmi di
sistema che programmi utente) e dei dati.
Possiamo vedere il disco fisso come un quaderno con tante pagine su cui un utente scrive delle relazioni (file).
 
L’utente ha la necessità di scrivere / modificare / cancellare i file.
I problemi nascono quando un file viene cancellato, allora rimangono delle pagine vuote; oppure la modifica di un file può dare origine ad una versione più corta o più lunga di quella precedente. Nel primo caso rimangono delle pagine vuote, nel secondo caso la modifica può essere impossibile perchè ci potrebbero essere dei file che occupano le pagine seguenti a quelle del file da modificare.
Le soluzioni potrebbero essere: utilizzare un quaderno “ad anelli”: le pagine possono
essere spostate, aggiunte, cancellate senza creare sprechi di spazio e senza limitazioni sulla crescita
delle dimensioni di un file (l’unico limite è quello di avere fogli liberi); utilizzare un indice: le pagine del quaderno vengono numerate e l’indice conterrà (nell’ordine) i numeri delle pagine del file.
 
Con l’organizzazione ad indici, ogni indice conterrà il nome dei file memorizzati. L’indice del quaderno sarà di questo tipo: <nome file>: numeri di pagine…
L’utente mediante l’indice accede ai vari file e il sistema si occupa di reperire le varie pagine.
Il sistema operativo deve fornire una visione astratta dei file su disco e l'utente deve avere la
possibilità di:

  • identificare ogni file con un nome (filename) astraendo completamente dalla sua memorizzazione fisica.
  • avere un insieme di operazioni per lavorare sui file: creare o rimuovere un file, copiarlo, cambiargli nome, inserire informazioni in un file.
  • effettuare l’accesso alle informazioni mediante operazioni ad alto livello, che non tengono conto del tipo di memorizzazione (accedere ad un file memorizzato sul disco rigido oppure su un CD-ROM allo stesso modo).
  • avere la possibilità di strutturare un insieme di file, organizzandoli in sottoinsiemi secondo le loro caratteristiche, per avere una visione ordinata e strutturata delle informazioni sul disco
  •  in un sistema multi-utente, inoltre l’utente deve avere dei meccanismi per proteggere i propri file, ossia per impedire ad altri di leggerli, scriverli o cancellarli.
  • I moderni sistemi operativi (es. Windows) forniscono supporto per queste attività.

Un insieme di operazioni minimale, presente in tutti i sistemi, è il seguente:

  • creazione di un file
  • cancellazione di un file
  • copia di un file
  • visualizzazione del contenuto di un file ad esempio sul video del terminale o in una finestra sul video
  • stampa di un file
  • lettura e modifica del contenuto di un file
  • ridenominazione di un file, per cambiare il nome ad un file
  • visualizzazione delle caratteristiche di un insieme di file (dimensione, data di creazione e dell’ultima modifica, vincoli di protezione, ecc.)

Il numero di file che devono essere memorizzati su un disco può essere estremamente elevato. Si ha quindi la necessità di mantenere i file in una forma ordinata. Un unico spazio (contenitore) di file è scomodo perché le operazioni di ricerca di un file e di creazione di un nuovo file diventano onerose (non è possibile avere due file con lo stesso nome). L'idea è quella di raggruppare i file in sottoinsiemi (seguendo magari dei criteri di tipo logico).
È così che nascono le directory (o cartelle), che è costituita da un insieme di file. I nomi dei file sono locali alle directory (si possono avere due file con lo stesso nome purché siano in due directory diverse). In questo modo l’indice conterrà due tipi di oggetti: nomi di file e nomi di directory. Per identificare un file basta scrivere il suo pathname, che sarebbe il percorso da specificare per raggiungerlo). Anche per le directory, in modo simile ai file, possiamo crearle, rimuoverle, ridenominarle, elencarne il contenuto, copiare o spostare i file da una directory a un’altra.



Avviamento dell’elaboratore

In genere il sistema operativo viene mandato in esecuzione al momento dell’accensione della macchina. Questa fase iniziale prende il nome di bootstrap e, proprio in questa fase, una parte del S. O. (ossia un insieme di programmi e un insieme di dati) viene caricata in memoria principale.
In genere questa parte del S. O. comprende:

  • i programmi per la gestione dei processi e del processore
  •  i programmi per la gestione della memoria
  •  i programmi per la gestione delle periferiche e dell’input/output
  • i programmi per la gestione del file system
  •  un programma che crea l’interfaccia verso l’utente (che può essere sia di tipo testuale che di tipografico)


Una parte del sistema operativo deve essere sempre mantenuta in memoria principale e deve
essere sempre pronta per l’esecuzione. Questo significa che parte della memoria principale
dovrà essere dedicata a mantenere i programmi e i dati riguardanti il sistema operativo. Durante la fase di bootstrap vengono inoltre effettuate operazioni di inizializzazione del sistema per tener conto delle risorse hardware collegate all'elaboratore. Vengono identificati i dispositivi di memoria secondaria e le periferiche collegate e, per ciascuno di essi, viene inizializzato il programma di gestione. In alcuni sistemi vengono anche effettuate delle verifiche sulle risorse hardware, ad esempio, sullo stato dei dischi per scoprire se esistono inconsistenze che si sono create nel corso dell'uso dell'elaboratore.

Gestione del processore e dei processi

Il processore è la componente più importante di un sistema di elaborazione e pertanto la sua corretta
ed efficiente gestione è uno dei compiti principali di un sistema operativo. Il ruolo del processore è quello di eseguire programmi. Consideriamo la seguente definizione di processo: un processo è un programma è in esecuzione. Uno dei compiti principali del sistema operativo riguarda la gestione dei processi. Per il momento assumiamo di trattare sistemi monoprogrammati (anche detti mono-tasking). In sistemi di questo tipo è possibile eseguire un solo programma alla volta: i programmi devono essere eseguiti in modo sequenziale e si può mandare in esecuzione un programma solo quando quello precedente ha terminato l'esecuzione (es. MS/DOS). Supponiamo che il nostro sistema sia un bar in cui un barista serve diversi clienti. Il barista è il corrispondente del processore, i clienti sono l’equivalente dei processi da eseguire. Ecco un esempio di un’esecusione mono-tasking:
 
Quello che viene evidenziato dall’esempio precedente ci dimostra che qualunque processo P alterna fasi di esecuzione a fasi in cui è bloccato in attesa di qualche evento esterno. Un processo può essere in attesa che sia terminata un’operazione di input di dati oppure in attesa di poter usare una risorsa in quel momento occupata. Se si confrontano la velocità di elaborazione di un calcolatore (quindi il tempo in cui un processo è in esecuzione) e i tempi di lavoro delle periferiche di input/output, o addirittura i tempi di reazione umani, risulta che i secondi sono di molti ordini di grandezza maggiori dei primi. Un elaboratore medio esegue un’istruzione di un programma
in un tempo che è dell'ordine di grandezza di un milionesimo di secondo, mentre le periferiche di input/output operano in modo molto più lento, e i tempi di reazione umani per fornire dei dati in input sono addirittura dell'ordine dei secondi. In un’esecuzione sequenziale, mentre il processo attivo è bloccato in attesa di eventi esterni, il processore rimane inattivo, in uno stato chiamato idle, e risulta pertanto sottoutilizzato.
Una soluzione ragionevole per migliorare sia la “produttività” del barista che la qualità del servizio (i clienti arrivano e si mettono in coda aspettando di essere serviti) potrebbe essere quella di servire i più clienti contemporaneamente. Ogni volta che un cliente inizia la consumazione del suo caffè, il barista, invece di restare inattivo può iniziare il servizio del prossimo cliente.
 
Si noti che il termine contemporaneamente è sempre scritto in corsivo. Infatti, poiché vi è un solo barista (un solo processore nel caso di un computer) il servizio non è realmente eseguito in parallelo ma avviene alternando il servizio tra i vari clienti; in questo modo i tempi di inattività del barista sono eliminati. L’idea illustrata mediante l’esempio precedente è l'idea di base del multi-tasking:
più programmi vengono eseguiti contemporaneamente sullo stesso processore. Il numero di processi attivi viene detto grado di multi-programmazione del sistema. Dal punto di vista del processore, in ogni istante vi è un solo processo in esecuzione. Se l'alternanza tra i processi è frequente (ad esempio ogni 10 millisecondi), l'utente ha l'impressione che l'esecuzione dei programmi sia veramente simultanea.
Un processo può trovarsi in tre diversi stati:

  • in esecuzione, quando sta utilizzando il processore;
  •  in attesa (bloccato), quando è in attesa del verificarsi di un evento esterno (terminazione di un’operazione di input/output o altro);
  • pronto, quando è potenzialmente in condizione di poter utilizzare il processore che è occupato da un altro processo.


Quando un processo viene creato (alla richiesta da parte di un utente di eseguire un programma) viene messo nello stato di pronto e in tale stato rimane fino a quando non arriverà il suo turno. Non appena un processo pronto viene selezionato, passa nello stato di esecuzione.
Un processo può abbandonare lo stato di esecuzione per tre diverse ragioni:

  • Terminazione: il processo termina la sua esecuzione e abbandona il sistema.
  • Richiesta di un’operazione di input/output o di una risorsa occupata. In questo caso il processo passa allo stato di attesa, il processore viene liberato e può essere concesso ad un altro processo pronto.
  • Cambio di esecuzione: per realizzare in modo equo l'alternanza tra i vari processi, in certi casi può essere opportuno fermare un processo, rimetterlo nello stato di pronto  e concedere il processore ad un altro processo.

Gestione della memoria centrale

La memoria principale è una risorsa essenziale all'interno di un elaboratore. Un programma per essere eseguito deve risiedere all'interno della memoria principale e lo stesso discorso vale per i dati su cui esso opera. Anche nel caso della memoria principale esistono dei problemi di gestione. Se molti processi devono essere eseguiti contemporaneamente, si dovrà trovare un meccanismo per permettere a questi processi di condividere l'uso della memoria principale. Esistono due aspetti fondamentali della gestione della memoria principale:

  • la gestione della memoria reale.
  • la gestione della memoria virtuale.

Nel primo caso si suddivide la memoria principale tra i processi; nel secondo caso si realizza una visione astratta della memoria principale che consente di estenderne le potenzialità.

Gestione della memoria reale

Data la memoria principale fisicamente esistente all'interno di un elaboratore, come dobbiamo
allocarla ai processi che devono essere eseguiti? Consideriamo dapprima il caso, molto semplice, di
un sistema mono-programmato in cui in ogni istante esiste un solo processo di utente. In realtà abbiamo anche dei processi di sistema, e quindi dovremo destinare una parte della memoria
alla parte residente del sistema operativo e una parte al processo utente.
La memoria è costituita da una sequenza di celle, tutte della stessa lunghezza. Ogni cella è caratterizzata da un indirizzo che viene utilizzato per leggere/scrivere le informazioni. Di solito si sceglie di destinare al sistema operativo le prime o le ultime celle della memoria.
 
Veniamo ora al caso di un sistema multiprogrammato in cui più programmi utente sono eseguiti in alternanza. Consideriamo il caso di due processi P1 e P2: quando P1 è in esecuzione il programma ed i dati corrispondenti devono essere in memoria principale e lo stesso discorso deve valere per P2. Una prima possibilità per risolvere questo problema è quella di suddividere la memoria principale in
modo da contenere simultaneamente le immagini dei due processi. Esistono due tecniche che permettono di raggiungere questo obiettivo, e si parla di:

  • sistemi a partizione multiple con allocazioni contigua.
  • sistemi ad allocazione non contigua.

Nel primo caso la memoria viene suddivisa in partizioni che devono contenere le immagini dei processi; si parla di allocazione contigua perché ciascuna partizione deve contenere interamente
l’immagine di un processo. Nel secondo caso si divide l'immagine di un processo in più parti che possono essere caricate in memoria separatamente.
Nel caso di un sistema con partizioni di memoria multiple sorgono nuovi problemi di gestione per il
sistema operativo. Per tener traccia delle zone di memoria in cui sono stati caricati i programmi è sufficiente mantenere nel descrittore di ciascun processo l'indirizzo iniziale della partizione in cui esso è caricato. Quando si hanno più processi in memoria si deve fare in modo che nessuno di essi possa operare in una zona di memoria destinata ad un altro. Ad ogni processo deve essere consentito di leggere e scrivere solo all'interno della sua partizione in modo da non danneggiare l'esecuzione degli altri.



Gestione della memoria virtuale

Uno degli obiettivi di un sistema operativo multiprogrammato, in particolare in ambiente multiutente, è quello di nascondere il più possibile a ciascun processo (a ciascun utente) la presenza
degli altri processi (utenti) che stanno condividendo le risorse di calcolo. Compito del sistema operativo è quello di fornire ad ogni singolo processo una visione astratta in cui esso ha una macchina virtuale interamente a sua disposizione. Nel caso della gestione del processore abbiamo
visto che la tecnica di alternare l'esecuzione fa sì che ogni utente abbia l'impressione che il suo
programma sia sempre in esecuzione. Per quanto riguarda la gestione della memoria, il problema è più complesso. Si vuole che ogni utente possa, almeno in linea di principio, scrivere programmi grandi almeno quanto la memoria reale e che questi programmi possano essere eseguiti contemporaneamente ad altri. In alcuni casi si vogliono addirittura nascondere agli utenti le dimensioni della memoria fisica e fare in modo che essi possano scrivere dei programmi di
dimensione qualunque, anche molto più grandi dello spazio di memoria effettivamente esistente
sulla macchina hardware. In questo modo, tra l'altro, è possibile che un utente esegua i suoi programmi su macchine differenti, senza doversi preoccupare delle dimensioni delle loro memorie centrali. Questa visione astratta della memoria prende il nome di memoria virtuale e i programmi di sistema che la realizzano prendono il nome di gestori della memoria virtuale. La tecnica fondamentale per la gestione della memoria virtuale consiste nel caricare le immagini dei processi nella memoria centrale a pezzi.
Supponiamo di avere a disposizione una memoria principale (spazio utente) di 1 MByte e di voler
eseguire simultaneamente due programmi che richiedono entrambi 1 Mbyte. Le tecniche di gestione della memoria a partizioni fisse o variabili non ci permettono di eseguire contemporaneamente questi due programmi perché le loro immagini non potrebbero essere caricate nella memoria principale.
Vediamo come possiamo risolvere questo problema con la memoria virtuale.
Si parte dalla considerazione che per eseguire un processo non è necessario caricare completamente in memoria la sua immagine. È sufficiente caricare in memoria principale solo
quelle parti del programma e dei dati che servono durante una certa fase dell'elaborazione; le altre
parti possono essere tenute su un supporto di memoria secondaria. In questo modo la memoria potrà essere condivisa da più processi in quanto, in ogni istante, solo una parte di ognuno di essi risiederà in memoria.
Per realizzare il concetto di memoria virtuale, è necessario avere a disposizione:

  • La memoria principale in cui tenere solo i programmi, o i pezzi di programmi, che servono in un certo istante.
  • Un supporto di memoria secondaria in cui mantenere tutte le immagini dei processi che verranno caricate di volta in volta nella memoria principale (solitamente si utilizzano come supporti di memoria secondaria i dischi rigidi perché sono necessari dei supporti veloci e con accesso diretto, per fare in modo che il tempo richiesto per caricare i programmi dalla memoria secondaria a quella principale non sia troppo alto).

Si possono tenere in memoria solo alcune parti delle immagini dei processi, purché si sia sempre in
grado di caricare le altre parti quando servono. Questa è proprio l'idea che sta alla base delle tecniche di gestione a pezzi e, in particolare, della tecnica di paginazione a richiesta (demand paging). Nella paginazione l'immagine di un processo viene suddivisa in pagine, tutte della stessa dimensione, che vengono caricate all'interno della memoria principale in modo indipendente.
Per avere un sistema di gestione della memoria basato sul demand paging anche la memoria principale dell'elaboratore deve essere suddivisa in un certo numero di blocchi, tutti delle stesse dimensioni.

Realizzato Da Gianfrix In Esclusiva Per TiempoLibreSite.com


Pubblicato in : Rubriche, Lezioni Di Informatica
Cita quest'articolo nel tuo sito web Favoured Stampa Invia ad un Amico Articoli Associati Salva questo su del.icio.us

Commenti utenti (0) File RSS dei commenti

Nessun commento postato

Aggiungi il tuo commento



mXcomment 1.0.8 © 2007-2008 - visualclinic.fr
License Creative Commons - Some rights reserved
< Prec.   Pros. >

 

Perchè Iscriversi | Collabora Con Noi | Nota Legale | Sponsor | Per La Stampa | Contattaci
Multimediale | Informatica | Tempo Libero | Forum
Hardware | Pubblicità | Sicurezza | Prodotti TL | Servizi TL

Offerta Mercury - Guarda le nostre offerte pubblicitarie!

Offerta Mercury - Pubblicità TL

Partners Tematici: Pcprimipassi Soldissimi Zipgenius Divxdoor P2pforum  Varior Phpnukefordonkeys Hwinit Pctuner Hardware Pc Rsoftware Cerca Blog Neodivx.be Tweakness.net CdCopy.it Hwstation.net

Gruppo TiempoLibreSite : TiempoLibreSite Fashion

Creato con Joomla prodotto sotto licenza Gnu/Gpl © - Copyright: TiempoLibre ideato e creato da Catania E. 25/04/2003. Grafica modificata da Catania E. 01 Dicembre 2004.I diritti di traduzione, riproduzione e/o adattamento, totale o parziale sono riservati per tutti i paesi. Nessuna parte di questo sito può essere riprodotta, trasmessa con qualsiasi mezzo senza previa autorizzazione del Webmaster. Ogni marchio registrato appartiene al legittimo proprietario. TiempoLibre Ideato e Creato da Catania E. il 25 aprile del 2003. Tiempo Libre è il logo di proprietà ed esclusivo utilizzo di Tiempolibresite.com.

Puoi trovare le nostre notizie su: Google News, Riassunto, Adv News 24h, Pc-Facile , RedTram.it, Dmoz.org e Technocrati

www.seeyes.itIl Nostro Webserver ApacheI Nostri Database Sono MySQLProgrammato In PHP Gruppo TiempoLibreSite