1 © 2005-2007 F. Pedullà, M. VerolaAA 2007-2008 Introduzione alle system call LSO1 Modulo 4: Sezione A Introduzione alle system call Laboratorio di Sistemi.

Slides:



Advertisements
Presentazioni simili
I Thread.
Advertisements

1 Chiamate di sistema Introduzione Errori : perror() Chiamate che lavorano su file.
1 System Call che operano su processi Getpid, fork, exec, wait, waitpid, exit, dup, dup2.
Table View. Problemi ricorrenti Una situazione ricorrente è quella in cui il controller potrebbe avere un’altezza superiore a quella dello schermo. In.
Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”
Giuseppe Andronico CCR-WS10 Santa Tecla, 18 Maggio 2010 Introduzione MPI & GPU.
IL PROCESSORE I MICROPROCESSORI INTEL Il microprocessore è un circuito integrato dotato di una struttura circuitale in grado di effettuare un determinato.
"Play Ogg" multimedialità libera con GNU/Linux... presentato da Stefano Pardini al Linux Day 2008 per ACROS ACROS.
1 © F. Pedullà, M. VerolaAA Espressioni Regolari LSO1 Modulo 2 - Sezione B Espressioni Regolari Laboratorio di Sistemi Operativi I.
Corso gratuito di Linux. Linux User Group Mantova
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.
Fondamenti di Informatica A - Massimo Bertozzi LE FUNZIONI.
1 Alberto Pollastro, !#/bin/bash Novara, GalLUG - Gruppo Utenti Linux Galliate - #!/bin/bash Alberto Pollastro.
1 ELEMENTI DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Orientamento. Il Kernel Il Kernel è un programma scritto in linguaggio vicino all'hardware che ha il compito di fornire ai processi in esecuzione sul.
1 © F. Pedullà, M. VerolaAA Pipe e FIFO LSO1 Modulo 9 Pipe e FIFO Laboratorio di Sistemi Operativi I Anno Accademico Francesco.
FOX BOARD 8+32 Argomenti trattati: ● Breve descrizione dell'hardware ● Overview del sistema di sviluppo ● Esame delle porte GPIO Hardware.
Gestione delle configurazioni Configuration management (CM) E` un processo che controlla le modifiche fatte a un sistema e gestisce le diverse versioni.
1 © 2007 Renzo Davoli, Alberto Montresor, Mauro Morsiani Laboratorio di Sistemi Operativi Anno Accademico AMIKaya: criteri di valutazione del.
Programmazione in Java Parte II Lezione 5 Dott. Marco Faella.
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Gestione della memoria
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
Ambienti di Programmazione per il Software di Base
© 2007 SEI-Società Editrice Internazionale, Apogeo
I/O redirection AND PIPES
Corso LAMP Linux Apache Mysql Php
(i diritti e le libertà)
Generazione di codice dinamico per la realizzazione di catene di servizi componibili Matteo Fazi – matr
Sistema di Analisi e di Acquisizione
Terza Lezione → Navigare nel file System → parte 2
10. Programmazione Ricorsiva Ing. Simona Colucci
Paradigma MVC Ing. Buttolo Marco.
La famiglia di system call exec Laboratorio di Sistemi Operativi I
I comandi.
* Il Sistema Operativo GNU/Linux * Sistema Operativo e Applicazioni
PROGRAMMAZIONE BASH – ISTRUZIONE IF
Informatica per l’Ingegneria
AsyncTasks.
istalliamo l’ambiente di sviluppo - ide
Realizzazione di R. Diana
Programmazione e Laboratorio di Programmazione
Processi e Thread Meccanismi di IPC (1).
Programmazione e Laboratorio di Programmazione
Claudio Rocchini - Interfacce
Programmazione e Laboratorio di Programmazione
Corso di Laurea in Ingegneria Informatica
Alessandro Brunengo Mirko Corosu INFN - Sezione di Genova
Programmazione e Laboratorio di Programmazione
© 2007 SEI-Società Editrice Internazionale, Apogeo
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
© 2007 SEI-Società Editrice Internazionale, Apogeo
Programmazione e Laboratorio di Programmazione
Processi e thread in Windows 2000
File System ed Input/Output
APPUNTI SUL LINGUAGGIO C
LINUX: struttura generale
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
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
File system Casi di studio (3).
Programmazione Procedurale
Programmazione Procedurale
Transcript della presentazione:

1 © F. Pedullà, M. VerolaAA Introduzione alle system call LSO1 Modulo 4: Sezione A Introduzione alle system call Laboratorio di Sistemi Operativi I Anno Accademico Francesco Pedullà (Tecnologie Informatiche) Massimo Verola (Informatica) Modulo 4: Sezione A Introduzione alle system call Laboratorio di Sistemi Operativi I Anno Accademico Francesco Pedullà (Tecnologie Informatiche) Massimo Verola (Informatica) Copyright © Francesco Pedullà, Massimo Verola Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license can be found at:

2 © F. Pedullà, M. VerolaAA Introduzione alle system call LSO1 La programmazione di sistema Il kernel è la parte del sistema operativo che gestisce le risorse HW (memoria, dischi, canali di I/O) e ne arbitra e coordina l'utilizzo tra le varie applicazioni e i vari utenti Il codice del kernel è sempre residente in memoria Il kernel mette a disposizione del programmatore una serie di funzioni chiamate system call (possono essere considerate le primitive del sistema operativo) L'insieme delle system call costituisce l'interfaccia del kernel verso il programmatore (API=Application Programming Interface) La programmazione di sistema consiste nell’utilizzare le system calls del kernel

3 © F. Pedullà, M. VerolaAA Introduzione alle system call LSO1 Le system call Tutti i programmi che girano sotto Linux in ultima analisi fanno uso di tale interfaccia; anche le librerie di sistema si appoggiano sulle system call. In Linux (kernel 2.6) sono circa 280 (/usr/include/asm/unistd.h) Spesso ad una system call corrisponde (a più alto livello) una funzione di libreria standard C (e.g.: open → fopen ) L'invocazione della system call segue la sintassi di chiamata di una normale funzione C Ogni system call ha un prototipo, definito negli include file di sistema (nella directory /usr/include e sue subdirectory): ad esempio pid_t fork(void); Alcune system call possono essere invocate con successo soltanto se il processo chiamante gira con i privilegi dell'utenza root Nota: utilizzare man nome_system_call per visualizzare il prototipo della system call e gli include file necessari

4 © F. Pedullà, M. VerolaAA Introduzione alle system call LSO1 La libreria standard C La libreria standard del C (libc) contiene funzioni di utilità che forniscono servizi general purpose al programmatore Queste funzioni NON sono chiamate dirette a servizi del kernel, sebbene alcune di esse possono fare uso delle system call per realizzare i propri servizi Le funzioni di libreria standard C risiedono generalmente in una libreria dinamica Esempi: la funzione fopen invoca la system call open per accedere ad un file invece la funzione strcpy (string copy) e la funzione atoi (convert ASCII to integer) non coinvolgono alcuna system call

5 © F. Pedullà, M. VerolaAA Introduzione alle system call LSO1 Systema call vs funzione di libreria (I) Distinzione: Dal punto di vista del programmatore, non vi sono grosse distinzioni fra le funzioni di libreria e le system call: entrambe sono funzioni Dal punto di vista di chi implementa un sistema operativo, la differenza è notevole Nota: In generale è possibile sostituire le funzioni di libreria con altre funzioni che realizzino lo stesso compito, magari in modo diverso (ad esempio potremmo riscrivere una funzione tipo atoi ) Mentre non è possibile sostituire le system call, che dipendono dal sistema operativo e sono eseguite da codice all'interno del kernel

6 © F. Pedullà, M. VerolaAA Introduzione alle system call LSO1 System call vs funzione di libreria (II) C library function application code system call kernel kernel space

7 © F. Pedullà, M. VerolaAA Introduzione alle system call LSO1 Cause di errore nelle system call Le system call possono fallire per vari motivi: Il sistema ha esaurito la disponibilità di una certa risorsa (o la richiesta ha superato il limite consentito per singolo processo) Il kernel blocca l'esecuzione in quanto il processo non ha i permessi per richiedere l'esecuzione di una certa operazione Gli argomenti passati ad una system call non sono validi Un dispositivo HW non è funzionante o è mancante Una interruzione (interrupt) causata da un evento esterno, come la ricezione di un segnale, fa terminare prematuramente la system call Per tutti questi motivi è importante sempre rilevare e, se necessario, gestire un eventuale errore di ritorno dalla system call

8 © F. Pedullà, M. VerolaAA Introduzione alle system call LSO1 Codici di errore delle system call La maggior parte delle system call restituisce il valore -1 in caso di errore (0 in caso di successo) ed assegna un codice di errore più specifico alla variabile globale: extern int errno ; Nota: se la system call ha successo, errno non viene resettato L'include file errno.h contiene la definizione dei nomi simbolici dei codici di errore: #define EPERM1/* Operation not permitted */ #define ENOENT2/* No such file or directory */ #define ESRCH3/* No such process */ #define EINTR4/* Interrupted system call */ #define EIO5/* I/O error */ #define ENXIO6/* No such device or address */

9 © F. Pedullà, M. VerolaAA Introduzione alle system call LSO1 L'azione da programmare in risposta ad un errore può consistere in una o più delle seguenti possibilità: visualizzazione del messaggio di errore cancellazione della procedura in corso terminazione del programma tentativo di nuova esecuzione della system call ignorare l'errore e proseguire La funzione perror può essere utilizzata per visualizzare una descrizione dell'ultimo errore verificatosi void perror(const char *str) converte il codice in errno in un messaggio, e lo stampa anteponendogli il messaggio di errore str Esempio: fd=open("nonexist.txt", O_RDONLY); if (fd==-1) perror ("main"); --> main: No such file or directory Gestione dell'errore

10 © F. Pedullà, M. VerolaAA Introduzione alle system call LSO1 Esistono vari tipi di system call relative a: controllo di processi gestione della memoria gestione dei file e dei file system segnali comunicazione tra processi (IPC=Inter Process Communication) networking In questo corso studieremo in modo completo i primi 4 gruppi di system call e alcuni meccanismi base di IPC NOTA: man 2 intro e man 2 syscalls danno alcune informazioni sulle system calls disponibili sotto Linux. Tipi di system call

11 © F. Pedullà, M. VerolaAA Introduzione alle system call LSO1 Standardizzazione delle system call Al fine di facilitare il porting di applicazioni tra sistemi operativi differenti si è definito uno standard di riferimento per le system call che un kernel dovrebbe offrire al programmatore POSIX (Portable Operating System Interface) è una famiglia di standard sviluppato dall’IEEE: IEEE (POSIX.1) Definizione delle system call IEEE (POSIX.2) Shell e utility IEEE (POSIX.7) System administration