Principale
Le Rubriche di TL
Forum
Contattaci
Collabora Con TL
Notizie da Divax.it
News Da Fashion - UDL
Curiosità
Utilità
Glossario Multimediale
Glossario Sicurezza
Sicurezza
Guide
Hardware
TL Awards
Per La Stampa
Iscriviti
Nota Legale
Offerta Mercury

Su Cipcip Store Puoi Trovare Anche Home Theater, Lettori Divx e Molto Altro

Offerta Mercury - Pubblicità TL

Tutti I software a portata Di Click
Ultime Dal Forum
Chi Scrive Dopo Di Me... by granchio
scritto 12 minuti e 53 secondi fà, con 101 risposte.

Le Tv E Le Radio Di Tutto Il Mondo In St... by granchio
scritto 28 minuti e 21 secondi fà, con 3 risposte.

Grand Theft Auto Iv by granchio
scritto 40 minuti e 17 secondi fà, con 0 risposte.

Installare Openoffice by Bodom
scritto 27 minuti e 48 secondi fà, con 3 risposte.

Vedere La Tv Sull'imac by Bodom
scritto 29 minuti e 36 secondi fà, con 2 risposte.

Avira Antivir Personaledition Classic by shoutshark
scritto 19 minuti e 48 secondi fà, con 4 risposte.

Progetto Software Crucibit by shoutshark
scritto 22 minuti e 15 secondi fà, con 25 risposte.

Anche Un Pc Spento Consuma Energia by max
scritto 4 minuti e 46 secondi fà, con 6 risposte.

Ultime Dalla Redazione by Gemini
scritto 19 minuti e 7 secondi fà, con 12 risposte.

Grand Theft Auto 4 by granchio
scritto 38 minuti e 4 secondi fà, con 14 risposte.

Informazioni Generali
Offerta Moon
TiempoLibreSite e anche








Vai Al Forum di TiempoLibreSite.com

Sistemi Operativi PDF Stampa E-mail
Giudizio Utente: / 4
ScarsoOttimo 

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

< Precedente   Successivo >
Offerta Mercury

XboX, Playstation, Game Cube, PSP

Offerta Mercury - Pubblicità TL










Sondaggi
Hai letto il nostro articolo su DRAGON BALL Z BUDOKAI TENKAICHI 3? Qui puoi dare personalmente un vo
  
Rss
Le Rubriche Di TiempoLibreSite
Le Guide Di TL
Guida Al LossLess
Guida Al DivX
Salva i Crediti Di Emule
Media Player Classic

Archivio Discussioni...
I Forum

Forum Dedicato Al Divx, XviD e i nuovi formati Matroska & OGM Mpeg 4 & Nuovi Formati

Forum Dedicato All' Mpeg 1 e Mpeg 2  Mpeg 1/2 Video Quality

Forum Deidicato All'audio  Audio

Forum Ufficiale Dedicato Ai Video Games Video Giochi

  Multimedia Home Device

Internet & Pc

Sicurezza Informatica

MyMac - ll forum dedicato ad Apple MyMac

Linux

   Fashion - Desktop

TiempoLibre Love

File-Sharing & Ip TLC

  Hardware Pc

    Net Agorà

Chi l'ha visto?

Forum Dedicato Al Divx, XviD e i nuovi formati Matroska & OGM Cinema

  Al Volante

Musica

Forum Ufficiale Dedicato Ai Video Games Spot Tv

Colonne Sonore

   Opinioni

  Area Di Servizio

Vai Al Forum... Vai Al Forum

 

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

CipCipStore.it - Console e accessori Playstation 2 - Playstation 3 - Xbox 360 - Sony PSP - Nintendo Wii

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 FreeDivX.it Salvatore Aranzulla Hwstation.net

Gruppo TiempoLibreSite : TiempoLibreSite Fashion

Creato con Mambo prodotto sotto licenza Gnu/Gpl 2004 © - 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. Zenit è 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