LINUX: struttura generale

Slides:



Advertisements
Presentazioni simili
PROCESS MANAGEMENT: STRUTTURE DATI
Advertisements

Programmazione concorrente
SC che operano su processi
I segnali.
1 System Call per Comunicazione tra Processi Pipe.
SC che operano su file (1)
Threads: Sistemi Operativi I Corso di Laurea in Ingegneria Informatica
I Thread.
Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.
1 LINUX: struttura generale The layers of a UNIX system. User Interface.
Sistemi Operativi - Shell 1 Elementi di programmazione concorrente Niccolo` Battezzati Politecnico di Torino Dip. Automatica e Informatica.
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,
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.
T. MottaGenerazione e terminazione processi1 Creazione e terminazione dei processi Tommaso Motta
1 Il file system di Unix Caratteristiche generali dei FS comunemente usati da Unix/Linux.
1 SC che operano su processi Getpid, fork, exec, wait, waitpid, exit, dup, dup2.
1 Amministrazione dei processi nel sistema operativo Unix (Bach: the Design of the Unix Operating System (cap: 6, 7, 8)
1 Chiamate di sistema Introduzione Errori : perror() Chiamate che lavorano su file.
Programmazione di sistema e gestione dei processi in C.
Gestione dei segnali I segnali sono interrupt software.I segnali –interrompono i processi qualunque cosa stiano essi facendo al momento della generazione.
I segnali.
1.1 Il concetto di processo Un sistema operativo può eseguire una grande varietà di attività diverse:  sistemi batch – jobs;  sistemi time-shared – programmi.
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 Processi e Thread Processi e thread in Unix. 2 UNIX/Linux Molte versioni di UNIX –trattiamo le caratteristiche più comuni) Ci riferiamo allo standard.
1 System Call che operano su processi Getpid, fork, exec, wait, waitpid, exit, dup, dup2.
1 System Call che operano su processi Getpid, fork, exec, wait, waitpid, exit, dup, dup2.
Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
1 © F. Pedullà, M. VerolaAA La famiglia di system call exec LSO1 Modulo 6 La famiglia di system call exec Laboratorio di Sistemi Operativi.
1 © F. Pedullà, M. VerolaAA System call per il controllo dei processi (fork, exit, wait) LSO1 Modulo 5 System call per il controllo.
1 ELEMENTI DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
1 © F. Pedullà, M. VerolaAA Introduzione alle system call LSO1 Modulo 4: Sezione A Introduzione alle system call Laboratorio di Sistemi.
1 © F. Pedullà, M. VerolaAA Pipe e FIFO LSO1 Modulo 9 Pipe e FIFO Laboratorio di Sistemi Operativi I Anno Accademico Francesco.
Programmazione in Java Parte II Lezione 5 Dott. Marco Faella.
Ambienti di Programmazione per il Software di Base
Modulo 7 System call relative ai segnali
Modulo 5: Programmazione di sistema ---
Il Sistema Operativo Gestione dei Processi
I PROCESSI.
Il Sistema Operativo Ripasso
Terza Lezione → Navigare nel file System → parte 2
SC per IPC Pipe.
I PERMESSI IN LINUX.
Seconda lezione → Navigare nel File System
La famiglia di system call exec Laboratorio di Sistemi Operativi I
Organizzazione fisica
I FILES AD ACCESSO SEQUENZIALE
PROGRAMMAZIONE BASH – ISTRUZIONE IF
Ambienti di Programmazione per il Software di Base
Introduzione L’8254 è un interval timer event/counter, progettato per risolvere i problemi del controllo del timing, comuni ad ogni microcomputer. E’ costituito.
Programmazione e Laboratorio di Programmazione
Processi e Thread Meccanismi di IPC (1).
Scheduling in Linux (Kernel 2.4 e 2.6)
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Lettura di input MIDI da Web MIDI API
Processi e thread in Windows 2000
File System ed Input/Output
Esercizio 1 Scrivete un programma C "creaproc" che crea (mediante fork) il numero di processi specificati in input. ad esempio: $> creaproc 7 crea 7 nuovi.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Progetto del processore e supporto del processore al SO (interruzioni – eccezioni) Salvatore Orlando.
ALGORITMO E’ una successione finita di passi che consente di risolvere tutti i problemi di una classe e di determinare il risultato. Caratteristiche: Finito.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
File system Casi di studio (3).
Transcript della presentazione:

LINUX: struttura generale User Interface The layers of a UNIX system.

Processi in LINUX Ogni processo nasce con un solo thread Gerarchia dei processi (padre-figli, vedi pstree –n) init (ora systemd) padre di tutti i processi. Un processo gira in modalità utente; quando effettua una system call passa in modalità kernel e può operare sulle risorse del sistema.

Gestione dei Processi Per ogni processo è associata una struttura task_struct, Contiene per ogni processo: parametri per lo scheduling (priorità, tempo consumato, ecc.) immagine di memoria (puntatori alle aree di memoria e al disco). informazioni sui segnali (quali segnali gestire, ignorare, ecc.) Stato del processo PID, PID del padre user e group id. Tabella dei file aperti (file_struct)

Creazione di Processi #include <sys/types.h> #include <unistd.h> pid_t pid = fork() crea una copia esatta del processo invocante restituisce 0 al figlio ed il PID del figlio al padre duplica i dati e lo stack del padre nel figlio in un’area di memoria differente i file aperti dal padre sono condivisi al figlio Il figlio eseguirà lo stesso codice del padre Altre condivisioni: directory di lavoro, variabili di ambienti, limiti, priorità, ecc.

Creazione di Processi pid_t getpid() pid_t getppid() Restituisce il PID del processo corrente pid_t getppid() Restituisce il PID del processo padre

Terminazione di processi pid_t wait(int *status) attende la terminazione di un processo figlio La funzione ritorna il PID del figlio in caso di successo e −1 per un errore, nel qual caso errno assumerà uno dei valori: ECHILD il processo non ha nessun figlio di cui attendere uno stato di terminazione. EINTR la funzione `e stata interrotta da un segnale. dopo l’esecuzione di wait, status contiene l’esito della computazione del processo figlio: il codice di uscita del figlio (8 bit meno significative) e altre informazioni (segnale che ha causato la terminazione, ecc.) exit(status) termina il processo e restituisce il valore di status al padre (nella variabile status restituita da wait)

Terminazione di processi pid_t waitpid(pid_t pid, int *status, int options) Più flessibile, attende l’uscita o il cambio stato di un processo. Si può specificare in pid l’id del processo da attendere La funzione ritorna il PID del processo che ha cambiato stato in caso di successo, o 0 se è stata specificata l’opzione WNOHANG e il processo non è uscito e −1 per un errore, nel qual caso errno assumerà uno dei valori: ECHILD: il processo specificato da pid non esiste o non `e figlio del processo chiamante. EINTR non `e stata specificata l’opzione WNOHANG e la funzione `e stata interrotta da un segnale EINVAL si è specificato un valore non valido per l’argomento options. Options della funzione waitpid (solo lettura)

Terminazione di processi Processi zombie processi terminati il cui padre non ha (ancora) eseguito la wait() attendono di restituire il codice di terminazione e svanire, altrimenti rimangono zombie e sono eliminati da init o systemd

Creazione di Processi execl (nome_con_path, nome, argv) Fa eseguire a un processo un codice diverso, con diversi parametri Nome_con_path = nome dell’eseguibile compreso di path nome = nome dell’eseguibile Argv = lista di parametri del’eseguibile separati da virgola, terminati da NULL Esempio di processo che lancia ls -l execl (“/bin/ls”, “ls”, “-l”, NULL); Esistono altre chiamate con differenti argomenti: execv, execve, execle, ecc..

Comunicazione fra processi Pipe : file speciali utilizzati per connettere due processi con un canale unidirezionale di comunicazione Se B cerca di leggere da una pipe vuota si blocca Se A scrive su una pipe piena, viene bloccato fino a che non viene letto qualcosa L’ampiezza della pipe dipende dal sistema

Comunicazione fra processi: pipe user process parent process child process fd[0] fd[1] fd[0] fd[1] fd[0] fd[1] pipe pipe kernel kernel

Comunicazione fra processi Una pipe si crea con l’istruzione: int pd[2]; int ris; ris=pipe(pd); ris=-1 se errore, 0 se corretto Si legge da pd[0] e si scrive su pd[1] Per leggere: read (pd[0], buffer, lung); Per scrivere: write (pd[1], buffer, lung); Dove buffer è un’array di caratteri e lung è la lunghezza del messaggio.

Comunicazione fra processi Segnali (interruzioni software) comunicano al processo il verificarsi di una certo evento possono essere inviati solo ai membri del proprio gruppo (antenati, discendenti) generalmente possono essere ignorati, catturati o possono terminare il processo (default per molti segnali) per i segnali catturabili si può specificare un signal handler che viene mandato in esecuzione appena il segnale viene rilevato

Comunicazione fra processi Segnali (cont.) particolari combinazioni di tasti inviano dei segnali al processo in foregroud Control-C corrisponde a SIGINT Control-Z corresponde a SIGTSTP i segnali servono anche al SO per a comunicare al processo il verificarsi di particolari eventi (es. SIGFPE, errore floating-point)

I segnali in Linux

Chiamate di sistema relative ai processi s è un codice di errore pid è il codice di identificazione di un processo