Anteprima
Vedrai una selezione di 1 pagina su 5
Alcune domande d'esame di Sistemi operativi Pag. 1
1 su 5
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Il UNIX tradizionale è un sistema operativo sviluppato alla fine degli anni '60 presso i Bell Labs

da Ken Thompson, Dennis Ritchie e altri ricercatori. Nasce come un sistema semplice, potente e

flessibile, concepito per essere multiutente e multitasking, e ha influenzato profondamente lo

sviluppo dei moderni sistemi operativi. La sua Versione 7 (V7), rilasciata nel 1979, è considerata il

modello classico da cui derivano molte varianti successive, tra cui BSD e System V.

Al livello più basso c’è l’hardware,

Il design di UNIX si basa su una struttura modulare a livelli.

che fornisce le risorse fisiche del sistema. Sopra di esso si trova il kernel, il cuore del sistema

operativo, responsabile della gestione della CPU, della memoria, dei dispositivi di I/O e del file

un’interfaccia testuale che permette all’utente di

system. Al livello più alto, troviamo la shell,

interagire con il sistema attraverso comandi, e un vasto insieme di utility per la gestione dei file, dei

processi e della comunicazione tra utenti.

Uno degli aspetti più innovativi di UNIX è il suo file system gerarchico, organizzato in una

/

struttura ad albero con una radice ( ) da cui si diramano tutte le directory e i file. In UNIX, tutto è

un file, compresi i dispositivi hardware e i processi, il che permette un'interazione uniforme e

flessibile tra i componenti del sistema. Inoltre, il file system implementa permessi di accesso per

garantire la sicurezza, distinguendo tra utente proprietario, gruppo e altri utenti.

UNIX è un sistema multitasking, il che significa che può eseguire più processi

contemporaneamente, e multiutente, permettendo a più persone di lavorare sullo stesso sistema

senza interferenze. Ogni programma in esecuzione è un processo, identificato da un numero

univoco chiamato Process ID (PID). I processi possono essere creati da altri processi tramite la

fork()

chiamata di sistema , formando una gerarchia in cui un processo padre genera uno o più

processi figli.

L’interazione con UNIX avviene principalmente attraverso la shell, un interprete di comandi che

consente di eseguire programmi, gestire file e processi, e automatizzare operazioni tramite script.

sh

La shell più utilizzata nelle prime versioni di UNIX è la Bourne Shell ( ), che offre un potente

csh

linguaggio di scripting. Successivamente sono state sviluppate altre shell, come la C Shell ( ) e la

ksh

Korn Shell ( ), che introducono funzionalità avanzate.

Uno degli elementi distintivi di UNIX è la filosofia di progettazione, basata su alcuni principi

chiave:

1. Fai una cosa e falla bene: ogni programma UNIX è progettato per svolgere un compito

specifico in modo efficiente.

2. Utilizza file di testo per memorizzare i dati: questo facilita la manipolazione e la

portabilità delle informazioni. |

3. Sfrutta la composizione tramite pipe ( ): i comandi possono essere concatenati per creare

operazioni più complesse, permettendo una grande flessibilità.

Nel tempo, UNIX è stato adottato in ambiti accademici, industriali e militari, diventando un punto

di riferimento per lo sviluppo di altri sistemi operativi, tra cui Linux e macOS. Ancora oggi, molti

concetti e strumenti introdotti dal UNIX tradizionale rimangono fondamentali nei sistemi moderni.

3 multilevelfeedbackqueue

Il Multilevel Feedback Queue (MLFQ) è un algoritmo di scheduling avanzato utilizzato nei

sistemi operativi per la gestione dei processi. Questo algoritmo combina le caratteristiche di altri

con l’obiettivo di ottimizzare

approcci, come il Round Robin e gli algoritmi a priorità,

l’allocazione della CPU in sistemi multitasking. A differenza di altre tecniche che utilizzano una

coda di priorità fissa, l’MLFQ è dinamico, consentendo ai processi di muoversi tra diverse code in

durante l’esecuzione. In questo modo, l’algoritmo si adatta alle diverse

base al loro comportamento

necessità di processi di vario tipo, offrendo un bilanciamento tra equità e efficienza.

Funzionamento dell'Algoritmo MLFQ

Il funzionamento del Multilevel Feedback Queue si basa su una struttura di code multiple,

ciascuna con un livello di priorità differente. I processi vengono inseriti inizialmente nella coda

con la priorità più alta e sono gestiti in base al tempo di esecuzione, al loro comportamento e alla

loro tipologia. Ogni coda ha un quantum di tempo diverso: le code ad alta priorità assegnano un

quantum breve, mentre quelle a bassa priorità ne assegnano uno più lungo. Questo approccio

consente di gestire in modo ottimale processi con esigenze diverse.

Quando un processo entra nel sistema, inizialmente viene inserito nella coda di priorità più alta.

Se il processo termina prima di esaurire il quantum di tempo, viene rimosso dalla coda e

l'esecuzione finisce. Tuttavia, se il processo non termina entro il quantum assegnato, viene spostato

in una coda di priorità inferiore, dove gli viene concesso un quantum maggiore. Questa

penalizzazione permette di ridurre la quantità di tempo che i processi CPU-bound (che richiedono

molta potenza di calcolo) occupano nella CPU, lasciando più spazio per quelli interattivi.

Una caratteristica importante dell'algoritmo è che i processi non sono destinati a rimanere in una

coda fissa, ma possono muoversi dinamicamente tra le varie code. Se un processo in una coda a

bassa priorità continua a richiedere la CPU senza completare l’esecuzione, il suo tempo di attesa

aumenta, mentre un processo che completa rapidamente la sua esecuzione, come un processo I/O-

bound, può essere spostato in una coda a priorità più alta per garantirgli un accesso più rapido alla

è da cui deriva il nome dell’algoritmo, poiché i processi

CPU. Questo meccanismo di feedback

vengono continuamente monitorati e la loro priorità viene aggiornata in base al loro

comportamento.

L’algoritmo è preemptive, il che significa che i processi possono essere interrotti in qualsiasi

momento per consentire l'esecuzione di un altro processo con priorità maggiore. Se un processo di

alta priorità arriva mentre un processo a bassa priorità è in esecuzione, quest'ultimo viene sospeso e

messo da parte, mentre il processo a priorità più alta viene eseguito immediatamente. Allo stesso

modo, se un processo in una coda di priorità inferiore non completa il suo quantum, esso può essere

preempted da un altro processo con priorità superiore.

Una delle principali ragioni per l’utilizzo di MLFQ è che l'algoritmo permette di gestire

efficacemente i processi interattivi e CPU-bound. I processi che compiono frequentemente

operazioni di I/O, come le interfacce utente, tendono a passare rapidamente alla CPU, quindi

vengono spostati nelle code superiori per ridurre la latenza. I processi che invece richiedono

un’elaborazione intensiva della CPU vengono spostati nelle code inferiori, dove è meno probabile

che interferiscano con i processi interattivi.

Vantaggi dell'Algoritmo MLFQ

Dettagli
Publisher
A.A. 2023-2024
5 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher laura200222 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 Roma Tor Vergata o del prof Quaglia Francesco.