Caricare documenti e articoli online 
INFtub.com è un sito progettato per cercare i documenti in vari tipi di file e il caricamento di articoli online.


 
Non ricordi la password?  ››  Iscriviti gratis
 

I SISTEMI OPERATIVI

informatica



I SISTEMI OPERATIVI


Il mercato del computer si è popolato di molti clienti privi di conoscenze tecniche approfondite che richiedono programmi user friendly cioè facili da usare. Il sistema operativo è un insieme di programmi scritti allo scopo di rendere disponibili all'uso le risorse di calcolo e i dispositivi collegati al computer. È opportuno che il sistema operativo sia comunque in grado di accedere anche a dispositivi non previsti inizialmente purché questi vengano forniti dal software necessario detto anche device driver.

I dispositivi realizzati in tecnologia plug and play (inserisci e usa) colloquiano con il sistema in modo tale da farsi richiedere l'installazione dei driver corretti. Un device driver scritto per uno specifico dispositivo può anche non funzionare per un altro simile.

Molti dispositivi hardware vengono costruiti secondo standard affermati che ne regolamentano diversi aspetti come le dimensioni, le funzionalità supportate e i comandi che si possono impartire al dispositivo. Per esempio i personal computer compatibili IBM, stampanti compatibili EPSON, le CPU compatibili INTEL. Questi standard si sono imposti e continuano ad imporsi in diversi modi: in conseguenza del dominio sul mercato di una particolare azienda produttrice, per mezzo di normative erogate da istituti riconosciuti a livello internazionale come ISO, in seguito a lavori di gruppi di ricerca di team di aziende concorrenti che iniziano a lavorare insieme nello sviluppo di nuovi componenti e tecnologie.

Un sistema aperto è un sistema operativo costruito in modo da poter operare con una molteplicità di dispositivi come ad esempio il sistema operativo Unix che può controllare macchine fra loro molto diverse costruite su unità centrali non compatibili. Un sistema proprietario è scritto per essere eseguito su un insieme ristretto e ben specifico di macchine. La struttura formale di un sistema operativo è gerarchica questo significa che i programmi che lo compongono si collocano a livelli diversi, si servono a livelli che 919b19j stanno a livelli sottostanti e servono i programmi dei livelli superiori. All'interno di ogni livello si usa raggruppare tutti i programmi scritti per risolvere un determinato problema detti moduli.Ogni procedura standard per mezzo della quale il modulo mette a disposizione i servizi viene detta primitiva. I moduli che lavoro direttamente sulle risorse hardware del sistema costituiscono i livelli più bassi della gerarchia. Questi moduli si dicono che virtualizzano i dispositivi ossia li trasformano in macchine virtuali in grado di eseguire operazioni più complesse definite in modo logico piuttosto che fisico. Un'operazione logica corrisponde all'esigenza dell'utente di ottenere un risultato, mentre, un'operazione fisica consente di eseguire molte operazioni elementari dipendenti dal particolare elaboratore. I moduli ai quali le primitive appartengono inoltrano le richieste ai moduli di livello inferiore usando le loro primitive e così avanti fino a raggiungere l'hardware. Il modulo infine è una collezione di routine che attivano i meccanismi fisici necessari per risolvere problemi logici di uno stesso tipo. L'unico modo in cui un modulo può comunicare con un altro è attraverso le primitiva da essi implementate. Il grado di portabilità del sistema operativo intendendo la sua attitudine ad essere eseguito su macchine diverse: tale grado è tanto maggiore quanto è minore il costo delle modifiche necessarie.



I sistemi operativi gestiscono le risorse della macchina in modo diverso e in base alle esigenze dell'utente. Una scelta importante che si deve affrontare consiste nel decidere se il calcolatore deve essere o no in grado di eseguire diversi programmi contemporaneamente. Le risorse hardware sono:

  • CPU,
  • Memoria di massa,
  • Memorie centrali,
  • Dispositivi di ingresso e di uscita,
  • Gli elaboratori di canale,
  • I dispositivi multimediali,
  • I coprocessori matematici e gli acceleratori grafici.

Un sistema viene detto monoprogrammato quando la sua memoria centrale contiene in un dato istante codice utente proveniente da un unico programma. Si può suddividere il tempo che intercorre tra l'inizio e la fine del programma in intervalli caratterizzati dalle diverse attività della CPU:

  • esecuzione di istruzioni del programma utente (TEMPO UTENTE) ,
  • esecuzione di istruzioni del sistema operativo (TEMPO SISTEMA),
  • inattività per esempio quando attende un input (TEMPO INATTIVO).
  • E la somma di tutti questi viene detta TEMPO TOTALE.

Il sistema operativo ottenuto dalla realizzazione pratica di queste idee viene detto multiprogrammato. Si dice che una risorsa viene gestita in modo time sharing quando il suo uso viene concesso per un tempo che non può superare un massimo questo intervallo viene chiamato time slice. Se la CPU di un sistema multiprogrammato viene gestita in time sharing essa rimane assegnata ad un programma utente finché non si verifica una di queste eventualità:

  • il programma utente termina,
  • scade il time slice,
  • il programma utente richiede che vengano effettuate operazioni che coinvolgono altri dispositivi.

Appena accade uno di questi eventi il controllo dell'unità centrale passa al sistema operativo che decide a quale tra gli altri programmi in memoria centrale spetti il prossimo time slice. Il tempo necessario a prendere tale decisione si chiama tempo di riassegnamento.

Le modalità con le quali il sistema operativo prende queste decisioni costituiscono un esempio di politica di gestione. La realizzazione più semplice consiste nell'assegnamento round robin (a rotazione). Il programma a cui è stata tolta la risorsa viene messo in fondo ad una coda di programmi in attesa. Quando tutti gli altri avranno eseguito le operazioni nei time slice di competenza esso ripartirà da dove è arrivato. È possibile che un sistema operativo usi meccanismi di priorità che consentono ad alcuni programmi di essere eseguiti più rapidamente.

Le tre configurazioni fondamentali con le quali un sistema viene offerto agli utenti sono: sistema dedicato, sistema batch (a lotti), sistema interattivo multiutente.

Sistemi dedicato: i sistemi dedicati sono i sistemi che prevedono l'utilizzo da parte di un solo utente per volta. I sistemi dedicati attuali supportano il multitasking che è un tipo particolare di multiprogrammazione nella quale più applicazioni (task) vengono eseguite contemporaneamente sulla stessa macchina scambiando tra loro dati e risultati. Questi elaboratori funzionano con i sistemi operativi Windows e Unix. Un altro termine utilizzato a proposito di questi sistemi dedicati è multithreading che rispetto al multitasking indica meccanismi di protezione tra i programmi più evoluti e sicuri, tipici del sistema di livello superiore: un lavoro, un processo, un task possono essere scomposti in parti più piccole dette thread che procedono indipendentemente. Nei sistemi dedicati e multitasking spesso si fa ricorso ad ambienti grafici a finestre, nei quali le varie applicazioni possiedono un'interfaccia utente che occupa una parte delimitata dello schermo. In questo modo si possono vedere contemporaneamente diverse applicazioni in esecuzione e si può passare dall'una all'altra secondo la necessità usando il mouse o la tastiera. Il sistema operativo in questi casi dispone di librerie a collegamento dinamico (DLL, Dynamic Link Library) che contengono procedure e funzioni condivise da diversi applicazioni. I moduli costituiti dalle librerie dinamiche contengono di norma una serie di primitive omogenee per tipologia per caso nel sistema Windows si ha una libreria contenente tutte le finestre di dialogo destinate a segnalare errori o messaggi all'utente o necessarie per eseguire procedure standard di sistema (dove salvare un file). Si ha poi una libreria per la gestione dei dispositivi multimediali e molte altre. In un dato istante la memoria centrale contiene codice proveniente da programmi applicativi delle librerie dinamiche e dai moduli di livello più profondo del sistema operativo ottenendo uno sfruttamento intenso delle risorse disponibili, possibile per esempio eseguire il background (in sottofondo) un programma che visualizzi l'ora, un programma antivirus.

Sistemi batch: In un sistema tipo batch (a lotti di lavoro) l'utente non interagisce con il calcolatore durante l'esecuzioni del programma. Il lavoro batch può quindi essere considerato l'opposto di interattività, intendendo con questo termine la possibilità di fornire i dati che servono al momento della richiesta di ottenere risultati parziali durante l'esecuzione oppure messaggi di avvertimento o di errore. L'impiego batch delle risorse presenta evidenti svantaggi, ma permette uno sfruttamento intelligente delle risorse in quei casi in cui l'intervento dell'operatore non è strettamente necessario. Una volta che il lavoro richiesto dall'utente è terminato, tutto l'output sta su disco ed occorre eseguirne la stampa. Questa operazione non deve però coinvolgere in alcun modo la CPU che può così dedicarsi alle successive elaborazioni. Il dispositivo che si preoccupa del trasferimento dell'output si chiama elaboratore di canale. Gli elaboratori di canale possono essere associati a qualsiasi periferica e sono costituiti da un'area di memoria detta buffer (memoria temporanea), nella quale si accumulano i caratteri da trasferire, e da un dispositivo logico che ne controlla il flusso dalla sorgente al buffer e da questo alla destinazione. Quindi nel sistema batch l'utente deve impostare tutti i dati del programma in anticipo. Occorre perciò disporre fin dall'inizio del lavoro di tutti i dati che verranno richiesti dai diversi programmi da eseguire ed inoltre non si può contare su output parziali nel corso dell'esecuzione. Le fasi del lavoro batch sono: preparazione dei dati, inoltro all'elaboratore e ritiro dei risultati. I diversi utenti preparano i propri job (lavori) su dispositivi offline (non connessi all'elaboratore) il cui uso costa poco rispetto a quello della macchina. Opportune periferiche provvedono a portare online (in linea, pronti per l'elaborazione) i job:questi possono essere lettori di dischi o nastri perforati o unità a dischi mobili o a nastri magnetici. Il nome tecnico con i quale viene indicata una sequenza di fasi da eseguire in modo batch è job stream (traccia del lavoro). Alternativamente, la sequenza dei comandi può essere memorizzata su un file, scritto usando un videoterminale. Con questo comando si può specificare:

o   Il nome del file contenente il job stream

o   Il nome dell'utente al quale addebitare l'esecuzione

o   La periferica di uscita verso la quale va indirizzato l'output

o   Eventualmente l'ora alla quale far mettere in coda il lavoro perché venga eseguito

Quando un job termina il sistema operativo deve riconoscere che l'output generato è stampabile e quindi porlo in una coda di stampa associata all'elaboratore di canale corrispondente all'unità di uscita richiesta dall'utente. Rispetto ai sistemi operativi per elaboratori dedicati, quelli che lavorano in ambienti batch devono perciò avere in più i moduli che:

o   Gestiscono le code di lavori in ingresso e le code di stampa

o   Provvedono alla protezione reciproca degli utenti

o   Realizzano i meccanismi di assegnazione delle risorse

Il termine batch viene usato in modo più esteso di quello qui presentato per indicare un qualsiasi insieme di programmi da eseguire uno dopo l'altro. Per esempio nel sistema operativo DOS è possibile scrivere file di testo chiamati script (o file batch) contenente sequenze di comandi e chiederne l'esecuzione.

Sistemi interattivi multiutente: Con i sistemi batch si riesce a migliorare l'efficienza con la quale vengono impiegate le risorse, sostanzialmente realizzando un parallelismo tra le operazioni dei diversi dispositivi, mentre la CPU elabora altri dispositivi eseguono operazioni accessorie come il trasferimento dei dati. L'obbiettivo da raggiungere consiste nel mettere a disposizione di ciascun operatore una periferica interattiva come il videoterminale, attraverso la quale si possano usare le risorse del sistema in modo simile a quello di un sistema dedicato. Il mezzo che consente di raggiungere tale obiettivo è l'uso time sharing della CPU: la risorsa CPU viene dedicata a ciascun utente a turno per un tempo stabilito. La velocità della CPU costituisce un parametro critico di un sistema dove essa viene gestita in time sharing. Per poter eseguire un numero elevato di operazioni in un tempo piccolo come deve essere il time slice non c'è soluzione diversa dall'essere veloce. In presenza di alte velocità di CPU e grandi dimensioni di memoria centrale possiamo avere dei sistemi interattivi multiutente.

o   Gli utenti devono essere serviti in un tempo ragionevole, perciò in questo tempo si deve trovare almeno un time slice dedicato a ciascuno, meglio se più di uno.

o   Se gli utenti sono molti occorre che i time slice siano brevi

o   Se i time slice devono essere brevi, devono essere sempre molto più lunghi del tempo di riassegnamento.

Riducendo la durata del time slice, il numero delle commutazioni tra utenti cresce troppo e di conseguenza il tempo dedicato alle routine di sistema diviene eccessivo. Si cade cioè nel system overload situazione nella quale le attività del sistema operativo impegnano troppo la CPU. In questa modalità di lavoro assumono ovviamente grande importanza due parametri:

o   Velocità della CPU cioè il numero di istruzioni che la CPU esegue in 1 secondo misurato in MIPS (milioni di istruzioni per secondo)

o    Dimensione della memoria centrale deve essere sufficientemente grande per contenere oltre ai moduli del sistema operativo i processi degli utenti e i dati su cui operare.

Sistemi transazionali: Tra i sistemi interattivi multiutente evidenziamo i sistemi transazionali strutturati appositamente per gestire le transazioni ossia le operazioni di updating (aggiornamento) di archivi e basi di dati di dimensioni rilevanti che hanno la loro collocazione naturale in applicazioni di tipo gestionale: per esempio la rete Bancomat, la rete telematica. Su uno di questi interventi non va a buon fine per qualsiasi motivo occorre garantire che anche gli altri vengano annullati (operazione di rollback) in modo che l'operazione possa essere ripetuta in seguito. In questo modo viene salvaguardata la mutua integrità dei dati nei diversi archivi.

Sistemi real time: Comunemente si dice che un sistema lavora in real time (tempo reale) quando risponde istantaneamente agli stimoli provenienti dall'esterno. In un sistema real time, un'elaborazione può considerarsi corretta non solo quando fornisce risultati esatti, ma soprattutto quando li fornisce in tempo; cioè un risultato che arriva in ritardo è un risultato inutilizzabile e quindi errato. Questo non è mai realizzabile in pratica in quanto qualsiasi sistema fisico ha un tempo di reazione. Quando il tempo di reazione dell'elaboratore non è essenziale alla corretta evoluzione dell'ambiente in cui è inserito ma può variare in un intervallo si dice che il sistema opera in tempo reale in senso lato. Il sistema di calcolo deve pertanto avere tempi di reazione minori, ed in qualche caso molto minori, di quelli caratteristici dell'ambiente in cui inserito e si parla allora di funzionamento in tempo reale in senso stretto.

CPU activity (attività della CPU): E' il rapporto espresso in percentuale tra il tempo in cui la CPU opera e il tempo totale in cui il sistema funziona. Può essere divisa in due parti che descrivono l'attività al servizio dei programmi utente e quella dedicata al sistema operativo

Throughput (produttività): Questo concetto è di per sé molto generico, e indica qualsiasi parametro che misura quanto lavoro si può svolgere in una unità di tempo. La produttività differisce dalla CPU activity in quanto considera il tempo di sistema nello stesso modo del tempo inutilizzato. Perciò se troppi utenti sono connessi al sistema, la CPU activity sarà molto alta ma la produttività molto bassa a causa della quantità eseguita di risorse destinate a ciascuno.

Il compito del sistema operativo è di garantire la corretta evoluzione dello stato, assegnando le risorse in modo che tutti i richiedenti vengano prima o poi soddisfatti e realizzando la sicurezza per ciascun utente e per sé stesso. Il termine processo definisce un insieme formato da un elenco finito di azioni da eseguire in sequenza e dai dati che vengono elaborati dalle stesse azioni. Questo concetto è diverso da quello di programma almeno per due aspetti:

  • Un processo evolve nel tempo, mentre i programmi sono la traduzione di algoritmi
  • I processi sono sequenziali, mentre i programmi contengono salti e cicli

Chiamiamo processore l'oggetto che causa l'evoluzione del processo. Un processore assegnato alla CPU può richiedere l'intervento del sistema operativo per tre motivi:

v Il processo termina: il sistema operativo libera l'area di memoria centrale occupata dal processo e la riempie con uno dei processi parcheggiati se ve ne sono.

v Il time slice finisce: il sistema operativo sospende il processo attribuendogli lo stato di pronto

v Il processo richiede un'operazione di I/O: pertanto il sistema operativo gli attribuisce uno stato di attesa e genera un nuovo processo attivando le proprie routine.

Gli stati possibili nei quali si può trovare un processo sono:

v Parcheggio: quando attende di essere caricato in memoria centrale

v Pronto: quando attende che gli venga assegnata la CPU

v Esecuzione: quando il processo è in evoluzione perché gli è stata assegnata la CPU

v Attesa: quando richiede un'operazione di I/O su una periferica

v Terminazione: quando il processo è stato completato e può essere tolto dalla memoria centrale

Nella memoria centrale sono allocati i processi di esecuzione, pronti e in attesa I/O. Nella memoria di massa sono allocati i processi parcheggiati. I passaggi di stato sono i seguenti:

v Da parcheggio a pronto: il processo viene caricato in memoria centrale e attende l'uso della CPU

v Da pronto ad esecuzione: la CPU viene assegnata al processo

v Da esecuzione a pronto: scade il time slice e al processo viene tolta la CPU

v Da esecuzione ad attesa: il processo richiede un'operazione di I/O e ad esso viene tolta la CPU anche se il time slice non è scaduto

v Da attesa a pronto: l'operazione di I/O è stata terminata e il processo viene messo   nella coda dei processi pronti per l'uso della CPU

v Da esecuzione a terminazione: il processo è stato completato nella sua evoluzione.

Le richieste di I/O hanno la caratteristica di durare un tempo a priori non prevedibile. Quando un evento avviene in tempi che dipendono da fattori esterni al sistema viene detto asincrono. Il verificarsi di questi eventi viene comunicato alla CPU usando il meccanismo di interrupt (interruzione): in pratica il dispositivo al livello del quale avviene l'evento invia un segnale alla CPU attraverso una apposita linea elettrica. Con questo meccanismo si può segnalare alla CPU che è successo qualcosa e che deve interrompere momentaneamente la sua attività per eseguire un compito particolare. A seconda del tipo di interruzione vengono attivate diverse routine di sistema operativo che provvedono all'attuazione delle misure necessarie. In ogni caso queste comprendono il salvataggio dello stato del processo in esecuzione in una zona riservata della memoria centrale chiamata vettore di interrupt. I tempi del fenomeno non dipendono da fattori esterni alla macchina si parla in questo caso di interruzione sincrone. Si possono distinguere tre tipi di interruzioni:

v Interrupt asincroni generati dal hardware( fine di una stampa o di una scrittura su disco)

v Interrupt sincroni generati dal hardware che segnalano eventi accaduti in relazione all'orologio interno

v Interrupt sincroni provocati via software usati per accedere a routine particolari.

Per entrare nel dettaglio delle funzioni svolte dal sistema operativo, si utilizza un modello che consente di mettere a fuoco i principali meccanismi di interazione tra le varie parti che lo costituiscono e di queste con l'esterno. La schematizzazione usata è di tipo gerarchico e viene detta a macchine virtuali. Una macchina virtuale è un oggetto costituito da una macchina più semplice, in grado di eseguire un certo insieme di operazioni fisiche, e da un modulo che fornisce un'interpretazione logica di tali operazioni: l'insieme costituisce una nuova macchina in grado di eseguire operazioni logiche. Il sistema operativo genera a partire dalla macchina hardware una gerarchia di macchine virtuali ciascuna delle quali soddisfa principalmente questi requisiti:

v Risolve il problema dell'utilizzo delle risorse da parte dei moduli di livello superiore

v Moltiplica il numero dei dispositivi disponibili, accogliendo più richieste di quelle che il sistema può servire contemporaneamente, soddisfacendole nell'ambito delle politiche decisionali scelte.

Il modello onion skin (buccia di cipolla) elaborato da Deitel nel 1983 rappresenta il sistema operativo come una successone di strati costruiti sopra un nocciolo costituito dalla macchina hardware ciascuno dei quali rappresenta un livello di macchina virtuale. Ciascuno strato costituisce un modulo, composto da programmi che vedono solo le procedure implementate dagli strati sottostanti, attraverso le primitive che possono quindi essere invocate solo dai moduli di livello superiore.  Il modello onion skin è formato da: interprete di comandi, file system, gestione periferiche, gestione della memoria e nucleo.

NUCLEO: Il nucleo chiamato anche kernel è la parte del sistema operativo più vicina alla macchina ed è strettamente dipendente dall'hardware. Le funzioni fondamentali del nucleo sono:

  • Avvio e terminazione dei processi
  • Assegnazione della CPU ai diversi processi
  • Sincronizzazione tra i processi
  • Sincronizzazione dei processi con l'ambiente esterno

Il nucleo comprende tutte le routine di risposta alle interruzioni e le procedure che assegnano la risorsa CPU ai diversi processi. Le norme che regolano queste assegnazioni vengono chiamate politiche di scheduling. Tra esse la più semplice è quella round robin che prevede una coda di processi pronti ed un insieme di processi in attesa. I processi a priorità più elevata possono essere favoriti in diversi modi:

  • Assegnando loro time slice più lunghi
  • Scegliendoli più spesso all'interno delle code di priorità

LA GESTIONE DELLA MEMORIA: Il secondo livello del modello a macchine virtuali simula l'esistenza di una pluralità di unità di memoria centrale. Questo metodo viene detto a partizioni fisse ed è il più semplice da realizzare ma rappresenta due limiti fondamentali:

v Il numero massimo di processi che possono essere allocati in memoria è prefissato

v Un blocco contenente un processo molto breve viene considerato comunque occupato e perciò lo spazio rimanente risulta sprecato.

Questi problemi sono evitati se non si impone un insieme fisso di partizioni ma si caricano i programmi ovunque ci sia spazio sufficiente ad accoglierli. Questa seconda politica di uso della memoria centrale è detta a partizioni variabili e sfrutta meglio della precedente la risorsa, al prezzo però di un maggior carico di lavoro svolto dal sistema operativo. La scelta della partizione dove caricare un nuovo programma può essere fatta in due modi:

  • Si carica nella prima zona libera sufficientemente grande per contenere il programma usando l'algoritmo first fit (primo accordo)
  • Su carica nella zona libera più piccola tra quelle adatte a contenere il programma usando l'algoritmo best fit (miglior accordo)

Il first fit risulta essere mediamente più efficiente del best fit: infatti si perde meno tempo usando il primo posto libero e creandolo se non si trova piuttosto che cercando tutte le volte il posto migliore.

Nel caso di programmi molto grandi di dimensioni confrontabili con quelle della memoria centrale, la loro allocazione sarebbe problematica, si adottano perciò tecniche dette di funzionamento in overlay (sovrapposizione). I processi hanno a disposizione la memoria centrale che serve anche se in realtà essa è solo virtuale in quanto non corrisponde alla memoria fisica.

La gestione della memoria virtuale si realizza attraverso due diverse tecniche di suddivisione dei programmi in blocchi: la paginazione e la segmentazione.

v Paginazione: Ogni programma viene considerato diviso in blocchi di eguali dimensioni detti pagine logiche, analogamente la memoria centrale viene divisa in pagine fisiche di dimensioni uguali a quelle delle pagine logiche. Una tabella riassume la situazione nella quale si trovano le varie pagine di ogni programma. In particolare, per ogni pagina occorre sapere:

o   Se occupa una pagina fisica

o   La pagina occupata

o   La posizione sul disco della pagina logica

o   Altre informazioni come il flag che indica se la pagina è stata modificata

o   Ad ogni accesso alla memoria si verifica se la pagina richiesta è presente in memoria centrale e se non lo è il sistema operativo provvede a caricarla in una pagina fisica libera.

o   Il vantaggio principale della paginazione è la semplicità dovuta al fatto che tutte le pagine logiche o fisiche, hanno eguali dimensioni mentre il difetto più importante è l'arbitrarietà con cui le pagine logiche vengono generate suddividendo il programma, il che generalmente aumenta il numero di chiamate tra pagine diverse e perciò diminuisce l'efficienza.

v Segmentazione: con questa seconda tecnica di gestione della memoria virtuale la suddivisione del programma viene effettuata sulla base di criteri logici e può essere controllata dal programmatore. Ciascun blocco risultante da tale suddivisione ha lunghezza arbitraria, talvolta limitata a valori inferiori ad una lunghezza massima e viene detto segmento. Per ogni segmento dei programmi da eseguire occorre sapere:

o   Se è presente in memoria

o   Qual è l'indirizzo dove inizia

o   Dove si trova sul disco

o   Le sue dimensioni

Tra i vantaggi principali della segmentazione elenchiamo:

o   La possibilità di far condividere a più processi alcuni segmenti

o   La mancanza di vincoli sul numero di segmenti caricabili in memoria, al contrario del numero fisso delle pagine

È possibile combinare le due tecniche presentate suddividendo in pagine ciascun segmento: in questo modo si aggiunge ai vantaggi della segmentazione la facilità d'uso della memoria paginata. In conclusione va rilevato che le operazioni di gestione della memoria vengono realizzate a volte a livello di hardware per mezzo della memory management unit (unità di gestione della memoria) che aumenta la velocità ma anche il costo del sistema.

LE PERIFERICHE VIRTUALI: Il terzo livello del sistema operativo consente di definire dispositivi virtuali. Inoltre attraverso questo modulo il sistema operativo offre a diversi utenti la possibilità di aumentare in modo virtuale il numero delle periferiche stesse attraverso lo spooling: il termine deriva da SPOOL Simultanoeous Peripheral Operation On Line, cioè sistema in linea di operazione periferica simultanea esso consente a diversi processi l'uso contemporaneo della stessa periferica.

FILE SYSTEM:  Il file system è il quarto livello del modello a macchine virtuali, provvede alla virtualizzazione delle memorie di massa e genera una macchina costituita da una pluralità di dispositivi indipendenti l'una dall'altro, ciascuna ha a disposizione tutte le risorse virtuali che gli possono occorrere. Tutto quello che viene registrato sulla memoria di massa prende il nome di file. Le principali funzioni del file system sono:

  • Gestire in modo ottimale lo spazio a disposizione nella memoria di massa
  • Garantire all'utente l'accesso ai dati contenuti nei file
  • Fornire meccanismi di protezione dei file
  • Rendere disponibile in modo semplice le operazioni di uso comune sui file

I più comuni supporti di memoria di massa sono nastri e dischi magnetici. Per individuare file descritti in altre direttrici si dovrà indicare il loro pathname (nome di file espresso attraverso un cammino). Possiamo avere il pathname assoluto quando il nome del file viene descritto elencando tutti i nodi che occorre attraversare a partire dalla root fino ad arrivare al file. Mentre si dice pathname relativo quando invece l'attraversamento inizia dalla directory corrente.

INTERPRETE DI COMANDI: L'utente in modo facile sceglie la funzione desiderata selezionando l'icona corrispondente mediante strumenti di puntamento guidati dal mouse. L'interazione con il sistema operativo non è più riservata a specialisti di informatica e perciò l'interfaccia deve essere il più possibile amichevole (user friendly). Il processo di esecuzione dell'interprete comandi viene considerato il processo padre degli altri processi che verranno lanciati nel corso della sessione di lavoro. Quando viene richiesta l'esecuzione di un programma da linea comandi l'interprete comandi apre un processo per lanciare l'analizzatore sintattico e trasformare la riga di comando digitata dall'utente in un insieme di parametri da restituire al processo padre. Questo riprende il controllo e se il processo figlio è terminato senza errori apre un altro processo per eseguire il comando vero e proprio. In un sistema multitasking è possibile aprire più processi che vengono eseguiti contemporaneamente.  

A partire dall'accensione del computer, vengono attivati molti processi in successione, ciascuno dei quali è processo figlio rispetto al precedente. La procedura di chiusura detta shutdown deve controllare le sessioni di lavoro aperte sui vari terminali e inviando un messaggio agli utenti a scollegarsi entro un tempo prefissato.

GLI AMBIENTI DI SISTEMA: Il sistema operativo mette a disposizione alcuni ambienti software detti anche programmi di utilità per agevolare l'utente nella sua attività di programmazione. Talvolta l'insieme dei moduli del sistema operativo e di questi ambienti software viene genericamente indicato con il termine di software di base. Gli ambienti software di sistema comprendono:

q   Editori di testi: che consentono di scrivere e modificare i programmi sorgente ma anche ogni altro tipo di testo

q   Compilatori: cioè i programmi che trasformano in codice macchina i programmi utenti scritti nei diversi linguaggi disponibili come il C, Pascal, Java

q   Linker(collegatori): sono programmi che svolgono un compito importante, unendo tra loro i risultati di compilazione diverse.

q   Interpreti: per l'esecuzione di programmi scritti in linguaggio evoluto traducendo ed eseguendo un'istruzione per volta

q   Debugger (spulciatore): per l'individuazione degli errori di runtime o bachi (in inglese bug)

q   Gestori di maschere per il data entry: facilitano le operazioni di creazione e modifica degli archivi

q   Gestori delle comunicazioni: riguardano le funzioni connesse con il collegamento tra risorse informatiche di tipo diverso, a piccole o grandi distanze

  • Compilazione: la compilazione trasforma le istruzioni del linguaggio evoluto in codice macchina. In pratica la compilazione svolge la funzione di interfaccia tra l'algoritmo del programmatore espresso dal codice sorgente e la macchina che comprende solo istruzioni in codice oggetto. La traduzione del sorgente memorizzato su un file richiede due attività principali:
    • Verifica della correttezza formale del programma con segnalazione di errori di lessico e sintassi
    • Generazione della versione tradotta del programma scritta nel formato oggetto collegabile su un file su disco.

L'output della compilazione viene comunemente detto oggetto compilato.

Le tabelle degli ingressi e delle uscite costituiscono l'elemento di interfaccia del modulo. La tabella degli ingressi contiene l'elenco degli oggetti definiti entro il modulo e che possono essere usati dagli altri moduli.

La tabella degli oggetti esterni contiene l'elenco degli oggetti usati nel modulo ma non definiti. Ogni procedura esterna viene descritta mediante:

  • Linking: il linking cioè collegamento viene eseguito sui file che contengono il programma nel formato oggetto collegabile e genera uno o più file di formato caricabile. Il programma che esegue questa operazione si chiama linker.
  • Rilocazione: il programma in formato caricabile, viene appunto caricato in memoria centrale per essere eseguito. L'indirizzo a partire dal quale esso viene caricato è il suo indirizzo di impianto. La rilocazione trasforma gli indirizzi rilocabili del programma in indirizzi assoluti sommando a ciascuno l'indirizzo di impianto.

LA PROTEZIONE E LA SICUREZZA: Un sistema informatico è soggetto a diversi inconvenienti che possono dare luogo a problemi anche molto gravi o irrecuperabili, quali la perdita di dati o il degrado dei programmi. Oltre a questo occorre poter garantire la riservatezza di archivi particolari per impedire la consultazione da parte di utenti non autorizzati. Le tecniche usate per ripararsi contro questi eventi indesiderati sono chiamate tecniche di protezione e sicurezza. Per limitare al massimo i danni provocati da questi eventi occorre come prima cosa mantenere una copia di tutti i programmi e gli archivi importanti su supporti che non siano i dischi ma per esempio nastri magnetici o un gruppo di dischetti. Le copie vanno aggiornate periodicamente man mano che nuovi programmi vengono scritti. È buona norma eseguire le copie su due supporti diversi . il nome che si dà alle procedure di copia per salvataggio è backup mentre l'operazione di recupero di dati dalle copie di sicurezza si chiama restore. Esistono infatti in commercio programmi che possono copiare i file risparmiando spazio effettuandone la compressione. I programmi di compressione e di backup offrono di solito la possibilità di crittografare i dati su cui operano specificando una parola chiave che viene richiesta al momento di ripristinare i file archiviati, ed in mancanza della quale non è possibile ripristinare tale file.

Si introduce il concetto di protezione e sicurezza per far fronte a:

  • Guasti
  • Spegnimenti improvvisi
  • Cali di tensione
  • Inconvenienti dovuti agli operatori

I SISTEMISTI: Con il termine generico di sistemista viene indicata la figura professionale che si occupa dei sistemi di elaborazione e in particolare dei sistemi operativi e del software di base. Il sistemista che si occupa della gestione del sistema operativo si chiama amministratore di sistema (o system administrator): la sua attività riguarda l'installazione e la manutenzione del sistema operativo presso una specifica azienda e su uno specifico sistema hardware. Genericamente l'amministratore del sistema riguarda la gestione delle risorse disponibili (resources management) hardware e software, finalizzandole al funzionamento ottimale dei programmi applicativi e all'avanzamento corretto e veloce dei lavori richiesti dagli utenti. Più in dettaglio il system administrator si occupa delle seguenti attività:

  • Individuazione delle routine di utilità da richiedere ai programmatori
  • Monitoraggio del sistema in generale e del file system
  • Comunicazione con altri computer

Rilevazione di nuove necessità hardware e software da sotto porre all'attenzione dei responsabili di azienda.

LINEE DI SVILUPPO DEI SISTEMI OPERATIVI: I sistemi operativi hanno fatto registrare negli ultimi anni una notevole evoluzione secondo tre direzioni fondamentali:

  • Adeguare il software alle prestazioni crescenti del hardware in termini di velocità di elaborazione e gestione di grandi memorie di massa
  • Offrire all'utente un insieme di servizi e di utilità di alto livello rendendo sempre più invisibile il funzionamento fisico della macchina

Evitare al contempo che l'eccessivo raffinamento del sistema operativo e l'aumento dei controlli vadano a scapito dell'avanzamento corretto e veloce dei lavori dell'utente.




Privacy




Articolo informazione


Hits: 15386
Apprezzato: scheda appunto

Commentare questo articolo:

Non sei registrato
Devi essere registrato per commentare

ISCRIVITI



Copiare il codice

nella pagina web del tuo sito.


Copyright InfTub.com 2024