Operating System Concepts

Slides:



Advertisements
Presentazioni simili
Memoria Virtuale in Linux
Advertisements

PROCESS MANAGEMENT: STRUTTURE DATI
Meccanismi di IPC Problemi classici di IPC
CONCLUSIONE - Nucleo (o Kernel) Interagisce direttamente con lhardware Interagisce direttamente con lhardware Si occupa dellesecuzione.
1 Introduzione ai calcolatori Parte II Software di base.
Linguaggi di programmazione
Il Sistema Operativo Il Sistema Operativo fa parte del software di base; e` costituito da un insieme di programmi che interagiscono e cooperano per: gestire.
Gestione dei processi A. Ferrari.
Da Unix a Linux Alessio Coraci V Dp.
File System Cos’è un File System File e Directory
Elaboratore e Sistemi Operativo
1 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
Gestione del processore
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)
SC che operano su processi
File system Casi di studio (3).
1 System Call per Comunicazione tra Processi Pipe.
Realizzazione del file system
Memoria virtuale Memoria virtuale – separazione della memoria logica dell’utente dalla memoria fisica. Solo alcune parti di un programma devono trovarsi.
Operating System Concepts
Interfaccia del file system
Strutture dei Sistemi Operativi
Strutture dei Sistemi Operativi
Realizzazione del file system
Interfaccia del file system
Scheduling della CPU Concetti fondamentali Criteri di scheduling
Scheduling della CPU Concetti di base Criteri di scheduling
Silberschatz and Galvin Operating System Concepts Gestione della memoria Nella fase iniziale dello sviluppo di UNIX, gli schemi di gestione della.
1 9: Progettazione Architetturale Obiettivo: stabilire la struttura globale di un sistema software Descriveremo diversi tipi di modello di architettura,
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.
I file l I File sono l unità base di informazione nellinterazione tra utente e sistema operativo l Un file e costituito da un insieme di byte attinenti.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Corso di Informatica (Programmazione)
Le prestazioni (velocità) di un singolo disco sono limitate dalla tecnologia usata, -per aumentare le prestazioni si può pensare di far operare in parallelo.
Struttura dei sistemi operativi (panoramica)
I Thread.
Linguaggi di programmazione
2) Sistemi operativi Lab. Calc. AA2004/05 - cap.2.
Sistemi Operativi GESTIONE DEI PROCESSI.
Strutture dei sistemi di calcolo Funzionamento di un sistema di calcolo Struttura di I/O Struttura della memoria Gerarchia delle memorie Architetture di.
1 LINUX: struttura generale The layers of a UNIX system. User Interface.
Windows Sistema operativo con interfaccia grafica per PC IBM compatibili (varie versioni dal 95) La gestione dei file viene fatta secondo le modalità.
Il sistema operativo Vito Perrone
SOFTWARE I componenti fisici del calcolatore (unità centrale e periferiche) costituiscono il cosiddetto Hardware (alla lettera, ferramenta). La struttura.
Labortaorio informatica 2003 Prof. Giovanni Raho 1 INFORMATICA Termini e concetti principali.
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
Inserire il CDROM CygWin nel lettore, aprite la directory cyg e lanciare in esecuzione (con un doppio click del pulsante sinistro del mouse sulla relativa.
Software e sistema operativo 19-22/5/08 Informatica applicata B Cristina Bosco.
1 Scheduling in Windows 2000 Un thread entra in modalità kernel e chiama lo scheduler quando: Si blocca su un oggetto di sincronizzazione (semaforo, mutex,
Il Sistema Operativo (1)
Threads.
1 I segnali. 2 Prima un po’ di teoria…... 3 Stati dei processi in UNIX Idle Sleeping Zombified Runnable Running Fork iniziata waitpid Fork terminata.
1 Il Buffer Cache Unix (Bach: the Design of the Unix Operating System (cap: 3)
Prima di iniziare… Durata attività: due lezioni frontali + una lezione laboratorio + compiti per casa Prerequisiti: elementi base architettura dei calcolatori.
I processi.
INTERFACCE Schede elettroniche che permettono al calcolatore di comunicare con le periferiche, che possono essere progettate e costruite in modo molto.
1 Il file system di Unix Caratteristiche generali dei FS comunemente usati da Unix/Linux.
Gestione del processore (Scheduler)
1 SC che operano su processi Getpid, fork, exec, wait, waitpid, exit, dup, dup2.
Basi di Unix: introduzione Kernel il fulcro del sistema. Comunica con l’hardware (processore, memoria, disco fisso) Shell interfaccia tra l’utente e il.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
1 Processi e Thread Processi e thread in Windows 2000.
Corso di Laboratorio primo modulo Introduzione all'uso di un sistema operativo. Introduzione all'uso della shell (bash). Java – –Introduzione – –Tipi di.
Sistemi operativi di rete Ing. A. Stile – Ing. L. Marchesano – 1/18.
1.1 Corso di Sistemi Operativi: Programmazione di Sistema Corso di Laurea in Informatica, Università di Firenze Anno accademico 2010/2011 Prof. Luca Ferrari.
1 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
1 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
1 System Call che operano su processi Getpid, fork, exec, wait, waitpid, exit, dup, dup2.
Transcript della presentazione:

Operating System Concepts Il Sistema Unix Breve storia Principi di progetto Interfaccia per il programmatore Interfaccia utente Gestione dei processi Gestione della memoria File System Sistema di I/O Comunicazione fra processi Operating System Concepts

Operating System Concepts Breve storia Sviluppato inizialmente, a partire dal 1969, da Ken Thompson e Dennis Ritchie del gruppo di ricerca dei Bell Laboratories. Incorporò caratteristiche di altri sistemi operativi (es. MULTICS). La terza versione, scritta in C, fu sviluppata ai Bell Labs appositamente per supportare UNIX. La più significativa delle versioni UNIX non-Bell fu sviluppata alla University of California at Berkeley (Berkeley Software Distributions). 4BSD UNIX è il risultato di un finanziamento DARPA per lo sviluppo di uno standard UNIX ad uso governativo. Sviluppato per il VAX, 4.3BSD è una delle versioni più importanti e ne è stato fatto il porting su varie piattaforme. Vari progetti di standardizzazione hanno tentato di consolidare le varianti di UNIX, per ottenere un’unica interfaccia di programmazione verso il sistema. Operating System Concepts

Storia delle versioni UNIX Operating System Concepts

Vantaggi principali di UNIX Scritto in linguaggio ad alto livello. Distribuito sotto forma di sorgenti. Fornisce le primitive di un sistema operativo potente su di una piattaforma economica. Piccola dimensione, modulare, progetto “pulito”. Operating System Concepts

Principi di progetto di UNIX Progettato per realizzare il time–sharing. Possiede un’interfaccia utente (shell) semplice da usare e standard, che può essere facilmente sostituita e personalizzata. File system con directory a più livelli, strutturate ad albero. I file sono supportati dal kernel come sequenze di byte senza struttura. Supporta processi multipli; un processo può creare facilmente altri processi. Sistema altamente interattivo, fornisce facilities per lo sviluppo di programmi. Operating System Concepts

Interfaccia del programmatore Come molti sistemi operativi, UNIX consiste di due parti separate: Kernel: tutto ciò che si trova sotto l’interfaccia delle system-call e sopra l’hardware fisico. Fornisce il file system, lo scheduling della CPU, la gestione della memoria ed altre funzioni di SO, tramite le chiamate di sistema. Programmi di sistema: impiegano le chiamate di sistema, supportate dal kernel, per fornire funzioni utili, come compilazione e manipolazione di file. Operating System Concepts

Struttura a strati di 4.3BSD UNIX Operating System Concepts

Operating System Concepts System Call Le chiamate di sistema definiscono l’interfaccia del programmatore verso UNIX. L’insieme dei programmi di sistema comunemente disponibili definisce l’interfaccia utente. Le interfaccie del programmatore ed utente definiscono il contesto che deve essere supportato dal kernel. Si hanno, approssimativamente, tre categorie di chiamate di sistema in UNIX: Manipolazione di file (le stesse chiamate di sistema supportano anche la manipolazione dei dispositivi). Controllo dei processi. Manipolazione dell’informazione. Operating System Concepts

Operating System Concepts Manipolazione di file Un file è una sequenza di byte; il kernel non impone ai file nessuna struttura. I file sono raccolti in directory, organizzate ad albero. Le directory sono file che contengono informazioni su come reperire altri file. Path name (nome di percorso): identifica un file specificando un cammino che, attraverso la struttura a directory, raggiunge il file. Un path name assoluto inizia nella radice del file system. Un path name relativo inizia nella directory corrente. System call per la manipolazione di file: create, open, read, write, close, unlink, trunc. Operating System Concepts

Struttura delle directory in UNIX Operating System Concepts

Controllo dei processi — 1 Un processo è un programma in esecuzione, identificato univocamente dall’identificatore di processo (un intero). System call per il controllo dei processi: fork crea un nuovo processo execve viene impiegata dopo una fork per rimpiazzare la memoria virtuale di uno dei due processi (generalmente il “figlio”) con un nuovo programma exit termina un processo Un “padre” può attendere (wait) la terminazione di un processo “figlio”; wait fornisce il process id (pid) del figlio terminato, così da renderne nota l’identità al padre wait3 consente al padre di produrre statistiche sulla performance dei figli Processo zombie: processo terminato dopo il padre. Operating System Concepts

System call di gestione dei processi Operating System Concepts

Controllo dei processi — 2 I processi comunicano fra loro attraverso pipe, code di byte che sono accessibili tramite un descrittore di file. Tutti i processi utente sono figli di un unico processo, init. init crea un processo getty, che inizializza i parametri della linea del terminale e attende il login name dell’utente per passarlo al processo login. Login confronta l’user identifier per verificarne i diritti di accesso al sistema. esegue una shell che crea sottoprocessi per ciascun comando utente. Operating System Concepts

Operating System Concepts Segnali Strumenti per gestire condizioni eccezionali. Simili alle interruzioni software. Il segnale di interrupt, SIGINT, viene impiegato per interrompere un comando prima che sia completato (in genere prodotto da un ^C). L’impiego di segnali è stato recentemente esteso e non è più relativo esclusivamente ad eventi eccezionali. Inizio ed interruzione di processi on demand. SIGWINCH informa un processo che la finestra nella quale verrà visualizzato l’output da esso prodotto ha cambiato dimensioni. Invio di dati urgenti attraverso connessione di rete. Operating System Concepts

Operating System Concepts Gruppi di processi — 1 Un insieme di processi correlati che concorrono alla realizzazione di un task comune. In ogni istante, un unico gruppo di processi può utilizzare un certo terminale di I/O. Il processo (unico) in foreground si svolge sotto gli occhi dall’utente al terminale. I processi in background realizzano il loro compito senza interagire direttamente con l’utente. L’accesso al terminale è controllato da signal di gruppo di processi. Operating System Concepts

Operating System Concepts Gruppi di processi — 2 Ciascun processo eredita il proprio terminale di controllo dal processo padre. Se il gruppo di processi associato ad un terminale di controllo coincide con il gruppo di un dato processo, quel processo si trova in foreground e gli è concesso di eseguire l’I/O. SIGTTIN o SIGTTOU “congela” un processo background che tentasse di produrre output; se il processo viene portato in foreground, SIGCONT indica che l’I/O richiesto può ora essere eseguito. SIGSTOP congela un processo foreground. Operating System Concepts

Manipolazione dell’informazione Chiamate di sistema per impostare e restituire il valore di un timer getitmer/setitmer o l’ora corrente gettimeofday/settimeofday. I processi possono richiedere: il loro identificatore di processo: getpid il loro identificatore di gruppo: getgid il nome della macchina su cui sono in esecuzione: gethostname Operating System Concepts

Operating System Concepts Routine di libreria L’interfaccia delle chiamate di sistema in UNIX viene supportata ed ampliata da una notevole collezione di routine di libreria. I file header forniscono la definizione di strutture dati complesse impiegate nelle chiamate di sistema. Librerie addizionali sono fornite per funzioni matematiche, accesso alla rete, conversioni di dati, ecc. Operating System Concepts

Operating System Concepts Interfaccia utente Programmatori ed utenti interagiscono prevalentemente con programmi di sistema già esistenti: Le chiamate di sistema richieste sono incorporate nel programma e non devono essere conosciute dall’utente. I programmi di sistema più comuni sono orientati alla gestione di file e directory. Directory: mkdir, rmdir, cd, pwd File: ls, cp, mv, rm Altri programmi sono relativi a editor (e.g., emacs, vi) formattatori di testo (e.g., troff, TEX), e altro. Operating System Concepts

Operating System Concepts Shell e comandi Shell o interprete dei comandi – il processo utente che esegue i programmi. Viene chiamata shell perché “ingloba” il kernel. La shell indica che è pronta ad accettare un nuovo comando visualizzando un prompt e l’utente introduce comandi su una singola linea. Il comando tipico è il nome di un file binario eseguibile. La shell naviga attraverso il percorso di ricerca per trovare il file relativo al comando, che viene in seguito caricato ed eseguito. Le directory /bin e /usr/bin sono quasi sempre nel percorso di ricerca. Un tipico cammino di ricerca in un sistema BSD è: ( ./home/prof/avi/bin /usr/local/bin /usr/ucb/bin/usr/bin ) La shell normalmente sospende la propria esecuzione fino al termine del comando. Operating System Concepts

Operating System Concepts Standard I/O La maggior parte dei processi, quando iniziano la loro esecuzione, si aspettano di poter disporre di tre descrittori di file aperti: standard input – il processo può leggere cosa viene scritto dall’utente standard output – il processo può inviare l’output sullo schermo dell’utente standard error – uscita dell’errore Molti programmi possono anche utilizzare file (piuttosto che un terminale) per lo standard input e lo standard output. Redirezione dell’I/O: Le shell più comuni dispongono di una semplice sintassi per cambiare i file aperti per l’I/O standard di un processo. Operating System Concepts

Redirezione dell’I/O standard Comando Significato del comando % ls > filea dirige l’output di ls sul file filea % pr < filea > fileb input da filea e output su fileb % lpr < fileb input da fileb %% make program > & errs salva sia lo standard output che lo standard error su un file Operating System Concepts

Pipeline, Filtri, e Shell Script I singoli comandi possono essere “accodati” per mezzo di una barra verticale | (pipe). In questo modo, l’output del comando a sinistra della pipe costituisce l’input per il comando alla sua destra. % ls | pr | lpr Filtro – un comando che passa il proprio standard input allo standard output, compiendo qualche elaborazione (es. pr). Programmare una nuova shell personalizzata, con sintassi e semantica diverse, cambia la visione dell’utente, ma non modifica il kernel o l’interfaccia del programmatore. X Window è un’interfaccia utente a icone molto diffusa sui sistemi UNIX. Operating System Concepts

Operating System Concepts Gestione dei processi La rappresentazione dei processi è il principale problema di progetto di un sistema operativo. UNIX si distingue dagli altri sistemi operativi per la semplicità con cui processi multipli possono essere creati e manipolati. I processi vengono raprresentati in UNIX per mezzo di vari blocchi di controllo (control blocks). I blocchi di controllo associati ad un processo vengono memorizzati nel kernel. L’informazione contenuta nei blocchi di controllo viene utilizzata dal kernel per controllare i processi ed effettuare lo scheduling della CPU. Operating System Concepts

Process Control Block — 1 Ai processi viene associata una struttura dati elementare chiamata struttura del processo (process structure). identificatore di processo (unico) informazioni per lo scheduling (e.g., priorità) puntatori ad altri control block Lo spazio degli indirizzi virtuale di un processo utente è suddiviso in una sezione testo (codice del programma), una sezione dati ed uno stack. Ogni processo che condivide la sezione testo ha un puntatore dalla propria struttura di processo ad una struttura di testo, che... è sempre residente nella memoria principale; memorizza quanti processi condividono il segmento di testo; memorizza dove è reperibile su disco (quando viene effettuato lo swap) la tabella delle pagine per la sezione testo. Operating System Concepts

Process Control Block — 2 La tabella delle pagine memorizza informazioni per la mappatura fra la memoria virtuale del processo e la memoria fisica Le informazioni sul processo, necessarie solo quando esso risiede in memoria principale, sono mantenute nella struttura utente (o u structure) che… è mappata a sola lettura nello spazio degli indirizzi virtuale dell’utente; è scrivibile dal kernel; mantiene informazioni sulla directory corrente e la tabella dei file aperti. Operating System Concepts

Segmento dati di sistema Il lavoro ordinario viene normalmente eseguito in modo utente (user mode); le system call sono effettuate in modo sistema (system mode). Le fasi sistema ed utente di un processo non vengono mai eseguite simultaneamente. Lo stack del kernel (anziché lo stack utente) viene impiegato per un processo eseguito in modo sistema. Lo stack del kernel e l’ u structure costituiscono insieme il segmento dati di sistema per il processo. Operating System Concepts

Localizzazione delle parti di un processo Operating System Concepts

Allocazione di una nuova struttura di processo — 1 fork alloca una nuova struttura di processo per il processo figlio e copia la struttura utente. Viene costruita una nuova tabella delle pagine. Viene allocata nuova memoria per il segmento dati e lo stack del processo figlio. Copiando la struttura utente si conservano i descrittori dei file aperti, gli identificatori di utente e di gruppo, la manipolazione dei segnali, etc. vfork non copia i dati e lo stack al nuovo processo; il nuovo processo semplicemente condivide la tabella delle pagine del processo padre. Una nuova struttura utente ed una nuova struttura di processo vengono comunque create. Viene comunemente utilizzata dalla shell per eseguire un comando ed attendere il suo completamento. Operating System Concepts

Allocazione di una nuova struttura di processo — 2 Il processo padre impiega vfork per produrre un processo figlio; il figlio impiega execve per cambiare il proprio spazio degli indirizzi virtuale. Impiegare vfork per un processo padre oneroso equivale ad un notevole risparmio di CPU time, ma può essere pericoloso dato che ogni cambiamento in memoria avviene in entrambi i processi, fino a che non viene eseguita una execve. execve non crea un nuovo processo o struttura utente, piuttosto il testo ed i dati del processo (padre) vengono rimpiazzati. Operating System Concepts

Operating System Concepts Scheduling della CPU Ciascun processo ha associata una propria piorità di scheduling; numeri più alti indicano priorità più basse. La presenza di feedback negativo nello scheduling della CPU diminuisce il rischio che un processo ne prenda possesso in modo esclusivo. Tecniche di invecchiamento (aging) dei processi vengono impiegate per impedire l’attesa indefinita (starvation). Quando un processo decide di rilasciare la CPU, si pone in stato di sleep per un evento. Quando tale evento accade, il processo di sistema che lo gestisce chiama wakeup con l’indirizzo corrispondente all’evento, e tutti i processi che si trovano in stato di sleep allo stesso indirizzo vengono spostati nella coda ready per essere eseguiti. Operating System Concepts