Anteprima
Vedrai una selezione di 4 pagine su 15
Sistemi operativi Pag. 1 Sistemi operativi Pag. 2
Anteprima di 4 pagg. su 15.
Scarica il documento per vederlo tutto.
Sistemi operativi Pag. 6
Anteprima di 4 pagg. su 15.
Scarica il documento per vederlo tutto.
Sistemi operativi Pag. 11
1 su 15
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Capacità di trovare gli errori e inviare avvisi su essi

Un S.O. è un software. Dunque, considerando un singolo core, il S.O. contiene funzioni che devono essere eseguite per controllare l'esecuzione degli altri programmi. C'è, dunque, un'alternanza fra S.O. e programmi applicativi. Nel fare questo passaggio, c'è il rischio che il processore perda il controllo (es: variazione clock). Ciò viene evitato grazie al richiamo del S.O. a ogni ciclo di clock, in modo che possa velocemente controllare la situazione ed eventualmente rimandare in esecuzione il comando iniziale.

S.O. in memoria come software

Evoluzione dei S.O.

Ci sono varie ragioni per cui i S.O. devono evolversi:

  • upgrade dell'hardware
  • nuovi tipi di hardware → es: passaggio da telefoni con tastiera a schermi capacitivi
  • nuovi servizi
  • errori, bug da dover riparare → gli aggiornamenti stessi possono creare altri bug, anche perché vengono

Distribuiti per hardware molto diversi fra loro

Step di evoluzione:

Si è partiti da semplici programmi seriali da caricare ogni volta fisicamente nel calcolatore,oltretutto molto costoso.

Si è cercato sempre di sfruttare al massimo il processore

Serial processing

Non c'erano i sistemi operativi, ma sono hardware e sviluppatori che lavoravano su schede perforate per poter utilizzare il linguaggio macchina. Il S.O. era praticamente implementato dagli umani

Simple Batch Systems

Il sistema prende in carico il job che viene sottomesso dal programmatore. Il monitor processa i vari job e li mette insieme come input. Alla fine, il risultato viene ritornato al monitor. L'utente, dunque, non ha più l'accesso diretto al processore. Il linguaggio utilizzato per scrivere i job era il linguaggio Assembly.

Sistemi operativi 3

Caratteristiche hardware del monitor

Protezione in memoria: sia tra i vari job sia fra i job e il monitor

Timer: impedire a un job di monopolizzare il

sistema → timer impostato all'inizio di ogni . Al suo scadere il controllo torna al Stato privilegiato del monitor rispetto ai , che può eseguire più istruzioni (privilegiate) Interruzioni: errori ecc. Modalità di operazione Concetto che deriva dalla nascita delle istruzioni privilegiate. I processi possono essere in esecuzione in due modalità: → utilizzata dal monitor, che può eseguire istruzioni privilegiate e, di conseguenza, accedere ad aree protette di memoria Implicazioni Il tempo di esecuzione si alterna fra quello dedicato ai programmi applicativi e quello dedicato al monitor. Ci sono dei sacrifici: una parte della memoria principale è riservata al monitor, del tempo di processo è "sprecato" dal monitor. Tuttavia, questo sistema ha portato notevoli miglioramenti rispetto al precedente. Sistemi operativi 4 Uniprogrammazione e multiprogrammazione E così via, in base alla

Capacità della memoria (quanti programmi in contemporanea riesce a contenere). Esempio: Time-Sharing Systems

Prima, tutta la capacità di calcolo era nel main-frame. L'utente, però, spesso vuole interagire con il sistema, ottenere dei risultati dal main-frame.

Sistemi operativi 5

Idea: invece di allocare l'esecuzione di un programma in maniera seriale, si suddivide il tempo del processore fra più utenti in modo da permettere a più utenti di accedere al sistema illudendosi di essere gli unici.

L'obiettivo è minimizzare il tempo di risposta per ogni utente, in modo da minimizzare l'uso del tempo del processore e non far aspettare l'utente più di qualche secondo.

Esempi di Time-Sharing Systems

CTSS: memoria con 32000 parole a 36 bit di spazio, di cui 5000 riservate al monitor. Un clock genera un interrupt ogni circa 0,2 secondi che permette l'intervento del sistema operativo per scegliere cosa eseguire e che utente servire.

A ogni cambio programma, i dati del vecchio programma dovevano essere salvati in memoria secondaria per permettere il salvataggio dei nuovi in memoria primaria.

Ogni job inizia dalla 5000esima parola.

Schema esempio:

Processo

Un processo può essere definito come: un programma in esecuzione - talvolta, uno stesso programma può puntare a istruzioni diverse (es: Chrome con più pagine aperte). Stesso codice ma istruzioni diverse.

Sistemi operativi 6

Un'istanza di un programma è un'entità che può essere assegnata a ed eseguita da un processore - sequenza di caratteri.

Il processo è il concetto fondamentale su cui ruota tutto il S.O., che si occupa della loro gestione.

I processi sono le strutture dati che vengono manipolate e gestite dal S.O.. Serve, dunque, una struttura per rappresentare i processi.

Il S.O. associato a un processo deve tenere conto di:

  • programma
  • prossima istruzione da eseguire
  • stato del programma
  • memorizzazione degli activation record nello stack

Esecuzione per sapere cosa dovrà essere eseguito e come (funzioni ricorsive, loop...) cambio di processo in esecuzione (comunicazione con memoria primaria)

Sviluppo dei processi

Nel corso del tempo, i processi si sono sviluppati per risolvere problemi di 3 tipi principali di computer systems:

  1. Multiprogramming Batch Operation: switch del processore fra i vari programmi presenti nella memoria principale
  2. Time-Sharing: essere rapidamente responsivo per l'utente individuale ma poter servire più utenti simultaneamente
  3. Real-Time Transaction Systems: un certo numero di utenti manda query o inserisce dati (da aggiornare in tempo reale) in un database

Errori

La scrittura e lo sviluppo di sistemi operativi ha generato diversi errori legati, spesso, a un'interazione impropria fra processi.

Le principali cause di questi errori sono:

  • Sincronizzazione impropria: un programma deve aspettare che i dati a esso necessari siano disponibili nel buffer. Tuttavia, se vi è un design sbagliato
del sistema di avviso delladisponibilità, possono verificarsi una perdita o una duplicazione dei dati. Sistemi operativi 7 Mancata mutua esclusione: più utenti o programmi cercano di usare la stessa risorsa condivisa nello stesso momento, ma solo uno alla volta è autorizzato ad accedere e apportare modifiche alla risorsa. Operazione del programma non determinata: sovrascrittura di dati nella memoria condivisa da parte di un programma necessari a un altro programma nello stato precedente. Deadlock: è possibile che due o più programmi rimangano bloccati aspettando l'un l'altro. Ciò riguarda, per esempio, lo sviluppo di programmi concorrenti, utilizzata nei videogame per esempio. Questi errori sono difficili da trovare e riparare perché è difficile replicarli. Nella programmazione sequenziale, invece, ciò può accadere se due programmi hanno bisogno della stessa risorsa I/O per fare la stessa cosa nello stesso momento. Un

altroesempio si ha quando due programmi che stanno controllando due dispositivi diversi devono aspettare l'uno il risultato dell'altro per procedere.

Componenti di un processo

Tre componenti:

  • un programma eseguibile
  • i dati associati necessari al programma (variabili, spazio di lavoro, buffers...)
  • lo stato di processo del programma

Lo stato di processo del programma in esecuzione è salvato in memoria primaria. Quando vi è uno switch, questo stato viene salvato in memoria secondaria per mettere in memoria primaria lo stato di processo del nuovo programma.

Lo stato di processo, inoltre, permette al S.O. di supervisionare e controllare il processo, sapere la sua priorità e se sta aspettando la risposta di un certo dispositivo I/O

Sistemi operativi 8

Tutta l'informazione necessaria, fra cui lo stato del processo, è salvata nel context.

Gestione della memoria

Il S.O. si occupa di 5 metodi di gestione della memoria:

  • isolamento dei processi → i processi non
dev'essere divisa in pagine di dimensioni fisse e il sistema operativo si occupa di mappare queste pagine nella memoria fisica disponibile. In questo modo, ogni programma può accedere alla sua porzione di memoria virtuale senza interferire con gli altri. La memoria virtuale offre anche il vantaggio di poter gestire programmi di dimensioni superiori alla memoria fisica disponibile. Infatti, il sistema operativo può spostare in memoria solo le pagine necessarie per l'esecuzione del programma, mentre le altre rimangono salvate su disco. Quando una pagina non è presente in memoria, si verifica un'eccezione di pagina e il sistema operativo si occupa di caricarla dalla memoria secondaria. Inoltre, la memoria virtuale permette di proteggere le pagine di memoria da accessi non autorizzati. Ogni pagina può essere contrassegnata come privilegiata o non privilegiata, e solo i programmi con i privilegi necessari possono accedervi. Questo garantisce la sicurezza dei dati e previene l'esecuzione di istruzioni privilegiate da parte di programmi non autorizzati. Infine, la memoria virtuale offre un'organizzazione logica della memoria, indipendente dalla sua effettiva occupazione e dimensione. Questo semplifica la programmazione modulare, in quanto i programmi possono essere scritti considerando solo la loro porzione di memoria virtuale, senza dover tener conto della memoria fisica disponibile. In conclusione, la memoria virtuale è un'importante caratteristica dei sistemi operativi moderni, che permette di gestire in modo efficiente l'allocazione della memoria, la protezione dei dati e l'esecuzione dei programmi.

Il principio di indirizzi virtuali viene utilizzato nella memoria virtuale, che permette di indirizzare una quantità di memoria maggiore rispetto alla memoria RAM disponibile. I dati vengono memorizzati in memoria secondaria, poiché non possono essere tutti contenuti nella RAM contemporaneamente. È compito del sistema operativo portare in memoria primaria i dati e le istruzioni necessarie per l'esecuzione del programma.

L'intero programma è salvato in memoria secondaria e durante l'esecuzione, il sistema operativo porta gradualmente i dati e le istruzioni necessarie dalla memoria secondaria alla memoria principale. La traduzione degli indirizzi virtuali in indirizzi fisici richiederebbe teoricamente del tempo, ma i processori sono progettati per ridurre al minimo il tempo necessario per questa traduzione.

In questo modo, è possibile eseguire contemporaneamente più processi la cui somma totale di spazio occupato sarebbe decisamente maggiore della memoria principale disponibile.

portando lì solamente le parti dei processi necessarie in quella fase di esecuzione e lasciando il resto in memoria secondaria. Sono necessari anche degli algoritmi per gestire il caso in cui la memoria primaria sia satura e sia necessario trasferire lì dei dati dalla memoria secondaria. Bisogna decidere cosa viene eliminato dalla memoria primaria (copiandolo prima in memoria secondaria).

Paging

Per migliorare il trasferimento dei dati da memoria secondaria a primaria e la loro scelta a runtime, l'area dati di un programma viene divisa in un numero finito di pagine di dimensione fissa.

Vantaggio: il programma viene visto come composto da una serie di pagine → il suo indirizzo virtuale è dato da:

numero di pagine offset relativo all'

Dettagli
Publisher
A.A. 2021-2022
15 pagine
SSD Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher vale_condo di informazioni apprese con la frequenza delle lezioni di Sistemi operativi e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi di Genova o del prof Armando Alessandro.