Strutture dei sistemi operativi Flashcards
Quali sono i comuni servizi che offre un sistema operativo in generale?
- Interfaccia con l’utente: Quasi tutti i sistemi operativi hanno un’interfaccia utente (UI). Esso può assumere diverse forme. Un’interfaccia a riga di comando (CLI) è basata su stringhe che codificano i comandi, insieme a metodi per inserirli e modificarli come ad esempio un programma apposito. Un’interfaccia a lotti, invece, prevede che comandi e relative direttive siano codificati nei file, eseguiti successivamente a lotti. La forma senz’altro più diffusa è l’interfaccia grafica con l’utente (GUI), ossia un sistema grafico a finestre dotato di un dispositivo puntatore (mouse) per comandare operazioni di I/O e selezionare opzioni dai menu, insieme a una tastiera per inserire del testo.
- Esecuzione di un programma: Il sistema deve poter caricare un programma in memoria ed eseguirlo. il programma deve poter terminare la propria esecuzione in modo normale o anormale (indicando l’errore).
- Operazioni di I/O: Un programma in esecuzione può richiedere un’operazioni di I/O che implica l’uso di un file o di un dispositivo di I/O.
- Gestione del file system: I programmi richiedono l’esecuzione di operazioni di lettura e scrittura su file, oltre a creare, cercare e cancellare file e directory.
- Comunicazioni: In molti casi un processo ha bisogno di scambiare informazioni con una altro processo. La comunicazione si può realizzare tramite una memoria condivisa o attraverso lo scambio di messaggi.
- Rilevamento d’errori: Il sistema operativo deve essere sempre capace di rilevare eventuali errori che possono verificarsi nella CPU e nei dispositivi di memoria.
Esiste anche un’altra serie di funzioni del sistema operativo che non riguarda direttamente gli utenti, ma assicura il funzionamento efficiente del sistema stesso.
- Assegnazione delle risorse: Se sono in corso più sessioni di lavoro di utenti o sono contemporaneamente in esecuzione più processi, il sistema operativo provvede all’assegnazione delle risorse necessarie a ciascuno di essi.
- Contabilizzazione dell’uso delle risorse: Risulta possibile registrare quali utenti usino il calcolatore, segnalando quali e quante risorse impieghino. → utile per redigere statistiche e migliorare il sistema
- Protezione e sicurezza: La protezione assicura che l’accesso alle risorse del sistema sia controllato. Inoltre, soprattutto all’interno di un sistema multiutente risulta necessario che più processi non correlati e in esecuzione concorrente non si influenzino o interferiscano con il sistema operativo. Se un sistema deve essere protetto e sicuro, al suo interno devono esistere precauzioni ovunque.
Cos’è l’interprete dei comandi?
L’interprete dei comandi è una funzionalità compresa nel kernel del sistema operativo. In ambienti, come UNIX, l’interprete dei comandi è considerato un programma speciale, che si innesca all’avvio di un processo o allorché un utente si collega per la prima volta
Qual è lo scopo dell’interprete dei comandi?
La funzione principale dell’interprete dei comandi consiste nel prelevare ed eseguire il successivo comando impartito dall’utente.
I comandi si possono implementare in due modi:
- nel primo, lo stesso interprete dei comandi contiene il codice per l’esecuzione del comando; in questo caso, poiché ogni comando richiede il proprio segmento di codice, il numero dei comandi che si possono impartire determina la dimensione dell’interprete dei comandi;
- l’altro metodo, usato per esempio in UNIX, implementa la maggior parte dei comandi per mezzo di programmi speciali del sistema; in questo caso l’interprete dei comandi non capisce il significato del comando, ma ne impiega semplicemente il nome per identificare il file da caricare in memoria per l’esecuzione.
Secondo l’implementazione UNIX dell’interprete dei comandi, come funziona il comando rm file.txt
?
Il comando cerca un file chiamato rm
, lo carica in memoria e lo esegue con il parametro file.txt
. La funzione corrispondente al comando rm
è interamente definito dal codice del file rm
.
Qual è lo scopo delle chiamate di sistema?
Le chiamate di sistema offrono un’interfaccia tra un processo e il sistema operativo. Tali chiamate sono generalmente disponibili sotto forma di routine scritte in C o in C++. Di solito, ogni chiamata di sistema è codificata da un numero; il compilatore mantiene una tabella delle chiamate di sistema, cui si accede usando questi numeri come indici.
Cosa sono i programmi di sistema e come si classificano?
I programmi di sistema, conosciuti anche come utilità di sistema, offrono un ambiente più conveniente per lo sviluppo e l’esecuzione di programmi; alcuni sono semplici interfacce per le chiamate di sistema, altri sono più complessi; in generale si possono classificare nelle seguenti categorie:
- gestione dei file, informazioni di stato;
- ambienti d’ausilio alla programmazione;
- caricamento ed esecuzione dei programmi;
- comunicazione.
Qual è il vantaggio principale dell’approccio a strati (layer) all’architettura di sistema?
Il vantaggio principale offerto da questo metodo è dato dalla semplicità di progettazione e dalle funzionalità di debug. Gli strati sono composti in modo che ciascuno usi solo funzioni e servizi che appartengono a strati di livello inferiore.
Qual è lo svantaggio dell’approccio a strati (layer) all’architettura di sistema?
La principale difficoltà del metodo stratificato risiede nella definizione appropriata dei diversi strati.
Qual è probabilmente il miglior approccio alla progettazione di un sistema operativo e in cosa consiste?
Forse il miglior approccio disponibile per la progettazione dei sistemi operativi si fonda su tecniche della POO per implementare un kernel modulare. In questo contesto, il kernel è costituito da un insieme di componenti fondamentali, integrati poi da funzionalità aggiunte dinamicamente durante l’avvio o l’esecuzione.
Come fa l’apparato fisico dell’elaboratore a sapere dove si trova il kernel e a caricarlo?
La procedura d’avviamento di un calcolatore attraverso il caricamento del kernel è nota come avviamento (booting) del sistema: nella maggior parte dei sistemi di calcolo c’è un piccolo segmento di codice, noto come programma d’avvio (bootstrap program), che individua il kernel, lo carica in memoria e ne avvia l’esecuzione. Quando una CPU sta per entrare in funzione - per esempio, quando l’elaboratore viene acceso o riavviato - il registro delle istruzioni è caricato con una locazione di memoria predefinita, da cui ha inizio l’esecuzione. Il programma di avvio inizia da questa locazione.
Dov’è contenuto il programma di avvio all’interno del sistema e perché?
Esso è contenuto in una memoria a sola lettura (ROM), poiché non si conosce lo stato della RAM all’avvio del sistema; inoltre, la ROM presenta il vantaggio di non dover essere inizializzata e di essere immune ai virus.
Cos’è il firmware?
Il firmware è un programma integrato componente elettronico programmato, solitamente una ROM, il cui scopo è quello di avviare il componente stesso e consentirgli di interagire con altri componenti hardware tramite l’implementazione di protocolli di comunicazione o interfacce di programmazione.
Perché alcuni sistemi memorizzano il sistema operativo nel firmware mentre altri lo memorizzano su disco?
Per i sistemi operativi di grandi dimensioni o per sistemi che cambiano di frequente, il caricatore d’avvio (bootstrap loader) è memorizzato nel firmware e il sistema operativo risiede su disco, in questo modo, il* codice di avviamento* destinato al disco, e il *sistema operativo *stesso, possono essere facilmente sostituiti, scrivendone nuove versioni sul disco.
Come viene chiamato un disco che contiene una partizione d’avvio?
Un disco che contiene una partizione d’avvio è chiamato disco di sistema o disco di avvio (boot disk).