Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


INFRASTRUTTURE SOFTWARE, Sbobinature di Sistemi Informatici

Si tratta di vere e proprie dispense da me create e con cui sono riuscita a superare l'esame a pieni voti. Le ho create unendo sbobinatura della lezione, libri appositi ed appunti supplementari. vi sono sia pdf inerenti alle generalità e caratteristiche basali di tutto ciò che concerne l'Informatica sia pdf equivalenti alla spiegazione dettagliata delle principali strutture e componenti di un qualsiasi calcolatore (nonché curiosità). Vi assicuro che basterà studiare solamente da questi 8 pdf per avere una preparazione completa e precisa di Informatica.

Tipologia: Sbobinature

2022/2023

In vendita dal 07/10/2024

erika-sileno
erika-sileno 🇮🇹

72 documenti

1 / 12

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
INFRASTRUTTURE SOFTWARE
SOFTWARE DI SITEMA (DI BASE) =
“Ha lo scopo di rendere utilizzabile l’architettura di elaborazione e sono a corredo dell’Hardware”.
Spesso comprendono dei programmi di utilità, che mirano a semplificare l’interazione dell’utente
con il sistema (= “SISTEMA OPERATIVO”).
IL SISTEMA OPERATIVO (SO)
“Infrastruttura software, che si pone come interfaccia fra Infrastruttura Hardware e l’utente o il
software applicativo, e che serve a facilitare l’utilizzo e gestione delle varie risorse”.
La sua funzione principale è quella di fornire dei servizi ai programmi applicativi ed agli utenti,
rendendo le risorse fisiche presenti nel sistema informatico.
Inoltre il SO è caratterizzato da:
1. La correttezza e precisione nell’elaborazione e trasmissione dell’informazione,
2. La localizzazione delle risorse,
3. L’affidabilità, disponibilità e sicurezza dei sistemi
4. La privatezza dei dati.
5. Il superamento dei problemi legati alla limitazione del numero di risorse,
regolamentandone anche l’impiego ed evitando così conflitti di accesso.
Ha una doppia funzione di base: Risorsa Fisica e Macchina Astratta =
Il SO può essere infatti inteso come insieme di moduli software, che virtualizzano le caratteristiche
dell’Hardware sottostante, offrendo di esso la visione di una macchina astratta più potente e
semplice di quella fisicamente disponibile, e che ha la funzione di rendere utilizzabili le risorse
fisiche presenti del sistema informatico, altrimenti non si potrebbe interagire a basso livello.
Per intendere, è possibile considerare il sistema operativo come l’intermediario tra utente ed
esecutore automatico, che gestisce sia tutte le sue componenti Hardware (in generale) sia l’utente
stesso, garantendo un corretto collegamento uomo/macchina.
Il SO dev’essere in grado di assolvere varie funzioni di servizio, ovvero:
1. ESECUZIONI DI APPLICAZIONI
Si occupa del caricamento del programma (istruzioni e dati) nella memoria centrale,
inizializzazione dei dispositivi di ingresso/uscita e della preparazione e gestione di altre
risorse come la rete di comunicazione.
2. ACCESSO AI DISPOSITIVI DI I/O
Il sistema operativo maschera i dettagli di basso livello del controllo delle periferiche,
consentendo all’utente di operare in termini di operazioni logiche di lettura e scrittura.
Quindi riguarda il modo con cui interagisce e si occupa della gestione dei segnali necessari
per il trasferimento dei dati.
3. ARCHIVIAZIONI DI DATI E PROGRAMMI
In alcuni ambiti è la funzione principale in assoluto.
Si occupa quindi di fornire un’organizzazione logica dei dati sottoforma di cartelle
(directory) e file e di gestire le operazioni di basso livello per il relativo ingresso/uscita.
Ciò sotto forma di cartelle (DIRECTORY) e file.
4. CONTROLLO DI ACCESSO
Si devono tenere traccia di tutti i dati e si occupa pertanto della condivisione di risorse da
parte di più utenti o applicazioni e dei meccanismi di protezione e politiche di risoluzione
degli eventuali conflitti d’uso.
5. CONTABILIZZAZIONE
In situazioni particolari l’uso delle risorse può essere soggetto a monitoraggio dal SO.
Al fine di eseguire dei calcoli, si occupa dell’ ottimizzazione del tempo di risposta dei
programmi interattivi e della fatturazione agli utenti dei costi dell’impiego del sistema.
pf3
pf4
pf5
pf8
pf9
pfa

Anteprima parziale del testo

Scarica INFRASTRUTTURE SOFTWARE e più Sbobinature in PDF di Sistemi Informatici solo su Docsity!

INFRASTRUTTURE SOFTWARE

SOFTWARE DI SITEMA (DI BASE) =

“Ha lo scopo di rendere utilizzabile l’architettura di elaborazione e sono a corredo dell’Hardware”. Spesso comprendono dei programmi di utilità, che mirano a semplificare l’interazione dell’utente con il sistema (= “SISTEMA OPERATIVO”).

IL SISTEMA OPERATIVO (SO)

“Infrastruttura software, che si pone come interfaccia fra Infrastruttura Hardware e l’utente o il software applicativo, e che serve a facilitare l’utilizzo e gestione delle varie risorse”. La sua funzione principale è quella di fornire dei servizi ai programmi applicativi ed agli utenti, rendendo le risorse fisiche presenti nel sistema informatico. Inoltre il SO è caratterizzato da:

  1. La correttezza e precisione nell’elaborazione e trasmissione dell’informazione,
  2. La localizzazione delle risorse,
  3. L’affidabilità, disponibilità e sicurezza dei sistemi
  4. La privatezza dei dati.
  5. Il superamento dei problemi legati alla limitazione del numero di risorse, regolamentandone anche l’impiego ed evitando così conflitti di accesso. Ha una doppia funzione di base: Risorsa Fisica e Macchina Astratta = Il SO può essere infatti inteso come insieme di moduli software, che virtualizzano le caratteristiche dell’Hardware sottostante, offrendo di esso la visione di una macchina astratta più potente e semplice di quella fisicamente disponibile, e che ha la funzione di rendere utilizzabili le risorse fisiche presenti del sistema informatico, altrimenti non si potrebbe interagire a basso livello. Per intendere, è possibile considerare il sistema operativo come l’intermediario tra utente ed esecutore automatico, che gestisce sia tutte le sue componenti Hardware (in generale) sia l’utente stesso, garantendo un corretto collegamento uomo/macchina. Il SO dev’essere in grado di assolvere varie funzioni di servizio, ovvero:
  6. ESECUZIONI DI APPLICAZIONI Si occupa del caricamento del programma (istruzioni e dati) nella memoria centrale, inizializzazione dei dispositivi di ingresso/uscita e della preparazione e gestione di altre risorse come la rete di comunicazione.
  7. ACCESSO AI DISPOSITIVI DI I/O Il sistema operativo maschera i dettagli di basso livello del controllo delle periferiche, consentendo all’utente di operare in termini di operazioni logiche di lettura e scrittura. Quindi riguarda il modo con cui interagisce e si occupa della gestione dei segnali necessari per il trasferimento dei dati.
  8. ARCHIVIAZIONI DI DATI E PROGRAMMI In alcuni ambiti è la funzione principale in assoluto. Si occupa quindi di fornire un’organizzazione logica dei dati sottoforma di cartelle (directory) e file e di gestire le operazioni di basso livello per il relativo ingresso/uscita. Ciò sotto forma di cartelle (DIRECTORY) e file.
  9. CONTROLLO DI ACCESSO Si devono tenere traccia di tutti i dati e si occupa pertanto della condivisione di risorse da parte di più utenti o applicazioni e dei meccanismi di protezione e politiche di risoluzione degli eventuali conflitti d’uso.
  10. CONTABILIZZAZIONE In situazioni particolari l’uso delle risorse può essere soggetto a monitoraggio dal SO. Al fine di eseguire dei calcoli, si occupa dell’ ottimizzazione del tempo di risposta dei programmi interattivi e della fatturazione agli utenti dei costi dell’impiego del sistema.

6. GESTIONE DEI MALFUNZIONAMENTI

Si occupa della rilevazione e, se possibile, soluzione degli eventuali malfunzionamenti provocati da guasti hardware o da operazioni scorrette compiute dal software applicativo. Quindi raccoglie messaggi di malfunzionamento anche da parte delle periferiche. Il sistema operativo offre pertanto offre 2 visioni:

  1. DALL’ALTO Fornisce all’utente un’interfaccia conveniente e mi consente di usare tutti i componenti.
  2. DAL BASSO Gestisce tutte le parti di un sistema complesso, allocando in modo ordinato le diverse risorse della macchina: processori, memorie, dischi, interfacce di rete e varie periferiche. Dunque il sistema operativo è un vero e proprio: 1. GESTORE DELLE RISORSE Controlla le risorse del calcolatore e le gestisce in modo efficiente:
  • Tiene traccia di chi utilizza le risorse
  • Accetta e soddisfa le richieste di utilizzo di una risorsa
  • Fa da mediatore fra le risorse che risultano in conflitto 2. MACCHINA ESTESA Costituisce la base su cui è possibile scrivere i programmi applicativi Presenta all’utente una macchina estesa più facile da programmare dell’hardware effettivamente presente Nello specifico la struttura classica di un sistema operativo a livelli è costituito da: 1. NUCLEO Interagisce direttamente con l’Hardware, e quindi direttamente con la CPU, e si occupa sia dell’esecuzione dei programmi sia della risposta agli eventi esterni generati dalle unità periferiche (= Multi-programma, grazie al cambio di rotazione a livello della CPU). Gestisce il contesto di esecuzione dei vari processi ed attua una politica di alternanza (“SCHEDULING”) nell’accesso alla CPU da parte dei processi in esecuzione. Dunque controlla l’Unità Centrale e la traduzione dei programmi in un formato direttamente eseguibile dal processore. Ha lo scopo principale di GESTIRE I PROCESSI CHE SONO CONTEMPORANEAMENTE ATTIVI (sia le applicazioni creati dall’utente sia i processi di servizio generati dal SO per mantenere attivo), ma si occupa anche di:
  • Controllare l’unità centrale di elaborazione (CPU)
  • Definire quali programmi sono da eseguire e quali compiti sono da assegnare alla CPU
  • Fornire alle macchine virtuali di livello superiore la visione di un insieme di unità di elaborazione virtuali ciascuna dedicata ad un processo presente in memoria 2. GESTORE DI MEMORIA Ha il compito di controllare la memoria centrale. Consente ai programmi di lavorare in un proprio SPAZIO D’INDIRIZZAMENTO VIRTUALE, che può essere superiore alla memoria fisica presente nel calcolatore, e di ignorare quindi le effettive zone di memoria fisica stessa occupata. Controlla l’allocazione della memoria di lavoro ai diversi programmi che possono essere contemporaneamente in esecuzione. In generale applica tecniche per gestire il conflitto fra la dimensione della memoria fisica e lo spazio complessivo richiesto dai programmi, che devono essere eseguiti in modo concorrente e dai relativi dati. Consente il caricamento di un programma a partire da un indirizzo qualunque della memoria, riduce la necessità di spazio tenendo in memoria solo una porzione dei

Un sistema così concepito richiedeva un meccanismo (a quel tempo manuale) di prenotazione della macchina, al fine di determinare un ordine di caricamento ed esecuzione. La macchina consentiva dunque l’esecuzione di un solo programma alla volta. Con l’evoluzione questo schema di elaborazione seriale dei programmi venne migliorata con l’introduzione dei SISTEMI OPERATIVI A LOTTI (BATCH ) = Essi sono basati “sull’impiego di un componente software (“Monitor”), in grado di automatizzare l’avviamento e l’esecuzione di programmi, eliminando così i tempi morti e sgravando gli utenti da interventi manuali di gestione”. Tale monitor prevedeva il linguaggio JCL (“Job Control Language”). Nei sistemi operativi Batch le operazioni di ingresso ed uscita vengono eseguite tramite file ed ottimizzano con un’accurata distribuzione del tempo di calcolo i vari programmi da eseguire. Nonostante però tali forme di sistemi, è ancora necessario che il SO disponga di:

  1. INTERATTIVITA’ (Con utente umano in tempi accettabili e garantendo privatezza nei dati)
  2. TEMPORIZZAZIONE DI ESECUZIONE (Per evitare che un solo programma monopolizzi)
  3. GESTIONE ATTIVITA’ I/O (Sgravando così di tale compito i programmi applicativi)
  4. APPROPRIATO FRUTTAMENTO DI RISORSE (Anche in parallelo) Per soddisfare tali requisiti e soprattutto quello di riduzione della tempistica, si passò ai cosiddetti SISTEMI MULTIPROGRAMMATI = ”In ogni istante la memoria centrale può contenere più di un programma applicativo”. È differente dai sistemi uni-programmati (= che avevano al più un solo programma utente). In questi tipi di sistemi il tempo di accesso della memoria centrale è tipicamente molto inferiore rispetto a quello delle unità a disco, con cui si realizza la memoria di massa. È composto da più programmi costituiti dall’alternanza di elaborazione e attesa, ma posizionati ed agenti in momenti incrociati fra loro (come una Pipeline), in modo da essere sempre coperti quando ad un programma corrisponde il tempo d’attesa. Il TEMPO MACCHINA è dunque distribuito in più programmi ed è quindi + ottimizzato. Tale tipo di sistema di multiprogrammazione porta dunque finalmente a dei benefici, quali:
  5. MIGLIOR SFRUTTAMENTO DEL PROCESSORE In un sistema uni-processore è possibile commutare da un programma all’altro quando il programma in esecuzione è in attesa di operazioni di I/O.
  6. PRESENZA IN MEMORIA DI DIVERSI PROGRAMMI Ciò consente una commutazione più efficiente ed un tempo di accesso alla memoria centrale molto inferiore rispetto alla memoria di massa.
  7. POSSIBILITÀ DI GESTIRE PIÙ UTENTI SENZA DEGRADO ECCESSIVO DELLE PRESTAZIONI In seguito a questi sistemi si è giunti al SISTEMA A PARTIZIONE DI TEMPO (TIME-SHARING ) = “Simulano un Quasi-Parallelismo nell’accesso alle risorse da parte di più utenti o programmi”. Secondo la politica del “ROUND-ROBIN”, al fine di evitare che la CPU venga utilizzata in modo esclusivo o per troppo tempo da parte di un solo programma, il tempo viene idealmente suddiviso in unità (“QUANTI”) ed ad ogni rotazione, la disponibilità di 1 Quanto di tempo della CPU veniva assegnato ad ognuno dei programmi presenti contemporaneamente in memoria. Nei sistemi operativi attuali (come Unix/Linux o Windows) l’esecuzione dei programmi si svolge in PARALLELO e l’entità in riferimento è divenuto qui il PROCESSO = “Unità di esecuzione che può essere appropriatamente interpretata come DINAMICA, in quanto include con il programma anche il suo contesto di esecuzione, ovvero l’insieme dei dati che sono necessari affinchè il programma stesso possa essere eseguito”. Il sistema operativo equivale alla combinazione di un insieme di processi di servizio e di un gestore (“NUCLEO” o “KERNEL”), che opera come sistema di controllo dei processi.

È importante specificare la differenza tra PROCESSO e PROGRAMMA =

  1. PROGRAMMA “Entità statica dal codice eseguibile dal processore” 2. PROCESSO “Entità dinamica che corrisponde al programma in esecuzione”. È composto da 3 elementi, quali:
    • CODICE (= programma)
    • DATI (= quelli che servono per l’esecuzione del programma)
    • STATO (= a che punto dell’esecuzione ci si trova, cosa c’è nei registri, ecc…) Vi sono due modelli di organizzazione di riferimento per i SO dei calcolatori stand-Alone = 1. MODELLO MONOLITICO Il SO è costituito in questo caso da 1 SOLO PROCESSO. I processi applicativi richiedono al sistema operativo l’esecuzione di particolari servizi attraverso le “CHIAMATE DI SISTEMA” (o “SUPERVISOR CALL”), memorizzando in un luogo predefinito, come particolari registri. [Per intendere è un po’ come se “Piampiano”, equivalente al processo applicativo, chiamasse mediante queste chiamate di sistema “Edy”, equivalente al sistema operativo, e poi il servizio da quest’ultimo detto viene memorizzato nel cervello, corrispondente a quel famoso luogo predefinito]. Tale modello ben si adatta in caso di sistemi non soggetti a cambiamenti dell’Hardware ed alla gestione di una sola applicazione. Si possono quindi individuare due modalità di funzionamento:
  • UTENTE Usata per la normale esecuzione dei processi. In tale modalità non è possibile accedere liberamente a tutte le risorse del sistema ed in particolare possono eseguire solo alcune istruzioni.
  • SUPERVISORE Usata per lo svolgimento dei servizi richiesti al SO da parte di un processo. In questo caso non esiste nessun limite alle operazioni effettuabili, ha accesso a tutte le risorse e può eseguire qualsiasi istruzione (definite “Privilegiate”). 2. MODELLO A STRATI Qui il sistema operativo è strutturato in una SUCCESSIONE DI STRATI, ognuno dei quali costruito a partire da quelli sottostanti. Le funzioni di gestione delle risorse vengono svolte direttamente dai processi utente e sono quindi realizzate mediante procedure operanti su dati comuni, che devono essere condivisi fra vari processi. Di conseguenza il NUCLEO è piuttosto semplice, equivalente all’unico componente dipendente dalle caratteristiche Hardware del calcolatore e che contiene solo i dati necessari a descrivere i processi e le procedure di gestione. Tale modello offre limitati meccanismi di protezione dei dati, in quanto ogni processo può infatti accedere liberamente ai dati comuni. I sistemi operativi attualmente più diffusi sono strutturati su un modello ulteriormente evoluto, in quanto presenta un’organizzazione MODULARE, che consente efficienti modalità di aggiornamento dell’hardware sottostante. Vi è gerarchia di “ MACCHINE VIRTUALI ”, molto più potenti rispetto alla macchina fisica. La visione della macchina virtuale è quella si =
  1. È un insieme di programmi
  2. Usa i servizi di livello sottostante per fornire funzionalità di tipo più astratto
  3. Ognuno di queste macchine gestiscono risorse specifiche del sistema

Ogni processo nella loro gestione generale, può trovarsi in:

  1. STATO DI ESECUZIONE MODALITA’ UTENTE Con il processore a disposizione per l’esecuzione del proprio codice
  2. STATO DI ESECUZIONE MODALITA’ SUPERVISORE In esecuzione di istruzioni privilegiate o delle funzionalità del sistema operativo
  3. PRONTO In grado ed in attesa di essere eseguito, non appena il processo diverrà disponibile
  4. ATTESA In grado di essere effettivamente eseguito dal processore, poiché in attesa del verificarsi di un evento esterno. Quindi esistono 2 tipi di transizioni possibili:
  5. PRONTO  ESECUZIONE Il SO stabilisce quale dei processi “pronti” debba essere mandato in “esecuzione”. La scelta è fatta dall’ algoritmo di scheduling, che deve bilanciare efficienza e fairness
  6. ESECUZIONE  ATTESA Il processo chiede delle risorse, che non sono disponibili o attende un evento. Il SO salva tutte le informazioni necessarie a riprendere l’esecuzione e l’informazione relativa all’evento atteso nella tabella dei processi. Contemporaneamente un altro processo passa da “pronto” ad “esecuzione”. In un dato istante un solo processo può essere in esecuzione, ma essendo i sistemi operativi attuali Multi-programmati, più processi possono essere in stato di “Pronto” o “Attesa” di eventi esterni. Quindi in linea schematica: 1. Il processore in genere esegue i programmi applicativi in modalità Utente, 2. Il sistema operativo esegue il servizio in modo Supervisore, 3. Quando un processo è pronto per tornare in esecuzione in modo utente, il NUCLEO del sistema operativo valuta se spostarlo nello stato di “Pronto”, mediante il criterio del tempo di esecuzione del processo (= Se è superiore ad un Quanto di tempo predeterminato, il processo viene sospeso e posto in stato Pronto) 4. Tra la coda dei processi in stato di Pronto viene scelto e favorito quello in attesa della risorsa da maggior tempo 5. Il processo individuato andrà in esecuzione in modalità Supervisore 6. Il processo tornerà ad eseguire il programma applicativo in modo Utente. Come quindi può verificarsi una possibile evoluzione = Il processo viene creato e viene posto nella coda dei processi pronti. Il 1° processo tra quelli pronti viene posto in esecuzione. Il processo in esecuzione dispone delle risorse del sistema fino a =
  7. Termine del quanto di tempo Il nucleo interrompe il processo e lo mette in coda ai processi pronti. Quando arriva in cima alla coda dei processi pronti, il processo torna in stato in esecuzione, proseguendo con l’elaborazione dell’istruzione successiva a quella su cui era stato interrotto.
  8. Richiesta di operazione di I/O Il nucleo sposta il processo attivo nello stato di attesa. Quando l’operazione di I/O si completa il processo può proseguire l’elaborazione e viene messo in fondo alla coda dei processi in pronti e prosegue come nel punto precedente.
  9. Termine della propria esecuzione (istruzione finale) Il processo viene eliminato e rimosso dall’elenco dei processi esistenti. In ogni caso il nucleo procede a sostituirlo con il primo dei processi pronti.

CONTEXT SWAPPING

Il processo non si rende conto delle interruzioni. Il NUCLEO maschera al processo come effettivamente la sua elaborazione evolve nel tempo e rende trasparente la presenza delle operazioni di interruzione e riassegnamento del processore. Per quanto concerne il CONTESTO DI UN PROCESSO = L’insieme dei dati che rappresentano lo stato del processo sono: situazione della memoria, contenuto dei registri e livello di priorità. Si parlerà di DESCRITTORE DEL PROCESSO = “Struttura dati che contiene le informazioni usate per il salvataggio ed il ripristino del contesto”.

  1. Quando un processo viene interrotto si esegue il SALVATAGGIO DEL SUO CONTESTO;
  2. Il riassegnamento della CPU al processo comporta il RISPRISTINO DEL CONTESTO. Il cosiddetto “Cambio di Contesto” (= CONTEXT SWAPPING ) = “Si verifica quando un processo in esecuzione viene sostituito da un altro”. Il nucleo provvederà allora a:
  3. Salvare il contesto del processo da sostituire e gestirne l’evoluzione (Pronto Vs Attesa)
  4. Ripristinare il contesto del nuovo processo per consentirgli una corretta evoluzione

MODALITA’ USER E MODALITA’ KERNEL

I processi possono essere eseguiti in modalità KERNEL, riserva ai servizi forniti dal SO, o USER (programmi applicativi) e non basta più un solo stato di esecuzione, ma è necessario distinguere le due situazioni. Dunque vi saranno 2 nuovi stati: esecuzione User ed esecuzione Kernel.

1. ESECUZIONE USERESECUZIONE KERNEL Richiesta di servizi al SO da parte del processo utente, detta chiamata di sistema (“SVC”). Evento esterno segnalato da una periferica (Interrupt) 2. ESECUZIONE KERNELESECUZIONE USER Termine gestione Interrupt (“Return From Interrupt” = RTI) ES : P1 in esecuzione (USER) = Esegue una serie di istruzioni, richiede un servizio di I/O e lettura di un carattere da tastiera SO in esecuzione (KERNEL) = Decide di sospendere P1 finchè non termina l’operazione I/O richiesta, lo salva nel descrittore di P1 e lo sposta in attesa di “carattere da tastiera”. Sceglie P2 tra i processi pronti per mandarlo in esecuzione, ripristinando il suo contesto, e leggendo i dati dal descrittore dello stesso. Manda allora in esecuzione P2 restituendogli il controllo (RTI). P2 in esecuzione (USER) = Esegue una serie di istruzioni, ma poi arriva un Interrupt da tastiera (evento esterno) ed il controllo passa al SO (Interrupt)

CONCORRENZA FRA I PROCESSI

I vantaggi dell’esecuzione concorrenti di più processi sono =

  1. Impiegare in maniera trasparente una o più CPU (sia inserite in un solo calcolatore che in più collegati in rete)
  2. Aumentare l’utilizzo della CPU nei sistemi a partizione di tempo Dove si eseguono più lavori in quasi parallelismo
  3. Condividere la stessa risorsa fisica fra diversi utenti in modo trasparente ma controllato
  4. Accedere contemporaneamente da parte di diversi utenti ad una base di dati comune

Vi sarà inoltre il MICROKERNEL = Si tratta di una struttura moderna in cui si assegnano al kernel poche funzioni essenziali, quali:

  1. Gestione degli spazi d’indirizzamento
  2. Comunicazione fra i processi (IPC, ovvero “Inter Process Communication”)
  3. Funzioni base di gestione della CPU (Scheduling)
  4. Fornitura di servizi del SO

MODELLI IBRIDI

Uno stesso sistema operativo può avere anche organizzazione IBRIDA = Secondo la tecnica “MULTITHREADING”, i processi (“THREAD”) sono suddivisi in gruppi, ognuno dei quali consente solo a priori componenti la condivisione dei dati, mentre l’interazione con Thread di altri gruppi può avvenire solo mediante lo scambio di messaggi. Si tratta dunque di organizzazione ibrida in cui coesistono paradigmi di interazione basati su dati condivisi (come nel modello a strati) con altri che impiegano la comunicazione di messaggi (come nel modello client-server). In questo modo si semplificano e si rendono più efficienti l’interazione ed il cambio di contesto fra i processi appartenenti allo stesso gruppo di thread, aumentando lo sfruttamento complessivo della CPU ed incrementando il grado di concorrenza tra processi del sistema. L’uso dei Thread consente quindi la riduzione del sovraccarico legato al cambiamento di contesto. È utile per quelle applicazioni che svolgono compiti ragionevolmente indipendenti, che non necessitano pertanto di essere serializzati.

GESTIONE DELLA MEMORIA:

PAGINAZIONE E MEMORIA VIRTUALE

Vi furono 2 metodi di miglioramento della memoria e del suo sfruttamento:

1. SWAPPING Il SO ha la possibilità di trasferire il contenuto di un’area della memoria centrale nella cosiddetta AREA DI SWAP (= Area della memoria di massa), al fine di liberare spazio per i processi rimasti. [Per intendere è tipo la memoria di 2° livello]. Tale tecnica è appunto chiamata “SWAPPING” e viene applicata trasferendo su disco i dati relativi ai processi in stato di Attesa o di Pronto per l’esecuzione. In tal maniera vengono messi in esecuzione solo i processi ancora in memoria centrale. 2. MEMORIA PAGINATA La gestione della memoria avviene in generale in modo PAGINATO = “Blocchi multipli di byte utili per dividere la memoria fisica”. La paginazione consente in sè di estendere la dimensione di un processo, utilizzando delle zone di memoria non per forza contigue, e tenere in memoria solo la porzione ridotta del programma che si sta utilizzando. Ciò consiste nella suddivisione di programmi e memoria rispettivamente: - PAGINE LOGICHE (= Programmi divisi in sezioni di dimensioni fisse e uguali fra loro) - PAGINE FISICHE (= Memoria fisica divisa in sezioni con stessa dimensione delle logiche) Così è possibile mantenere in memoria solo la porzione del programma che si sta usando. In generale la paginazione si basa sul principio di “località spazio-temporale” = Non vale la pena di caricare in RAM tutto il codice, poichè l’esecuzione in un dato istante di tempo si limita ad una sezione limitata del codice stesso, che spesso viene riseguita. Vi è dunque il principio approssimativo del 10-90 (= 10% del codice richiede circa il 90% dell’intera elaborazione).

La memorizzazione in pagine fisiche delle pagine logiche permette di caricare i programmi in memoria centrale anche se non esiste un’area contigua sufficientemente ampia per contenerli, purchè sia globalmente disponibile una quantità di memoria sufficiente. La gestione della memoria in modo paginato vede la necessità che sia presente un dispositivo aggiuntivo, ovvero il MMU (“Memory Management Unit”) = Essa è in grado di convertire gli indirizzi logici cui fa riferimento il programma nei corrispondenti indirizzi fisici. Per fare ciò, la MMU si avvale di una “tabella delle pagine”, che mantiene la relazione tra ogni pagine logia ed indirizzo fisico. Ogni volta che si cerca di accedere ad un indirizzo relativo ad una pagina NON in memoria (“PAGE FAULT”), il sistema operativo, grazie all’intervento della MMU, provvede a liberare dello spazio in memoria, scaricando delle pagine sul disco e caricando quella richiesta. Si può ormai parlare di SEGMENTAZIONE DELLA MEMORIA = “Suddivisione della memoria in base alla tipologia d’informazione contenuta”. Uno dei vantaggi è la possibilità di fare condividere lo stesso codice a più processi, lasciando che agiscano su dati differenti. Si può allora organizzare la memoria associata al processo in modo da rendere possibile la gestione condivisa di alcune sue arti, così che la struttura non è più monolitica, ma suddivisa in vari segmenti (come in codici e dati). Con tale organizzazione il sistema operativo può consentire a più processi di condividere lo stesso segmento di codice e nel contempo operare su dati differenti.

GESTIONE DELLE PERIFERICHE

È possibile fare una distinzione tra 2 figure, qui importanti:

  1. CONTROLLER Dispositivi Hardware che servono ad effettuare a livello fisico le operazioni di trasferimento dati con le periferiche. Dipendono dalle caratteristiche fisiche delle periferiche che gestiscono.
  2. DRIVER Programmi Software finalizzati alla gestione delle periferiche. Mascherano le caratteristiche specifiche del Controller, fornendo un insieme di funzioni ad alto livello per la gestione delle operazioni di I/O. L’aggiunta o la modifica alla configurazione standard comporta l’installazione di Software addizionali, che consente la comunicazione con le nuove periferiche. Tale sistema generale rende tutto molto solido a livello di AFFIDABILITA’ = I Driver s’incaricano di ripetere più volte la stessa operazione di I/O qualora essa non vada a buon fine, segnalando eventualmente il tipo di malfunzionamento, affinchè si possa intervenire opportunamente. La CONFIGURAZIONE del Driver avviene in Automatico grazie al PnP (“Plug&Play”) = Tale tipologia di sistema permette di aggiungere (Plug) nuove periferiche al sistema che possono essere immediatamente utilizzate (Play) senza la necessità di intervento da parte dell’utente. Dunque all’attivazione il SO scandisce ed esamina tutte e periferiche collegate al sistema, le periferiche di fanno riconoscere specificando quali driver servono ed il SO installa gli opportuni driver per la loro gestione.