Il 0% ha trovato utile questo documento (0 voti)
4 visualizzazioni34 pagine

Modulo 1

Questo documento contiene appunti di lezione sui sistemi operativi. Fornisce una panoramica dei sistemi operativi, comprese definizioni e obiettivi. Descrive i componenti di un sistema informatico e come interagiscono. Discute concetti come il multiprocessing, la memoria virtuale, le interruzioni e il DMA. Delinea anche le funzioni comuni dei sistemi operativi come la gestione dei processi, la gestione della memoria, la gestione dei file e la sicurezza.

Tradotto da

ScribdTranslations
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
4 visualizzazioni34 pagine

Modulo 1

Questo documento contiene appunti di lezione sui sistemi operativi. Fornisce una panoramica dei sistemi operativi, comprese definizioni e obiettivi. Descrive i componenti di un sistema informatico e come interagiscono. Discute concetti come il multiprocessing, la memoria virtuale, le interruzioni e il DMA. Delinea anche le funzioni comuni dei sistemi operativi come la gestione dei processi, la gestione della memoria, la gestione dei file e la sicurezza.

Tradotto da

ScribdTranslations
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd

SISTEMI OPERATIVI

Appunti della Lezione

DIPARTIMENTO DI INFORMATICA E INGEGNERIA


DIPARTIMENTO DI SCIENZA E INGEGNERIA DELL'INFORMAZIONE
COLLEGIO DI INGEGNERIA GHOUSIA
(Approvato dall'AICTE, Accreditato dal NBA, Affiliato al VTU di Belgaum)
Modulo1
Capitolo 1
PANORAMICA DEL SISTEMA COMPUTER E DEL SISTEMA OPERATIVO

PANORAMICA DEL SISTEMA OPERATIVO


Che cos'è un sistema operativo?
Un programma che funge da intermediario tra un utente di un computer e l'hardware del computer
Obiettivi del sistema operativo:
Eseguire programmi utente e risolvere i problemi degli utenti
rendere il sistema informatico conveniente da usare
Utilizza l'hardware del computer in modo efficiente
Struttura del Sistema Computerizzato
Il sistema informatico può essere suddiviso in quattro componenti
Hardware – fornisce risorse informatiche di base
CPU, memoria, dispositivi I/O
Sistema operativo
Controlla e coordina l'uso dell'hardware tra varie applicazioni e utenti
I programmi applicativi - definiscono i modi in cui le risorse del sistema vengono utilizzate per risolvere i problemi informatici.
problemi degli utenti
Elaboratori di testi, compilatori, browser web, sistemi di database, videogiochi
Utenti
Persone, macchine, altri computer
Quattro Componenti di un Sistema Computerizzato

Figura 1.1 Vista astratta dei componenti di un sistema informatico


Definizione del Sistema Operativo

Il sistema operativo è un allocatore di risorse

Gestisce tutte le risorse


Decidere tra richieste conflittuali per una gestione efficiente e equa delle risorse
Usa OS è un programma di controllo
Controlla l'esecuzione dei programmi per prevenire errori e uso improprio del computer
Nessuna definizione accettata universalmente
Tutto ciò che un fornitore spedisce quando ordini un sistema operativo è buono
approssimazione Ma varia selvaggiamente
«Il programma che gira sempre sul computer» è il nucleo. Tutto il resto è o
programma di sistema (fornito con il sistema operativo) o un programma applicativo

1
Avvio del Computer
il programma di avvio è caricato all'accensione o al riavvio
Tipicamente memorizzato in ROM o EPROM, comunemente noto come firmware
Inizializza tutti gli aspetti del sistema
Carica il kernel del sistema operativo e inizia l'esecuzione

Organizzazione del Sistema Computerizzato


Operazione del sistema informatico
Una o più CPU, i controllori di dispositivo si connettono attraverso un bus comune che fornisce accesso alla memoria condivisa
Esecuzione concorrente di CPU e dispositivi in competizione per i cicli di memoria

Figura 1.2 Un sistema computerizzato moderno


Operazione del sistema informatico
I dispositivi I/O e la CPU possono eseguire in modo concorrente
Ogni controller del dispositivo è responsabile di un particolare dispositivo
type Each device controller has a local buffer
La CPU sposta i dati da/a la memoria principale a/dai buffer locali
I/O è dal dispositivo al buffer locale del controller
Il controller del dispositivo informa la CPU che ha terminato la sua operazione causando un'interruzione.

Funzioni comuni degli interrupt


Le interruzioni trasferiscono il controllo alla routine di servizio di interruzione generalmente, attraverso il vettore di interruzione, che
contiene gli indirizzi di tutte le routine di servizio
L'architettura di interruzione deve salvare l'indirizzo dell'istruzione interrotta
Gli interrupt in arrivo sono disabilitati mentre un altro interrupt viene elaborato per prevenire un interrupt perso.
trapa è un'interruzione generata dal software causata da un errore o da una richiesta dell'utente
Un sistema operativo è gestito dagli interrupt
Gestione delle Interruzioni
Il sistema operativo preserva lo stato della CPU memorizzando i registri e il contatore di programma
Determina quale tipo di interruzione è avvenuta:
Sondaggio
sistema di interrupti vettoriali
Segmenti di codice separati determinano quale azione deve essere intrapresa per ciascun tipo di interruzione

2
Figura 1.3 Cronologia degli interruzioni per un singolo processo che esegue un output

Chiamata di sistema– richiesta al sistema operativo per consentire all'utente di attendere il completamento dell'I/O. Stato del dispositivo
La tabella contiene un'entrata per ogni dispositivo I/O che indica il suo tipo, indirizzo e stato del sistema operativo
indici nella tabella dei dispositivi I/O per determinare lo stato del dispositivo e per modificare la voce della tabella per includere l'interruzione

Struttura di Accesso Diretto alla Memoria


Utilizzato per dispositivi I/O ad alta velocità in grado di trasmettere informazioni a velocità quasi pari a quelle della memoria
Il controller del dispositivo trasferisce blocchi di dati dalla memoria buffer direttamente alla memoria principale senza
Intervento della CPU
Viene generato solo un'interruzione per blocco, piuttosto che un'interruzione per byte.
Struttura di archiviazione
Memoria principale – solo i grandi mezzi di archiviazione che la CPU può accedere direttamente
Memoria secondaria - estensione della memoria principale che fornisce una grande capacità di archiviazione non volatile
Dischi magnetici - piatti rigidi in metallo o vetro rivestiti con materiale per registrazione magnetica
La superficie del disco è logicamente suddivisa in tracce, che sono ulteriormente suddivise in settori.
Thedisk controllerdetermines the logical interaction between the device and the computer
Gerarchia di archiviazione
Sistemi di archiviazione organizzati in gerarchia
Velocità
Costo
Volatilità
Caching – copiare le informazioni in un sistema di archiviazione più veloce; la memoria principale può essere vista come un ultimo cache
per lo storage secondario

3
Figura 1.4 Gerarchia dei Dispositivi di Memoria

Caching
Principio importante, eseguito a molti livelli in un computer (nell'hardware, nel sistema operativo,
informazioni in uso copiate da memoria più lenta a memoria più veloce temporaneamente
La memorizzazione più rapida (cache) viene controllata per prima per determinare se le informazioni sono lì
Se lo è, informazioni utilizzate direttamente dalla cache (veloce)
Se no, i dati vengono copiati nella cache e utilizzati lì
Cache più piccola dello storage che viene memorizzato
Cache management important design problem
Dimensione della cache e politica di sostituzione

Architettura dei sistemi informatici


La maggior parte dei sistemi utilizza un singolo processore di uso generale (PDA fino ai mainframe)
La maggior parte dei sistemi ha anche processori a scopo speciale.
I sistemi multiprocessore stanno crescendo in uso e importanza
Conosciuti anche come sistemi paralleli, sistemi a accoppiamento stretto
I vantaggi includono
[Link] della produttività
[Link] di scala
3. Maggiore affidabilità – degradazione elegante o tolleranza ai guasti
Due tipi
1. Elaborazione Asimmetrica
2. Elaborazione Simmetrica Multipla

4
Figura 1.5 Come funziona un computer moderno Architettura di multiprocessing simmetrico

Figura 1.6 Un design a doppio core

Sistemi Clusterizzati

Come sistemi multiprocessore, ma più sistemi che lavorano insieme


Di solito si condivide lo spazio di archiviazione tramite una rete di archiviazione (SAN)

Fornisce un servizio ad alta disponibilità che sopravvive ai guasti


Il clustering asimmetrico ha una macchina in modalità di hot-standby
Il clustering simmetrico ha più nodi che eseguono applicazioni, monitorando ciascuno
Altri cluster sono per il calcolo ad alte prestazioni (HPC)
Le applicazioni devono essere scritte per utilizzare la parallelizzazione

Struttura del Sistema Operativo


Il multiprogramming è necessario per l'efficienza
Single user cannot keep CPU and I/O devices busy at all times
Il multiprogramming organizza i lavori (codice e dati) in modo che la CPU abbia sempre uno da eseguire
Un sottoinsieme dei lavori totali nel sistema è mantenuto in memoria

Un lavoro selezionato e eseguito tramite programmazione dei lavori

5
Quando deve aspettare (per esempio per I/O), il sistema operativo passa a un altro lavoro
Il timesharing (multitasking) è un'estensione logica in cui la CPU passa da un lavoro all'altro così frequentemente che gli utenti
può interagire con ogni lavoro mentre è in esecuzione, creando computazione interattiva
I tempi di risposta devono essere < 1 secondo
Ogni utente ha almeno un programma in esecuzione in memoria [processo
diversi lavori pronti a essere eseguiti contemporaneamente [pianificazione CPU
Se i processi non si adattano nella memoria, lo scambio li sposta dentro e fuori per eseguirsi.

La memoria virtual consente l'esecuzione di processi non completamente in memoria.

Figura 1.7 Disposizione della memoria per sistema multiprogrammato

Operazioni del Sistema Operativo


Interruzione gestita dall'hardware
Errore software o richiesta crea eccezione o cattura
Divisione per zero, richiesta di servizio del sistema operativo
Altri problemi di processo includono loop infiniti, processi che si modificano a vicenda o il sistema operativo.
Il funzionamento in modalità duale consente al sistema operativo di proteggere se stesso e altri componenti del sistema.

User modeandkernel mode


Modalità bit fornita dall'hardware

Fornisce la possibilità di distinguere quando il sistema sta eseguendo codice utente o codice kernel
Al alcune istruzioni designate come privilegiate, eseguibili solo in modalità kernel
La chiamata di sistema cambia la modalità in kernel, il ritorno dalla chiamata la ripristina a utente
Transizione da modalità utente a modalità kernel
Timer per prevenire loop infiniti / utilizzo eccessivo delle risorse
Imposta l'interruzione dopo un periodo specifico
Il sistema operativo decrementa il contatore
Quando il contatore zero genera un'interruzione
Imposta prima del processo di pianificazione per riprendere il controllo o terminare il programma che supera il tempo assegnato

6
Figura 1.8 Transizione da modalità utente a modalità kernel

FUNZIONI DEL SISTEMA OPERATIVO

Gestione dei Processi


Un processo è un programma in esecuzione. È un'unità di lavoro all'interno del sistema. Il programma è un'entità passiva.
il processo è un'entità attiva.
Il processo ha bisogno di risorse per svolgere il suo compito
CPU, memoria, I/O, file
Dati di inizializzazione
La terminazione del processo richiede il recupero di qualsiasi risorsa riutilizzabile
Un processo a thread singolo ha un contatore di programma che specifica la posizione della prossima istruzione da eseguire.
Il processo esegue le istruzioni in modo sequenziale, una alla volta, fino al completamento
Un processo multi-thread ha un contatore di programma per ogni thread
Tipicamente un sistema ha molti processi, alcuni utente, altri sistema operativo che vengono eseguiti in modo concorrente su uno o
più CPU
Concorrenza tramite la multiplexazione delle CPU tra i processi / thread

Attività di gestione dei processi


Il sistema operativo è responsabile delle seguenti attività in connessione con il processo
management:
Creare e eliminare sia l'utente che il sistema
sospensione e ripresa dei processi
Fornire meccanismi per la sincronizzazione dei processi
Fornire meccanismi per la comunicazione di processo
Fornire meccanismi per la gestione del deadlock

Gestione della Memoria


Tutti i dati in memoria prima e dopo l'elaborazione
Tutte le istruzioni in memoria per eseguire
La gestione della memoria determina cosa è in memoria e quando.
Ottimizzare l'utilizzo della CPU e la risposta del computer agli utenti

7
Attività di gestione della memoria
Tenere traccia di quali parti della memoria sono attualmente in uso e da chi
Decidere quali processi (o parti di essi) e dati trasferire dentro e fuori dalla memoria
Allocazione e deallocazione dello spazio di memoria secondo necessità

Gestione dello stoccaggio


Il sistema operativo fornisce una visione uniforme e logica dello stoccaggio delle informazioni
Astrarre le proprietà fisiche in un'unità di archiviazione logica - file
Ogni supporto è controllato da un dispositivo (cioè, unità disco, unità nastro)
Le proprietà variabili includono la velocità di accesso, la capacità, il tasso di trasferimento dei dati, il metodo di accesso (sequenziale o
random)
Gestione del file system
I file di solito sono organizzati in directory
Controllo degli accessi nella maggior parte dei sistemi per determinare chi può accedere a cosa
Le attività del sistema operativo includono

Creare e eliminare file e directory


Primitivi per manipolare file e directory
Mappatura dei file su memoria secondaria
Backup files onto stable (non-volatile) storage media

Gestione dell'archiviazione di massa

Di solito i dischi vengono utilizzati per memorizzare dati che non possono essere inseriti nella memoria principale o dati che devono essere conservati per un
lungo periodo di tempo
Una gestione adeguata è di fondamentale importanza
L'intera velocità dell'operazione del computer dipende dal sottosistema del disco e dai suoi algoritmi.
attività di MEMORIA DI MASSA
Gestione dello spazio libero
Assegnazione dello spazio di archiviazione
Pianificazione del disco
Alcuni archivi non devono essere veloci
Lo storage terziario include lo storage ottico e il nastro magnetico
Deve ancora essere gestito
Varia tra WORM (scrivi una volta, leggi molte volte) e RW (leggi-scrivi)

8
Figura 1.9 Prestazioni di Vari Livelli di Archiviazione

Migrazione dell'Intero A dal Disco al Registro


Gli ambienti di multitasking devono fare attenzione a utilizzare il valore più recente, indipendentemente da dove sia memorizzato.
gerarchia di archiviazione

Figura 1.10 Migrazione dell'intero A dal disco al registro


L'ambiente multiprocessore deve fornire coerenza della cache nell'hardware in modo che tutte le CPU abbiano
il valore più recente nella loro cache
Situazione in ambiente distribuito ancora più complessa
Possono esistere diverse copie di un dato

Sottosistema I/O
Uno degli scopi del sistema operativo è nascondere le peculiarità dei dispositivi hardware all'utente
Sottosistema I/O responsabile per
Gestione della memoria per l'I/O, compreso il buffering (memorizzare temporaneamente i dati mentre vengono trasferiti),
caching (memorizzare parti di dati in una memoria più veloce per le prestazioni), spooling (la sovrapposizione dell'output di
un lavoro con input di altri lavori)
Interfaccia generale per driver di dispositivo
Driver per dispositivi hardware specifici

9
Protezione e Sicurezza
Protezione – qualsiasi meccanismo per controllare l'accesso di processi o utenti alle risorse definite dal sistema operativo
Sicurezza – difesa del sistema contro attacchi interni ed esterni
Ampia gamma, compresi attacchi DDoS, worm, virus, furto d'identità, furto di servizio
I sistemi in genere prima distinguono tra gli utenti, per determinare chi può fare cosa
Le identità degli utenti (ID utente, ID di sicurezza) includono nome e numero associato, uno per utente
ID utente quindi associato a tutti i file, processi di quell'utente per determinare il controllo degli accessi
L'identificatore di gruppo (ID gruppo) consente di definire e gestire un insieme di utenti, che possono essere anche associati.
con ogni processo, file
L'escalation dei privilegi consente all'utente di cambiare a un'ID efficace con più diritti

SISTEMI DISTRIBUITI
Computing Environments
Computer tradizionale
Sfuocando nel tempo
Ambiente d'ufficio
PC collegati a una rete, terminali collegati a mainframe o minicomputer che forniscono elaborazione in batch
e time sharing
Ora i portali consentono l'accesso a sistemi di rete e remoti allo stesso
risorse Reti domestiche
Era un sistema singolo, poi modem
Ora protetto da firewall, interconnesso

Calcolo Client-Server
Terminali stupidi sostituiti da PC intelligenti
Molti sistemi ora server, che rispondono alle richieste generate dai clienti
Il server di calcolo fornisce un'interfaccia al cliente per richiedere servizi (ovvero database)
Il file server fornisce un'interfaccia per i clienti per memorizzare e recuperare file

Figura 1.1 Struttura generale di un sistema client-server


Calcolo Peer-to-Peer

Un altro modello di sistema distribuito


Il P2P non fa distinzione tra client e server
Invece, tutti i nodi sono considerati pari.
Ogni attore può fungere da client, server o entrambi
Il nodo deve unirsi alla rete P2P
Registra il suo servizio con il servizio di ricerca centrale sulla rete, oppure
Richiesta di trasmissione per servizio e risposta a richieste di servizio tramite protocollo di discovery
Gli esempi includono Napster e Gnutella
10
Computazione basata sul web
Il web è diventato onnipresente
I PC sono i dispositivi più diffusi
Più dispositivi connessi alla rete per consentire l'accesso al web
Nuova categoria di dispositivi per gestire il traffico web tra server simili: bilanciatore di carico
L'uso di sistemi operativi come Windows 95, lato client, si è evoluto in Linux e Windows XP.
che possono essere client e server

Capitolo 2: Struttura del Sistema

Sistemi Operativi Open Source


Sistemi operativi resi disponibili in formato sorgente piuttosto che solo in formato binario chiuso
Contro la protezione della copia e il movimento della gestione dei diritti digitali (DRM)
Iniziato dalla Free Software Foundation (FSF), che ha la licenza pubblica GNU (GPL) 'copyleft'.
Esempi includono GNU/Linux, BSD UNIX (incluso il core di Mac OS X) e Sun Solaris
Servizi del Sistema Operativo
Un insieme di servizi del sistema operativo fornisce funzioni che sono utili per l'utente:
Interfaccia utente - Quasi tutti i sistemi operativi hanno un'interfaccia utente (UI)
Varie tra Interfaccia a Riga di Comando (CLI), Interfaccia Grafica (GUI), Elaborazione in Batch
Esecuzione del programma - Il sistema deve essere in grado di caricare un programma in memoria e di eseguirlo.
programma, termina esecuzione, sia normalmente che anormalmente (indicando un errore)
Operazioni di I/O - Un programma in esecuzione può richiedere I/O, che può coinvolgere un file o un dispositivo di I/O
Manipolazione del file system - Il file system è di particolare interesse. Ovviamente, i programmi hanno bisogno di
leggere e scrivere file e directory, crearli e eliminarli, cercarli, elencare le informazioni sui file,
gestione dei permessi.

Una Vista dei Servizi del Sistema Operativo

Servizi del sistema operativo


Un insieme di servizi del sistema operativo fornisce funzioni che sono utili per l'utente
Comunicazioni - I processi possono scambiare informazioni, sullo stesso computer o tra computer
su una rete La comunicazione può avvenire tramite memoria condivisa o tramite passaggio di messaggi (pacchetti
spostato dal sistema operativo)
Rilevazione degli errori - il sistema operativo deve essere costantemente consapevole dei possibili errori che possono verificarsi nella CPU e
memoria hardware, nei dispositivi I/O, nel programma utente. Per ogni tipo di errore, il SO dovrebbe prendere il

11
l'azione appropriata per garantire un'informatica corretta e coerente Le strutture di debug possono migliorare notevolmente
le capacità dell'utente e del programmatore di utilizzare il sistema in modo efficiente

Esiste un altro insieme di funzioni del sistema operativo per garantire il funzionamento efficiente del sistema stesso tramite
condivisione delle risorse
Assegnazione delle risorse - Quando più utenti o più lavori sono in esecuzione contemporaneamente, le risorse devono essere
assegnato a ciascuno di loro
Molti tipi di risorse - Alcune (come i cicli della CPU, la memoria principale e l'archiviazione dei file) possono avere caratteristiche speciali
codice di allocazione, altri (come i dispositivi I/O) possono avere codice di richiesta e rilascio generale
Contabilità - Tenere traccia di quali utenti utilizzano quanti e quali tipi di risorse informatiche.
Protezione e sicurezza - I proprietari delle informazioni archiviate in un computer multiutente o in rete
il sistema potrebbe voler controllare l'uso di tali informazioni, i processi concorrenti non dovrebbero interferire l'uno con l'altro
altro
La protezione implica garantire che tutto l'accesso alle risorse di sistema sia controllato
La sicurezza del sistema dagli estranei richiede l'autenticazione dell'utente e si estende alla difesa esterna
Dispositivi I/O da tentativi di accesso non validi
Se un sistema deve essere protetto e sicuro, devono essere adottate precauzioni in tutto il sistema. Una catena è solo quanto.
forte come il suo anello più debole.

Interfaccia del sistema operativo utente - CLI


L'interfaccia a riga di comando (CLI) o interprete dei comandi consente l'immissione diretta dei comandi
A volte implementato nel kernel, a volte da un programma di sistema
A volte vengono implementati più gusti - conchiglie
Recupera principalmente un comando dall'utente ed esegue
A volte comandi integrati, a volte solo nomi di programmi
Se quest'ultima, l'aggiunta di nuove funzionalità non richiede modifiche alla shell

Interfaccia del Sistema Operativo Utente - GUI

Interfaccia a metafora desktop user-friendly


Di solito mouse, tastiera e monitor
Le icone rappresentano file, programmi, azioni, ecc.
Variati pulsanti del mouse su oggetti nell'interfaccia causano varie azioni (fornire informazioni, opzioni,
execute function, open directory (known as a folder)
Inventato presso XeroxPARC
Molti sistemi ora includono sia interfacce CLI che GUI
Microsoft Windows è un'interfaccia grafica con shell da riga di comando "comando".

Apple Mac OS X con interfaccia GUI "Aqua" e kernel UNIX sottostante e shell
Solaris disponibile è CLI con interfacce GUI opzionali (Java Desktop, KDE)
Interpretatore di comandi Bourne Shell

12
L'interfaccia grafica di Mac OS X

Chiamate di sistema

Interfaccia di programmazione per i servizi forniti da


Sistemi Operativi Tipicamente scritti in un linguaggio ad alto livello (C o C++)
Per lo più acceso da programmi tramite un'interfaccia di programmazione delle applicazioni (API) di alto livello piuttosto che direttamente
Le tre API più comuni sono Win32 API per Windows, POSIX API per i sistemi basati su POSIX
sistemi (inclusi virtualmente tutte le versioni di UNIX, Linux e Mac OS X), e API Java per Java
macchina virtuale (JVM)
Perché utilizzare le API anziché le chiamate di sistema? (Nota che i nomi delle chiamate di sistema utilizzate in tutto questo testo sono)
generico)
Esempio di chiamate di sistema

Figure 2.1 Example of how system calls are used

13
Esempio di API Standard
Considera la funzione ReadFile() nella
Win32 API—una funzione per leggere da un file

Una descrizione dei parametri passati a ReadFile()


MANIPOLARE il file—il file da leggere
LPVOID buffer—un buffer in cui i dati saranno letti e scritti
DWORD bytesToRead—the number of bytes to be read into the buffer
LPDWORD bytesRead—il numero di byte letti durante l'ultima lettura
LPOVERLAPPED ovl—indica se viene utilizzato I/O sovrapposto

Implementazione della Chiamata di Sistema


Tipicamente, un numero associato a ciascuna chiamata di sistema Chiamata di sistema
l'interfaccia mantiene una tabella indicizzata secondo questi numeri

L'interfaccia della chiamata di sistema invoca la chiamata di sistema prevista nel kernel del SO e restituisce lo stato della chiamata di sistema.
e eventuali valori di ritorno
Il chiamante non deve sapere nulla su come viene implementata la chiamata di sistema
Deve solo rispettare l'API e capire cosa farà il sistema operativo come risultato della chiamata.
La maggior parte dei dettagli dell'interfaccia del sistema operativo è nascosta al programmatore dall'API
Gestito dalla libreria di supporto a tempo di esecuzione (insieme di funzioni integrate nelle librerie incluse con
compilatore)API – Chiamata di sistema – Relazione OS

Figura 2.2 La gestione di un'applicazione utente che invoca la chiamata di sistema open()

14
Esempio della libreria standard C

Passaggio dei parametri della chiamata di sistema


Spesso, è necessaria più informazione rispetto alla semplice identità della chiamata di sistema desiderata.
Il tipo esatto e la quantità di informazioni variano a seconda del sistema operativo e della chiamata
Tre metodi generali utilizzati per passare parametri al sistema operativo
Più semplice: passare i parametri nei registri
In alcuni casi, potrebbero esserci più parametri che registri
Parametri memorizzati in un blocco, o tabella, in memoria, e l'indirizzo del blocco passato come parametro in un
registrare
Questo approccio adottato da Linux e Solaris
Parametri inseriti, o spinti, nello stack dal programma e rimossi dallo stack dal sistema operativo
sistema
I metodi block e stack non limitano il numero o la lunghezza dei parametri che vengono passati

Passaggio dei parametri tramite tabella

Figura 2.3 Passaggio di un parametro come tabella

15
Tipi di chiamate di sistema
Controllo di processo
Gestione dei file
Gestione dei dispositivi
Manutenzione delle informazioni
Comunicazioni
Protezione

Esempi di chiamate di sistema Windows e Unix

Figura 2.5 Esecuzione di MS-DOS (a) All'avvio del sistema (b) eseguire un programma

Figura 2.6 FreeBSD in esecuzione con più programmi

16
Programmi di Sistema
I programmi di sistema forniscono un ambiente conveniente per lo sviluppo e l'esecuzione dei programmi. Possono essere
diviso in:
Manipolazione dei file
Informazioni sullo stato
Modifica del file
Supporto per linguaggi di programmazione
Caricamento ed esecuzione del programma
Comunicazioni
Programmi applicativi
La maggior parte degli utenti percepisce il sistema operativo attraverso i programmi di sistema, non le effettive chiamate di sistema.
Fornire un ambiente conveniente per lo sviluppo e l'esecuzione dei programmi
Alcuni di essi sono semplicemente interfacce utente per le chiamate di sistema; altri sono notevolmente più complessi
Gestione dei file - Creare, eliminare, copiare, rinominare, stampare, scaricare, elencare e manipolare generalmente i file.
directory
Informazioni di stato
Alcuni chiedono al sistema informazioni - data, ora, quantità di memoria disponibile, spazio su disco, numero di utenti
Altri forniscono informazioni dettagliate sulle prestazioni, la registrazione e il debug
Tipicamente, questi programmi formattano e stampano l'output nel terminale o in altri dispositivi di output.
Alcuni sistemi implementano un registro - utilizzato per memorizzare e recuperare informazioni di configurazione
Modifica del file
Editor di testo per creare e modificare file
Comandi speciali per cercare il contenuto dei file o eseguire trasformazioni del testo
Supporto per linguaggi di programmazione - Compilatori, assemblatori, debugger e interpreti
a volte fornito
Caricamento ed esecuzione del programma - Caricamenti assoluti, caricamenti rilocabili, editor di collegamento e sovrapposizione -
loader, sistemi di debug per linguaggi di alto livello e linguaggio macchina

Communications - Provide the mechanism for creating virtual connections among processes, users,
e sistemi informatici
Consentire agli utenti di inviare messaggi agli schermi degli altri, navigare su pagine web, inviare posta elettronica
messaggi, accedere da remoto, trasferire file da un computer all'altro
Progettazione e Implementazione del Sistema Operativo
Progettazione e implementazione di un sistema operativo non "risolvibile", ma alcuni approcci si sono dimostrati efficaci
La struttura interna dei diversi sistemi operativi può variare notevolmente
Inizia definendo obiettivi e specifiche
Influenza dalla scelta dell'hardware, tipo di sistema
Usergoals andSystemgoals
Obiettivi dell'utente - il sistema operativo dovrebbe essere conveniente da usare, facile da imparare, affidabile, sicuro e veloce
Obiettivi del sistema – il sistema operativo dovrebbe essere facile da progettare, implementare e mantenere, così come
flessibile, affidabile, senza errori ed efficiente
Principio importante da separare
Policy:What will be done?
Meccanismo: Come farlo?
I meccanismi determinano come fare qualcosa, le politiche decidono cosa verrà fatto
La separazione della politica dal meccanismo è un principio molto importante, consente la massima flessibilità
se le decisioni politiche devono essere cambiate in seguito

17
Struttura del Sistema Operativo

Struttura Semplice
MS-DOS – scritto per fornire la massima funzionalità nel minor tempo possibile
spazio Non diviso in moduli
Sebbene MS-DOS abbia una certa struttura, le sue interfacce e i livelli di funzionalità non sono ben separati.

Figura 2.7 Struttura di Livello MS-DOS

Approccio a strati

Il sistema operativo è suddiviso in diversi livelli, ognuno costruito sopra i livelli inferiori.
il livello inferiore (livello 0) è l'hardware; il livello più alto (livello N) è l'interfaccia utente.
Con la modularità, i livelli vengono selezionati in modo tale che ciascuno utilizzi solo funzioni (operazioni) e servizi di
livelli inferiori

Struttura Tradizionale del Sistema UNIX

Figura 2.8 Architettura del Sistema Unix

18
UNIX

UNIX – limitato dalla funzionalità hardware, il sistema operativo UNIX originale aveva una strutturazione limitata.
Il sistema operativo UNIX è composto da due parti separabili
Programmi di sistema
Il kernel
Consiste in tutto ciò che si trova al di sotto dell'interfaccia di chiamata di sistema e al di sopra dell'hardware fisico
Fornisce il file system, la pianificazione della CPU, la gestione della memoria e altri sistemi operativi
funzioni; un gran numero di funzioni per un livello

Figura 2.9 Sistema Operativo a Strati

Struttura del Sistema a Microkernel


Sposta il più possibile dal kernel nello spazio "utente"
La comunicazione avviene tra i moduli utente utilizzando il passaggio di messaggi.
Benefits:
Più facile estendere un microkernel
Più facile portare il sistema operativo su nuove architetture
Più affidabile (meno codice è in esecuzione in modalità kernel)

Più sicuro
Detriments:
Sovraccarico delle prestazioni nella comunicazione dallo spazio utente allo spazio kernel

Figura 2.10 Struttura Mac OS X

19
Moduli

La maggior parte dei moderni sistemi operativi implementa i moduli del kernel
Utilizza un approccio orientato agli oggetti
Ogni componente principale è separato
Ognuno parla agli altri tramite interfacce conosciute
Ognuno è caricabile secondo necessità all'interno del kernel
In generale, simile ai livelli ma con maggiore flessibilità

Figura 2.11 Moduli caricabili Solaris

Macchine Virtuali
Una macchina virtuale porta l'approccio a strati alla sua conclusione logica. Tratta l'hardware e il
nucleo del sistema operativo come se fossero tutti hardware

Una macchina virtuale fornisce un'interfaccia identica all'hardware sottostante.


Il sistema operativo host crea l'illusione che un processo abbia il proprio processore e (virtuale
memoria) Ogni ospite fornito di una copia (virtuale) del computer sottostante

Virtual Machines History and Benefits


Apparve per la prima volta commercialmente nei mainframe IBM nel 1972
Fondamentalmente, più ambienti di esecuzione (differenti sistemi operativi) possono condividere lo stesso
hardware
Proteggere l'uno dall'altro
Alcuna condivisione di file può essere consentita, controllata
Commutate tra di loro, altri sistemi fisici tramite rete
Utile per lo sviluppo, il testing
Consolidamento di molti sistemi a bassa risorsa su sistemi più occupati e meno

20
Il "Formato Virtuale della Macchina", formato standard delle macchine virtuali, consente a una VM di funzionare in molti
different virtual machine (host) platforms

Figura 2.12 Moduli di sistema a) Macchina non virtuale b) Macchina Virtuale

Paravirtualizzazione
Presenta all'ospite un sistema simile ma non identico all'hardware
L'ospite deve essere modificato per funzionare su hardware paravirtualizzato
L'ospite può essere un sistema operativo, o nel caso di Solaris 10, applicazioni che girano in contenitori.
Solaris 10 con due contenitori

Architettura VMware

Figura 2.13 Architettura VMware


21
La Macchina Virtuale Java

Figura 2.14 Macchina Virtuale Java


Debugging del Sistema Operativo

Il debugging è trovare e correggere errori, o bug.


I sistemi operativi generano file di log contenenti informazioni sugli errori
Il fallimento di un'applicazione può generare un file di core dump che cattura la memoria del processo
Il fallimento del sistema operativo può generare un file di dump di errore contenente la memoria del kernel
Oltre ai crash, la ottimizzazione delle prestazioni può migliorare le prestazioni del sistema
La legge di Kernighan: "Il debug è due volte più difficile che scrivere il codice in primo luogo. Pertanto, se tu
Scrivi il codice nel modo più ingegnoso possibile, tu sei, per definizione, non abbastanza intelligente per fare il debug.
lo strumento in Solaris, FreeBSD, Mac OS X consente l'istruzione live sui sistemi di produzione. I sensori attivano
quando il codice viene eseguito, catturando i dati di stato e inviandoli ai consumatori di quelle sonde

Solaris 10 dtrace Seguente Chiamata di Sistema

22
Generazione del sistema operativo
I sistemi operativi sono progettati per funzionare su una qualsiasi delle macchine di una certa classe; il sistema deve essere configurato per
ogni sito informatico specifico
Il programma SYSGEN ottiene informazioni riguardanti la configurazione specifica dell'hardware
booting di sistema - avviando un computer caricando il kernel
Programma di avvio – codice memorizzato nella ROM in grado di localizzare il kernel, caricarlo in memoria e avviarlo.
la sua esecuzione
Avvio del sistema
Il sistema operativo deve essere reso disponibile all'hardware affinché l'hardware possa avviarlo.
Piccolo pezzo di codice – bootloader, localizza il kernel, lo carica in memoria e lo avvia
A volte è un processo in due fasi in cui il blocco di avvio in una posizione fissa carica il caricatore di avvio.
Quando l'alimentazione viene attivata sul sistema, l'esecuzione inizia in una posizione di memoria fissa. Il firmware viene utilizzato per contenere.
codice di avvio iniziale

Capitolo 3: GESTIONE DEI PROCESSI

Concetto di Processo
Un sistema operativo esegue una varietà di programmi:
Sistema batch - lavori
Sistemi a tempo condiviso – programmi o attività degli utenti

Il libro di testo usa i termini lavoro e processo quasi in modo intercambiabile.


Processo - un programma in esecuzione; l'esecuzione del processo deve progredire in modo sequenziale.
Un processo include:
contatore di programma
pila
sezione dati

Figura 3.1 Processo in Memoria

Stato del processo

Man mano che un processo viene eseguito, cambia stato


Il processo è in fase di creazione
in esecuzione: Le istruzioni vengono eseguite
waiting: The process is waiting for some event to occur
Il processo è in attesa di essere assegnato a un processore
terminato: Il processo ha concluso l'esecuzione

23
Figura 3.2 Diagramma dello Stato del Processo

Blocco di Controllo del Processo (PCB)

Informazioni associate a ciascun processo


Stato del processo
Contatore di programma
Registri CPU
Informazioni sulla pianificazione della CPU
Informazioni sulla gestione della memoria
Informazioni contabili
Informazioni sullo stato I/O

Figura 3.3 Blocco di Controllo del Processo

Figura 3.4 Passaggio della CPU da processo a processo

24
Code di Pianificazione dei Processi

Coda di lavoro - insieme di tutti i processi nel sistema


Coda pronta – insieme di tutti i processi residenti nella memoria principale, pronti e in attesa di eseguire
Code di dispositivo - insieme di processi in attesa di un dispositivo I/O
I processi migrano tra le varie code

Figura 3.5 Coda di Pronto e Varie Code di Dispositivi I/O

Figura 3.6 Diagramma di coda Rappresentazione della Pianificazione dei Processi

25
Pianificatori
Pianificatore a lungo termine (o pianificatore di lavoro) – seleziona quali processi devono essere portati nello stato di pronto
coda
Pianificatore a breve termine (o pianificatore CPU) – seleziona quale processo deve essere eseguito per primo e
assegna CPU

Figura 3.7 Aggiunta della Pianificazione a Medio Termine

Il pianificatore a breve termine viene invocato molto frequentemente (millisecondi) Þ (deve essere veloce)
Il pianificatore a lungo termine viene invocato molto raramente (secondi, minuti) Þ (può essere lento)
Lo schedulatore a lungo termine controlla il grado di multiprogrammazione
I processi possono essere descritti come:
Processo I/O-bound– trascorre più tempo a fare I/O che a effettuare calcoli, molti brevi picchi di CPU
Processo limitato dalla CPU - trascorre più tempo a eseguire calcoli; pochi lunghi picchi di CPU molto.

Cambio di contesto
Quando la CPU passa a un altro processo, il sistema deve salvare lo stato del vecchio processo e caricare il
stato salvato per il nuovo processo tramite uno switch di contesto
Il contesto di un processo rappresentato nel PCB. Il tempo di cambio di contesto è un sovraccarico; il
il sistema non svolge lavoro utile durante lo switching del tempo dipendente dall'hardware
supporto

Creazione del processo


Il processo padre crea processi figli, i quali, a loro volta, creano altri processi, formando un albero di
processi
In generale, i processi vengono identificati e gestiti tramite un identificatore di processo (pid)
Condivisione delle risorse

Genitori e figli condividono tutte le risorse


I bambini condividono un sottoinsieme delle risorse dei genitori
Genitore e bambino non condividono risorse
Esecuzione
Genitore e figli eseguono contemporaneamente
Il genitore aspetta fino a quando i bambini terminano
Address space
Duplicate del genitore
Il bambino ha un programma caricato dentro.

26
Esempi di UNIX
La chiamata fork crea un nuovo processo
La chiamata execsystem viene utilizzata dopo un fork per sostituire lo spazio di memoria del processo con un nuovo programma.

Figura 3.10 Creazione del processo

int main()
{
pid_t pid;
/* forkare un altro processo */
pid = fork();
se (pid < 0) { /* si è verificato un errore */
fprintf(stderr, "Creazione del processo figlio non riuscita");

exit(-1);
}
altrimenti se (pid == 0) { /* processo figli */
execlp("/bin/ls", "ls", NULL);
}
altro { /* processo padre */ }
/* il genitore attenderà che il bambino completi */
attendere (NULL);
printf ("Bambino Completo");
exit(0);
}
}

Figura 3.9C Creazione di un processo separato nel programma C

27
Figura 3.8 Un albero di processi su un tipico Solaris
Terminazione del processo
Il processo esegue l'ultima istruzione e chiede al sistema operativo di eliminarla (uscire)
Output dei dati dal bambino al genitore (viawait)
Le risorse del processo vengono deallocate dal sistema operativo
Il genitore può terminare l'esecuzione dei processi figli (abortire)
Il bambino ha superato le risorse allocate
Il compito assegnato al bambino non è più necessario
Se il genitore sta uscendo, alcuni sistemi operativi non consentono al figlio di continuare se il suo genitore
termina Tutti i bambini terminati -terminazione a cascata
Comunicazione tra processi
I processi all'interno di un sistema possono essere indipendenti o cooperativi
I processi di cooperazione possono influenzare o essere influenzati da altri processi, inclusa la condivisione dei dati
Motivi per i processi di cooperazione:
Condivisione delle informazioni
Velocizzazione dei calcoli
Modularità
Convenienza
I processi cooperativi necessitano di comunicazione tra processi (IPC)
Due modelli di IPC
Shared memory
Trasmissione dei messaggi

Figure 3.12 Communications Models a) Message Passing b)Shared Memory

Processi di cooperazione
Il processo indipendente non può influenzare né essere influenzato dall'esecuzione di un altro processo.
Cooperatingprocess can affect or be affected by the execution of another process
Vantaggi della cooperazione nei processi
Condivisione delle informazioni
Accelerazione della velocità di calcolo

Modularità
Comodità

28
Problema del Produttore-Consumatore
Paradigma per processi cooperativi, il processo produttore produce informazioni che vengono consumate da un
processo di consumo
unbounded-buffer non pone alcun limite pratico sulla dimensione del
il buffer bounded-buffer presuppone che ci sia una dimensione fissa del buffer
Buffer Limitato - Soluzione di Memoria Condivisa
Dati condivisi
#define BUFFER_SIZE 10
typedef struct {
...
} articolo;
elemento buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
La soluzione è corretta, ma può utilizzare solo BUFFER_SIZE-1 elementi

Buffer Limitato – Produttore


mentre (vero) {
/* Produci un elemento */
mentre (((in = (in + 1) % SIZE BUFFER count) == out)
;/* non fare nulla -- nessun buffer libero
*/ buffer[in] = elemento;
(in + 1) % DIMENSIONE BUFFER;
}

Buffer Limitato - Consumatore


mentre (vero) {
mentre (in == out)
// non fare nulla -- nulla da
consumare // rimuovere un elemento da
elemento del buffer = buffer[out];
out = (out + 1) % DIMENSIONE BUFFER;
restituire l'oggetto;

}
Comunicazione interprocesso – Passaggio di messaggi
Meccanismo per i processi per comunicare e sincronizzare le loro azioni
Sistema di messaggi – i processi comunicano tra loro senza ricorrere a variabili condivise
La struttura IPC fornisce due operazioni:
invia(messaggio) - dimensione del messaggio fissa o variabile
ricevi(messaggio)
Se P e Q desiderano comunicare, devono:
stabilire un collegamento di comunicazione tra di loro
scambiare messaggi tramite invio/ricezione
Implementazione del collegamento di comunicazione
fisico (ad esempio, memoria condivisa, bus hardware)
logico (ad es., proprietà logiche)

29
Comunicazione Diretta
I processi devono nominarsi esplicitamente l'un l'altro:
invia(P,messaggio) – invia un messaggio al processo P
ricevi(Q, messaggio) – ricevi un messaggio dal processo Q
Proprietà del collegamento di comunicazione I collegamenti sono stabiliti
automaticamente
Un collegamento è associato esattamente a una coppia di processi comunicanti.
Tra ogni coppia esiste esattamente un link
Il collegamento può essere unidirezionale, ma di solito è bidirezionale

Comunicazione indiretta
I messaggi sono diretti e ricevuti dalle cassette postali (chiamate anche porte)
Ogni cassetta postale ha un id unico
I processi possono comunicare solo se condividono una
Proprietà della casella di posta del link di comunicazione
Collegamento stabilito solo se i processi condividono una casella di posta comune
Un collegamento può essere associato a molti processi
Ogni coppia di processi può condividere diversi link di comunicazione
Il collegamento può essere unidirezionale o bidirezionale Operazioni

crea una nuova casella di posta


inviare e ricevere messaggi tramite la casella di posta
distruggere una cassetta della posta

I primitivi sono definiti come:


invia(A, messaggio) – invia un messaggio alla casella di posta A
ricevi(A, messaggio) – ricevi un messaggio dalla casella di posta A
Condivisione della casella postale
P1, P2 e P3 condividono la casella di posta A

P1, invia; P2 e P3 ricevono


Chi riceve il messaggio?
Soluzioni
Consentire che un collegamento sia associato a massimo due processi Consentire
solo un processo alla volta per eseguire un'operazione di ricezione
Permetti al sistema di selezionare arbitrariamente il destinatario. Il mittente viene informato su chi era il destinatario.
Sincronizzazione
Il passaggio di messaggi può essere bloccante o non bloccante
il blocco è considerato sincrono
Il blocco dell'invio ha il mittente bloccato fino a quando il messaggio non viene ricevuto
La ricezione bloccante costringe il ricevitore a bloccarsi finché un messaggio non è disponibile

Il non-bloccante è considerato asincrono


Il non-blocking send permette al mittente di inviare il messaggio e continuare
La ricezione non bloccante fa sì che il ricevitore riceva un messaggio valido o null

30
Buffering
Coda di messaggi associata al collegamento; implementata in uno dei tre modi
1. Capacità zero - 0 messaggi

2. Capacità limitata – lunghezza finita dei messaggi


Il mittente deve aspettare se il link è pieno

3. Capacità illimitata – lunghezza infinita


Il mittente non aspetta mai
Esempi di sistemi IPC - POSIX
Memoria Condivisa POSIX
Il processo crea prima un segmento di memoria condivisa
segmento id = shmget(IPC PRIVATE, dimensione, S IRUSR | S IWUSR);
Il processo che desidera accedere a quella memoria condivisa deve collegarsi ad essa
memoria condivisa = (char *) shmat(id, NULL, 0); Ora il processo
potrebbe scrivere nella memoria condivisa
printf(memoria condivisa, "Scrivendo nella memoria condivisa");
Quando è completato, un processo può staccare la memoria condivisa dal suo indirizzo
spazio shmdt(memoria condivisa);
Esempi di sistemi IPC - Mach
La comunicazione Mach è basata sui messaggi
Anche le chiamate di sistema sono messaggi
Ogni attività riceve due caselle di posta al momento della creazione: Kernel e Notify
Solo tre chiamate di sistema sono necessarie per il trasferimento dei messaggi
msg_send(), msg_receive(), msg_rpc() Caselle postali necessarie
per comunicazione, creato tramite
port_allocate()
Esempi di sistemi IPC - Windows XP
Comunicazione tra processi centrata sul passaggio di messaggi tramite la funzionalità di chiamata a procedura locale (LPC)

Funziona solo tra processi sullo stesso sistema


Utilizza porte (come cassette postali) per stabilire e mantenere canali di comunicazione
La comunicazione funziona nel seguente modo:
Il cliente apre un gestore all'oggetto porta di connessione del sottosistema
Il cliente invia una richiesta di connessione
Il server crea due porte di comunicazione private e restituisce il gestore di una di esse al client.
il client e il server utilizzano il corrispondente gestore della porta per inviare messaggi o callback e per ascoltare per
risposte

31
Chiamate di Procedura Locale in Windows XP

Comunicazioni nei sistemi client-server


Porte
Chiamate di Procedura Remota
Invocazione remota di metodo (Java)
Prese
Un socket è definito come un punto finale per la comunicazione
Concatenazione dell'indirizzo IP e della porta
Il socket [Link]:1625 si riferisce alla porta 1625 sull'host [Link]
La comunicazione avviene tra una coppia di socket
Comunicazione Socket

Chiamate di Procedura Remota


La chiamata di procedura remota (RPC) astratte le chiamate di procedura tra processi su sistemi in rete
Stubs– client-side proxy for the actual procedure on the server
Lo stub lato client localizza il server e marshall i parametri
Lo stub sul lato server riceve questo messaggio, disimballa i parametri marshalling e esegue
la procedura sul server

32
Esecuzione di RPC

Invocazione di metodi remoti


L'Invocazione Remota di Metodi (RMI) è un meccanismo Java simile agli RPC.
RMI consente a un programma Java su una macchina di invocare un metodo su un oggetto remoto

Parametri di Marshalling

33

Potrebbero piacerti anche