Le syscall in Minix. Sistemi Operativi Lez. 27. Corso: Sistemi Operativi Danilo Bruschi A.A. 2010/2011
|
|
- Pio Gasparini
- 6 anni fa
- Visualizzazioni
Transcript
1 Le syscall in Minix Sistemi Operativi Lez. 27
2 System Call Interfaccia tra le applicazioni ed il sistema operativo, per lo svolgimento di operazioni che coinvolgono dispositivi o strutture di memoria gestite dal sistema operativo Rendono la programmazione più semplice Incrementano la sicurezza del sistema Facilitano la portabilità del codice
3 Posix (Portable Operating system Interface) Standard che definisce l interfaccia utente e software verso applicazioni del sistema operativo Kernel API Comandi e utility L aderenza allo standard Posix è spesso garantita da librerie C che provvedono poi alla effettiva chiamata della syscall POSIX compliant = un sistema che offre le API di Posix
4 Architettura di un SO: minix
5 Organizzazione generale Ogni syscall è contraddistinta da un numero (definito in /usr/include/minix/callnr.h) Questo numero è inserito in un opportuno campo del messaggio che sarà inviato al server
6 Syscall nr.
7 Syscall lato server Ricevuta la richiesta d esecuzione della systema call dall applicazione ogni server ispeziona la struttura dati call_vec per decidere le attività da fare Ogni server dispone di un suo handler specifico per gestire ogni singola system call, questi handler hanno un nome del tipo do_nome syscall ad esempio do_fork
8 Struttura call_vec _PROTOTYPE (int (*call_vec[ncalls]), (void) ) = {! no_sys, /* 0 = unused */! do_pm_exit, /* 1 = exit */! do_fork, /* 2 = fork */! no_sys, /* 3 = read */! no_sys, /* 4 = write */! no_sys, /* 5 = open */! no_sys, /* 6 = close */! do_waitpid, /* 7 = wait */! no_sys, /* 8 = creat */! no_sys, /* 9 = link */! no_sys, /* 10 = unlink */! do_waitpid, /* 11 = waitpid */! no_sys, /* 12 = chdir */! do_time, /* 13 = time */!
9 Struttura generale di un server while( TRUE )! {! get_work(); /* wait for an MM!!!!!!!!!system call */!!!!...! result = (*call_vec [call_nr]) ();! reply(...);! }!
10 get_work () PRIVATE void get_work()! {! /* Wait for the next message and extract useful information from it. */! if (receive(any, &m_in)!= OK)! panic( FILE,"PM receive error", NO_NUM);! who_e = m_in.m_source;/* who sent the message */! if(pm_isokendpt(who_e, &who_p)!= OK)! panic( FILE, "PM got message from invalid endpoint", who_e);! call_nr = m_in.m_type; /* system call number */!
11 Kernel call Il system call handler del server, dopo lo svolgimento di una serie di operazioni determinate dal tipo di system call da gestire provvede a chiamare la kernel call di riferimento attraverso una sendrec a sys_task All interno del codice della kernel call si troverà la chiamata all handler effettivo della system call originale, il cui nome segue le convenzioni già usate per i server
12 Kernel call
13 Overview of System Task (2)
14
15 sys_task
16 Syscall handler PUBLIC int (*call_vec[nr_sys_calls])(message *m_ptr);!! #define map(call_nr, handler) \! {extern int dummy[nr_sys_calls>(unsigned) (call_nr-kernel_call)? 1:-1];} \!! call_vec[(call_nr-kernel_call)] = (handler)!
17 ESECUZIONE DELLA SYSCALL FORK()
18 Descrizione generale 1. L applicazione invia un messaggio FORK al memory manager richiedendo la creazione di un nuovo processo 2. Il memory manager alloca la memoria per il nuovo processo ed informa il system task del nuovo processo inviando un messaggio SYS_FORK 3. Il memory manager informa il file system della creazione del nuovo processo inviandogli un messaggio FORK 4. Al termine della creazione del processo il memory manager invia due messaggi di reply: 1. Al genitore con il PID del figlio 2. Al figlio con valore di ritorno 0 reply message to the parent (e) with a return
19 Schema fork() Interation Networks, by P. Ahton et al.
20 Esecuzione fork() if (fork()!= 0) Viene tradotta dal compilatore in una chiamata alla procedura di libreria lib/syscall/ fork.s (nel caso di eventuali parametri, gli stessi saranno passati via stack)
21 Lib sys/src/lib/syscall/fork.s:.sect.text.extern fork.define _fork.align 2 _fork: jmp fork Che a sua volta richiama la procedura fork(), che è definita nel file sys/src/lib/posix/fork.c
22 libc sys/src/lib/posix/fork.c #include < lib.h> #define fork _fork #include < unistd.h> PUBLIC pid_t fork() message m; return(_syscall(pm, FORK, &m)); Che richiama la funzione _syscall, indicando come destinatario dell attività richiesta il processo PM
23 _syscall #include < lib.h> PUBLIC int _syscall(who, syscallnr, msgptr) int who; int syscallnr; register message *msgptr; int status; msgptr->m_type = syscallnr; status = _sendrec(who, msgptr); if (status!= 0) { /* 'sendrec' itself failed. */ /* XXX - strerror doesn't know all the codes */ msgptr->m_type = status; } if (msgptr->m_type < 0) { errno = -msgptr->m_type; return(-1); } return(msgptr->m_type);
24 _sendrec /sys/src/lib/i386/rts/_sendrec.c sendrec: push ebp mov ebp, esp push ebx mov eax, SRCDEST(ebp) mov ebx, MESSAGE(ebp) mov ecx, BOTH int SYSVEC pop ebx pop ebp ret! eax = dest-src! ebx = message pointer! _sendrec(srcdest, ptr)! trap to the kernel
25 _sendrec lib/i386/rts/ _sendrec sect.text;.sect.rom;.sect.data;.sect.bss 301.define send, receive, sendrec 302! See../h/com.h for C definitions 303 SEND = RECEIVE = BOTH = SYSVEC = SRCDEST = MESSAGE = 12
26 _s_call: _p_s_call: cld! set direction flag to a known value sub esp, 6*4! skip RETADR, eax, ecx, edx, ebx, est push ebp! stack already points into proc table push esi push edi o16 push ds o16 push es o16 push fs o16 push gs mov dx, ss mov ds, dx mov es, dx incb (_k_reenter) mov esi, esp! assumes P_STACKBASE == 0 mov esp, k_stktop xor ebp, ebp! for stacktrace! end of inline save! now set up parameters for sys_call() push ebx! pointer to user message push eax! src/dest push ecx! SEND/RECEIVE/BOTH call _sys_call! sys_call(function, src_dest, m_ptr)
27
28
29 minisend Prepara il messaggio per PM, che prima o poi lo preleverà attraverso una receive Nel file include/minix/callnr.h, alla fork() è assegnato il numero 2 : #define FORK 2 Nel file pm/table.c, la struttura dati call_vec associa alla syscall fork() la procedura: do_fork, /* 2 = fork */
30 PM main.c 0047 /*====================================================================*! * main *! 00049*=====================================================================*/! PUBLIC int main()! {! /* Main routine of the process manager. */! int result, s, proc_nr;! struct mproc *rmp;! sigset_t sigset;! 00056! pm_init(); /* initialize process manager tables */! 00058! /* This is PM's main loop- get work and do it, forever and forever. */! while (TRUE) {! get_work(); /* wait for an PM system call */! 00062!
31 mproc EXTERN struct mproc {!! struct mem_map mp_seg[nr_local_segs]; /* points to text, data, stack */! char mp_exitstatus; /* storage for status when process exits */! char mp_sigstatus; /* storage for signal # for killed procs */! pid_t mp_pid; /* process id */! int mp_endpoint; /* kernel endpoint id */! pid_t mp_procgrp; /* pid of process group (used for signals) */! pid_t mp_wpid; /* pid this process is waiting for */! int mp_parent; /* index of parent process */! 00021!! /* Child user and system times. Accounting done on child exit. */! clock_t mp_child_utime; /* cumulative user time of children */! clock_t mp_child_stime; /* cumulative sys time of children */! 00025!! /* Real and effective uids and gids. */! uid_t mp_realuid; /* process' real uid */! uid_t mp_effuid; /* process' effective uid */! gid_t mp_realgid; /* process' real gid */! gid_t mp_effgid; /* process' effective gid */!
32 mproc /* File identification for sharing. */! ino_t mp_ino; /* inode number of file */! dev_t mp_dev; /* device number of file system */! time_t mp_ctime; /* inode changed time */! 00036! /* Signal handling information. */! sigset_t mp_ignore; sigset_t mp_catch; /* 1 means ignore the signal, 0 means don't */! /* 1 means catch the signal, 0 means don't */! sigset_t mp_sig2mess; /* 1 means transform into notify message */! sigset_t mp_sigmask; /* signals to be blocked */! sigset_t mp_sigmask2; /* saved copy of mp_sigmask */! sigset_t mp_sigpending; /* pending signals to be handled */! struct sigaction mp_sigact[_nsig + 1]; /* as in sigaction(2) */! vir_bytes mp_sigreturn; /* address of C library sigreturn function */! struct timer mp_timer; /* watchdog timer for alarm(2) */! 00047! /* Backwards compatibility for signals. */! sighandler_t mp_func; /* all sigs vectored to a single user fcn */! 00050! unsigned mp_flags; /* flag bits */! vir_bytes mp_procargs; /* ptr to proc's initial stack arguments */! struct mproc *mp_swapq; /* queue of procs waiting to be swapped in */! message mp_reply; /* reply message to be sent to one */! 00055! /* Scheduling priority. */! signed int mp_nice; /* nice is PRIO_MIN..PRIO_MAX, standard 0. */! 00058! char mp_name[proc_name_len]; /* process name */! } mproc[nr_procs];!
33 priv
34 pm/do_fork() Legge in input il valore di mp che punta al PCB (contenuto in PM) del processo che ha eseguito la fork() Verifica se ci sono posizioni libere nella tabella dei processi mproc! Determina la quantità di memoria necessaria per la generazione del processo figlio (vanno replicati solo segmento Stack e dati) Copia il PCB del padre nella posizione libera di mproc! Assegna al processo figlio un nuovo Pid! Invia messaggi a systask e FS
35 Pm/do_fork /*======================================================================*! * do_fork *! *=====================================================================*/! PUBLIC int do_fork()! {! /* The process pointed to by 'mp' has forked. Create a child process. */! register struct mproc *rmp; register struct mproc *rmc; /* pointer to parent */! /* pointer to child */! int child_nr, s;! phys_clicks prog_clicks, child_base;! phys_bytes prog_bytes, parent_abs, child_abs; /* Intel only */! pid_t new_pid;! static int next_child;! int n = 0, r;!
36 Caricamento PCB figlio do {! next_child = (next_child+1) % NR_PROCS;! n++;! } while((mproc[next_child].mp_flags & IN_USE) && n <= NR_PROCS);! if(n > NR_PROCS)! 00078! panic( FILE,"do_fork finds wrong child slot", next_child);! 00082! rmc = &mproc[next_child];! /* Set up the child and its memory map; copy its 'mproc' slot from parent. */! child_nr = (int)(rmc - mproc); /* slot number of the child */! procs_in_use++;! *rmc = *rmp; /* copy parent's process slot to child's */! rmc->mp_parent = who_p; /* record child's parent */! /* inherit only these flags */! rmc->mp_flags &= (IN_USE SEPARATE PRIV_PROC DONT_SWAP);! rmc->mp_child_utime = 0 /* reset administration */! rmc->mp_child_stime = 0; /* reset administration */
37 Messaggi a sys_task e FS /* Tell kernel and file system about the (now successful) FORK. */! if(! (r=sys_fork(who_e, child_nr, &rmc->mp_endpoint))!= OK)!! {! panic( FILE,"do_fork can't sys_fork", r);! }!! tell_fs(fork, who_e, rmc->mp_endpoint, rmc->mp_pid);!
38 sys_fork() #include "syslib.h"! 00002! PUBLIC int sys_fork(parent, child, child_endpoint)! int parent; /* process doing the fork */! int child; /* which proc has been created by the fork */! int *child_endpoint;! {! /* A process has forked. Tell the kernel. */! 00009! message m;! int r;! 00012! m.pr_endpt = parent;! m.pr_slot = child;! r = _taskcall(systask, SYS_FORK, &m);! *child_endpoint = m.pr_endpt;! return r;! }!
39 sys/src/lib/syslib/taskcall.c: _taskcall #include < lib.h> #include < minix/syslib.h> PUBLIC int _taskcall(who, syscallnr, msgptr) int who; int syscallnr; register message *msgptr; int status; msgptr->m_type = syscallnr; status = _sendrec(who, msgptr); if (status!= 0) return(status); return(msgptr->m_type);
40 sys_task /*==========================================================================*! 0006* sys_task *! *========================================================================*/! PUBLIC void sys_task()! {! /* Main entry point of sys_task. Get the message and dispatch on type. */! static message m;! register int result;! register struct proc *caller_ptr;! unsigned int call_nr;! int s;! 00070! /* Initialize the system task. */! initialize();! 00073! while (TRUE) {! /* Get work. Block and wait until a request message arrives. */! receive(any, &m);! call_nr = (unsigned) m.m_type - KERNEL_CALL;! who_e = m.m_source;! okendpt(who_e, &who_p);! caller_ptr = proc_addr(who_p);!
41 system task }! else {! result = (*call_vec[call_nr])(&m); /* handle the system call */! }! 00097! /* Send a reply, unless inhibited by a handler function. Use the kernel! * function lock_send() to prevent a system call trap. The destination! * is known to be blocked waiting for a message.! */! if (result!= EDONTREPLY) {! m.m_type = result; /* report status of call */! if (OK!= (s=lock_send(m.m_source, &m))) {! kprintf("system, reply to %d failed: %d\n", m.m_source, s);! }! }!
42 do_fork /*=========================================================================*! * do_fork *! *========================================================================*/! PUBLIC int do_fork(m_ptr)! register message *m_ptr; /* pointer to request message */! {! /* Handle sys_fork(). PR_ENDPT has forked. The child is PR_SLOT. */! register struct proc *rpc; /* child process pointer */! struct proc *rpp; /* parent process pointer */! int i, gen;! int p_proc;! ! old_ldt_sel = rpc->p_ldt_sel; /* backup local descriptors */! 44 *rpc = *rpp; /* copy 'proc' struct */! 45.!
43 do-fork rpc->p_rts_flags = NO_MAP; /* inhibit process from running */! rpc->p_rts_flags &= ~(SIGNALED SIG_PENDING P_STOP);! sigemptyset(&rpc->p_pending);! 00058! rpc->p_reg.retreg = 0; /* child sees pid = 0 to know it is child */! rpc->p_user_time = 0; /* set all the accounting times to 0 */! rpc->p_sys_time = 0;! 00062! /* Parent and child have to share the quantum that the forked process had,! * so that queued processes do not have to wait longer because of the fork.! * If the time left is odd, the child gets an extra tick.! */! rpc->p_ticks_left = (rpc->p_ticks_left + 1) / 2;! rpp->p_ticks_left = rpp->p_ticks_left / 2;!
44 e alla fine do_fork restituisce il controllo a: sys_task, che invia una send a taskcall, che terminando restituisce il controllo a sys_fork che terminando rientra su: pm/do_fork che invia una reply al processo figlio, per rientrare poi su: PM (main.c) che provvede ad inviare una reply all applicazione che ha originariamente richiesto la fork
Sistemi Operativi. Bruschi Martignoni Monga. Send/Receive mini send Enqueue e dequeue mini receive mini notify. System call in MINIX
1 Mattia Lezione XIX: Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it a.a. 2008/09 1 c 2009 M.. Creative Commons Attribuzione-Condividi allo stesso modo
DettagliSistemi Operativi 1. Mattia Monga. a.a. 2008/09. Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia
1 Mattia Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it a.a. 2008/09 1 c 2009 M.. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia
DettagliMessaggi in Minix. Sistemi operativi Lez. 10. Corso: Sistemi Operativi Danilo Bruschi A.A. 2006/2007
Messaggi in Minix Sistemi operativi Lez. 10 1 Comunicare in Minix I processi in Minix comunicano tra di loro attraverso scambio di messaggi I processi possono comunicare solo con processi al proprio livello
DettagliIPC in Minix. Sistemi operativi Lez. 17-18. Corso: Sistemi Operativi Danilo Bruschi A.A. 2009/2010
IPC in Minix Sistemi operativi Lez. 17-18 1 Comunicare in Minix I processi in Minix comunicano tra di loro attraverso scambio di messaggi I processi possono comunicare solo con processi al proprio livello
DettagliLa gestione dei processi in Minix
La gestione dei processi in Minix Sistemi Operativi Lez. 28 Scheduling Round robin su 16 code di priorità Quando un processo viene bloccato senza aver esaurito il suo quanto di tempo, una volta risvegliato,
DettagliSistemi Operativi. Bruschi Martignoni Monga. La gestione. MINIX Architettura I device driver Block device. Memory driver Implementazione
1 Mattia Lezione XXVII: Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it a.a. 2008/09 1 c 2009 M.. Creative Commons Attribuzione-Condividi allo stesso
DettagliSistemi Operativi 1. Mattia Monga. 11 aprile Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia
1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it delle 11 aprile 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5
DettagliSystem Calls per la Gestione dei Processi
System Calls per la Gestione dei Processi Domenico Cotroneo Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli Federico II Roadmap Process Context Identificativi getpid() getppid()
Dettagli1 Modifiche al kernel di MINIX 3.1.2a
1 Modifiche al kernel di MINIX 3.1.2a 1.1 Aggiunta di una chiamata di sistema L obiettivo è aggiungere una chiamata di sistema foo gestita dal server di MINIX, cioè il processo identificato dalla macro
DettagliLaboratorio di Sistemi Operativi Marzo-Giugno 2008 matricole congrue 0 mod 3
Marzo-Giugno 2008 matricole congrue 0 mod 3 Controllo dei processi - I Controllo dei processi Creazione di nuovi processi Esecuzione di programmi Processo di terminazione Altro 2 1 Identificatori di processi
DettagliChiamate di sistema per la Gestione dei processi in POSIX. E.Mumolo, DEEI mumolo@units.it
Chiamate di sistema per la Gestione dei processi in POSIX E.Mumolo, DEEI mumolo@units.it Process id ed altri identificatori pid_t getpid(); // Process id del processo chiamante pid_t getppid(); // Process
DettagliI Processi nel Sistema Operativo Unix. Gerarchie di processi Unix. Stati di un processo Unix. Stati di un processo Unix.
I Processi nel Sistema Operativo Unix Processi Unix Unix è un sistema operativo multiprogrammato a divisione di tempo: l unità di computazione è il processo. Caratteristiche del processo Unix: processo
DettagliLaboratorio di Sistemi Operativi Marzo-Giugno 2008 Matricole congrue 0 modulo 3
Marzo-Giugno 2008 Matricole congrue 0 modulo 3 Segnali: Interrupt software per la gestione di eventi asincroni Concetto di segnale Un segnale è un interrupt software Un segnale può essere generato da un
DettagliComputazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2
Computazione multi-processo Avere più processi allo stesso momento implica/richiede Processi e Threads Pt. 2 Concorrenza ed efficienza Indipendenza e protezione dei dati ma deve prevedere/permettere anche:
DettagliSistemi Operativi. Esercitazione 2 Compilazione, Makefile e Processi
Sistemi Operativi Esercitazione 2 Compilazione, Makefile e Processi Percorso Compilazione programmi in c Makefiles Processi definizione gestione creazione Compilazione di programmi in C Compilazione e
DettagliLaboratorio di Sistemi Operativi
Laboratorio di Sistemi Operativi LAB2 Installazione Linux e relativi ambienti di lavoro 2002/2003 Pagani - Trentini Slide 1 Agenda Panoramica e storia di Linux Installazione Linux Installazione strumenti
DettagliAssembly. Modello x86
Assembly Modello x86 1 Il microprocessore Un MICROPROCESSORE è un circuito integrato dotato di una struttura circuitale in grado di attuare un prefissato SET di ISTRUZIONI 2 Caratteristiche del microprocessore
DettagliCapitolo 5 - Funzioni
Capitolo 5 - Funzioni Divide and conquer Introduzione Costruire un programma da pezzi più piccoli o da singole componenti Questi pezzi più piccoli sono chiamati moduli Ogni singolo pezzo è più facilmente
DettagliSystem call per la gestione di processi
System call per la gestione di processi Chiamate di sistema per creazione di processi: fork() sostituzione di codice e dati: exec...() terminazione: exit() sospensione in attesa della terminazione di figli:
DettagliDirectory. Le directory unix sono file.
Le directory unix sono file. Directory Molte system call per i file ordinari possono essere utilizzate per le directory. E.g. open, read, fstat, close. Tuttavia le directory non possono essere create con
DettagliSistemi Operativi. Lezione 3 I Processi
Sistemi Operativi Lezione 3 I Processi Processi Con il termine processo si denota l esecuzione di un programma (sequenza di istruzioni) nell ambito di un determinato ambiente esecutivo caratterizzato da:
DettagliPOSIX - Gestione dei Segnali. E.Mumolo, DEEI mumolo@units.it
POSIX - Gestione dei Segnali E.Mumolo, DEEI mumolo@units.it Segnali in POSIX Segnali in Posix Modalità di notifiche relative a vari eventi asincroni I signal interrompono un processo e possono o meno essere
DettagliSistemi Operativi 1. Mattia Monga. 11 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia
1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it e 11 marzo 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia
DettagliHardware di un Computer
Hardware di un Computer Monitor Mouse Tastiera Printer Disk CPU Graphics Adapter USB Controller Parallel Port Disk Controller BUS Memoria RAM Memoria ROM (BIOS) DMA CPU esegue istruzioni, effettua calcoli,
DettagliBlocchi funzione: FbModbusAsciiMs
Pagina 1 di 6 ELSIST Srl, www.elsist.it Blocchi funzione MNL041Q000 FbModbusAsciiMs Questo blocco funzione permette lo scambio di dati tra due sistemi, uno master ed uno slave, utilizzando una connessione
DettagliIl sistema operativo LINUX Indice
Il sistema operativo LINUX Giorgio Di Natale Stefano Di Carlo Politecnico di Torino Dip. Automatica e Informatica Processo Un processo è un programma in esecuzione:
DettagliModello dei processi. Riedizione delle slide della Prof. Di Stefano
Modello dei processi Riedizione delle slide della Prof. Di Stefano 1 Processi Modello di Processi asincroni comunicanti Process Scheduling Operazioni sui Processi Cooperazione tra Processi Interprocess
DettagliI processi: concetti di base, context switch e scheduling
Corso di laurea in Ingegneria dell Informazione Indirizzo Informatica Reti e sistemi operativi I processi: concetti di base, context switch e scheduling Processo: definizione Processo (o Job): Entità attiva
DettagliCapitolo 3 -- Silberschatz
Processi Capitolo 3 -- Silberschatz Concetto di processo Un SO esegue una varietà di attività: Sistemi batch job Sistemi time-sharing programmi utenti o task Nel libro i termini job e processo sono usati
DettagliSISTEMI OPERATIVI. I processi. Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) (MODULO DI INFORMATICA II)
SISTEMI OPERATIVI (MODULO DI INFORMATICA II) I processi Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) Università degli Studi di Bergamo a.a. 2012-13 Sommario Il concetto di processo
DettagliIntroduzione al Multithreading
Introduzione al Multithreading Claudia Calidonna Istituto di di Cibernetica C.N.R. Argomenti principali Parleremo di : Processi & Threads Operazioni sui threads ed eventuali confronti tra operazioni sui
DettagliProcessi - II. Franco Maria Nardini
Processi - II Franco Maria Nardini Processi Programmi in esecuzione in memoria sono chiamati processi. Caricati in memoria da una delle sei funzioni exec(3). Ogni processo ha un identificatore univoco
DettagliComponenti di un sistema operativo
Componenti di un sistema operativo Dipartimento di Informatica Università di Verona, Italy Componenti di un S.O. Gestione dei processi Gestione della memoria primaria Gestione della memoria secondaria
DettagliI Processi nel SO UNIX
I Processi nel SO UNIX 1 Processi UNIX UNIX è un sistema operativo multiprogrammato a divisione di tempo: unità di computazione è il processo Caratteristiche del processo UNIX: processo pesante con codice
DettagliControllo dei Processi. M. R. Guarracino - Primitive di Controllo dei Processi
Controllo dei Processi Introduzione Come possiamo creare nuovi processi? Come possiamo eseguire un programma? Come possiamo terminare un processo? Introduzione Unix fornisce le primitive per la creazione
DettagliA.A. 2006/2007 Laurea di Ingegneria Informatica. Fondamenti di C++ Horstmann Capitolo 3: Oggetti Revisione Prof. M. Angelaccio
A.A. 2006/2007 Laurea di Ingegneria Informatica Fondamenti di C++ Horstmann Capitolo 3: Oggetti Revisione Prof. M. Angelaccio Obbiettivi Acquisire familiarità con la nozione di oggetto Apprendere le proprietà
DettagliSystem Call per la gestione dei semafori in Linux. Semafori: modello concettuale. Creazione ed inizializzazione di un semaforo
System Call per la gestione dei semafori in Linux Domenico Cotroneo Dipartimento di Informatica e Sistemistica Semafori: modello concettuale Processore D C B (sq)coda proc.sospesi s.count=1 semaforo A
DettagliACSO Programmazione di Sistema e Concorrente
ACSO Programmazione di Sistema e Concorrente P2 Modello Thread 2/12/2015 programma e parallelismo il tipo di parallelismo dipende dal grado di cooperazione (scambio di informazione) necessario tra attività
DettagliIn generale può essere utile che i due processi eseguano del codice diverso
System call FORK P fork() ha l aspetto di una funzione C, in realtà è una system call, una chiamata al sistema operativo fork() P P Il processo P' è una copia di P esegue lo stesso codice e possiede una
DettagliProgrammazione multiprocesso
DTI / ISIN / Titolo principale della presentazione 1 Programmazione multiprocesso Amos Brocco, Ricercatore, DTI / ISIN 20 febbraio 2012 2 Processi Cos'è un processo? Un programma in esecuzione Spazio di
DettagliFunzioni di libreria. user programs libraries. process control subsystem. character block device drivers. system call interface.
1 Funzioni di libreria user Level kernel Level trap user programs libraries system call interface file subsystem buffer cache character block device drivers process control subsystem hardware control inter-process
DettagliQuinta Esercitazione. Principali primitive di accesso ai File
Esempio: processi padre e figlio condividono di file aperti PRIMA della creazione Quinta Esercitazione Gestione File-System Segnali processo padre fork() Sistema tabella dei file attivi i-node Eugenio
DettagliSistemi Operativi Anno Accademico 2011/2012. Segnali: Interrupt software per la gestione di eventi asincroni
Anno Accademico 2011/2012 Segnali: Interrupt software per la gestione di eventi asincroni Concetto di segnale Un segnale è un interrupt software Un segnale può essere generato da un processo utente o dal
DettagliProgrammazione di sistema in Linux: System Call per i Segnali. E. Mumolo
Programmazione di sistema in Linux: System Call per i Segnali E. Mumolo Eventi asincroni: segnali I segnali permettono la gestione di eventi asincroni che interrompono il normale funzionamento di un processo
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 20 Giovedì 22-12-2016 Comunicazione: pipe In Unix, processi possono comunicare
DettagliRelazione tra thread e processi
I Thread POSIX Relazione tra modello a processi e a thread Creazione di un thread Attesa Distacco Terminazione Ricerca e confronto Inizializzazione dinamica Relazione tra thread e processi Nel modello
DettagliAXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema
AXO Architetture dei Calcolatori e Sistema Operativo programmazione di sistema Il sistema operativo Il Sistema Operativo è un insieme di programmi (moduli software) che svolgono funzioni di servizio nel
DettagliConcetto di processo. Processi. Immagine in memoria di un processo. Stati di un processo. Un SO esegue una varietà di attività:
Impossibile visualizzare l'immagine. Processi Concetto di processo Un SO esegue una varietà di attività: Sistemi batch job Sistemi time-sharing programmi utenti o task Nel libro i termini job e processo
DettagliAntifork Research, Inc. HACKERS RESEARCH VIRTUAL LAB. Shellcode Advanced. Angelo Dell'Aera <buffer@antifork.org> Security Date 2004 Ancona 29/04/2004
Antifork Research, Inc. HACKERS RESEARCH VIRTUAL LAB Shellcode Advanced Angelo Dell'Aera Security Date 2004 Ancona 29/04/2004 Esplorare mondi nuovi... In questa presentrazione analizzeremo
Dettagli2. Nucleo del sistema operativo (la gestione dei processi)
Architettura del sistema operativo Struttura interna del sistema operativo Linux shell Programmi utente Modo utente 2. Nucleo del sistema operativo (la gestione dei processi) - 31 marzo 2008 - Interfaccia
DettagliProcessi e Sincronizzazione. Laboratorio Software 2008-2009 C. Brandolese M. Grotto
Processi e Sincronizzazione C. Brandolese M. Grotto Sommario 1. Processi Concetti fondamentali Stati in GNU/Linux 2. Creazione Descrizione Creazione con system() Creazione con fork() Effetto di fork()
DettagliAssembler di Spim. Assembler di SPIM. Struttura di un programma assembler. Direttive
Assembler di Spim Assembler di SPIM Il programma è organizzato in linee Ogni linea può contenere un commento che parte dal carattere # e si estende fino alla fine della linea Ogni linea che non sia bianca
DettagliFamiglia dei processori INTEL
Famiglia dei processori INTEL 1975 2002 8080-8086 - 80286-80386 - 80486 - Pentium - Pentium II-III-IV - Itanium Compatibilità del SW (assemby) 8086 80286 80386 80486 Pentium Pentium III Perché studiare
DettagliCorso di Programmazione Concorrente Processi. Valter Crescenzi
Corso di Programmazione Concorrente Processi Valter Crescenzi http://crescenzi.inf.uniroma3.it Sommario Processi vs Thread Creazione e terminazione di processi chiamata di sistema fork() chiamata di sistema
Dettagli2. Nucleo del sistema operativo (la gestione dei processi)
Struttura interna del sistema operativo Linux 2. Nucleo del sistema operativo (la gestione dei processi) Architettura (struttura) del sistema operativo shell Programmi utente Modo utente Interfaccia delle
DettagliIntroduzione agli interrupt
Corso di laurea in Ingegneria dell Informazione Indirizzo Informatica Reti e sistemi operativi Introduzione agli interrupt Le interruzioni (interrupt) I sistemi operativi attuali si basano sugli interrupt
Dettaglieseguire comandi dati dall'utente, utilizzando una macchina reale, di livello inferiore,
La programmazione di sistema Introduzione ai sistemi operativi multiprocesso Primitive per la gestione dei processi http://home.dei.polimi.it/silvano/acso.htm Il sistema ste operativo Il Sistema Operativo
DettagliGESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI
GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI Compiti del sottosistema di I/O Architettura del sottosistema di I/O Gestore di un dispositivo di I/O Gestione e organizzazione dei dischi COMPITI
DettagliEsercizio sulla gestione di file in Unix
Esercizio sulla gestione di file in Unix 1 Esercizio Si vuole realizzare un programma C che, utilizzando le system call di Unix, realizzi uno schema di comunicazione tra due processi (padre e figlio) mediante
DettagliInter Process Communication. Laboratorio Software 2008-2009 C. Brandolese
Inter Process Communication Laboratorio Software 2008-2009 C. Brandolese Introduzione Più processi o thread Concorrono alla relaizzazione di una funzione applicativa Devono poter realizzare Sincronizzazione
DettagliStruttura interna del sistema operativo Linux
Struttura interna del sistema operativo Linux 5. I device driver A cura di: Anna Antola Giuseppe Pozzi DEI, Politecnico di Milano anna.antola/giuseppe.pozzi@polimi.it -versione del 30 marzo 2004-1-04.-04
DettagliCapitolo 2 -- Silberschatz
Struttura dei Sistemi Operativi Capitolo 2 -- Silberschatz Struttura di un sistema operativo Servizi di un sistema operativo Interfaccia Utente Chiamate di sistema Tipi di chiamate Programma di sistema
DettagliSistemi Operativi. Introduzione all architettura IA-32 Lez. 16. Corso: Sistemi Operativi Danilo Bruschi A.A. 2010/2011
Sistemi Operativi Introduzione all architettura IA-32 Lez. 16 1 Microprocessori Intel Nel 1979 Intel introduce la famiglia dei microprocessore 8086 8086, 8087, 8088, e 80186 Processori a 16-bit con registri
DettagliStruttura di un sistema operativo. Struttura dei Sistemi Operativi. Servizi per l utente generico. Servizi per l utente generico
Impossibile visualizzare l'immagine. Struttura di un sistema operativo Struttura dei Sistemi Operativi Servizi di un sistema operativo Interfaccia Utente Capitolo 2 -- Silberschatz Chiamate di sistema
DettagliIntroduzione ai Sistemi Operativi
Introduzione ai Sistemi Operativi Scopo di questa parte del corso e : introdurre i concetti principali dei sistemi operativi, identificare i requisiti hardware necessari alla gestione dei processi e del
DettagliSistemi Operativi. Lezione 13 Il context switch in MINIX. Corso: Sistemi Operativi Danilo Bruschi A.A. 2009/2010
Sistemi Operativi Lezione 13 Il context switch in MINIX Context switch Possiamo ora predisporre una routine per il context switch tra processi, che possiamo supporre sia risvegliata da un interrupt di
DettagliIl sistema operativo LINUX Semafori. Semaforo. Sommario. Sommario. Uso delle pipe. Gestione di semafori tramite pipe. Sistemi operativi Modulo II
Il sistema operativo LINUX Semafori Semaforo Giorgio Di Natale Stefano Di Carlo Politecnico di Torino Dip. Automatica e Informatica Un semaforo è una variabile
Dettagli5. I device driver. Device driver - gestori delle periferiche. Struttura interna del sistema operativo Linux. Tipi di periferiche. Tipi di periferiche
Device driver - gestori delle periferiche Struttura interna del sistema operativo Linux Sono moduli software che realizzano l interfacciamento e la gestione dei dispositivi periferici Interagiscono con
DettagliSincronizzazione tra processi UNIX: i segnali. Sincronizzazione tra processi
Sincronizzazione tra processi UNIX: i segnali Sincronizzazione tra processi Processi interagenti possono avere bisogno di meccanismi di sincronizzazione Ad esempio, abbiamo appena visto il caso di processi
DettagliCapitolo 6 - Array. Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved.
1 Capitolo 6 - Array Array Array Gruppo di locazioni di memoria consecutive Stesso nome e tipo Per riferirsi a un elemento, specificare Nome dell array Posizione Formato: arrayname[ position number ] Primo
DettagliModello della memoria in Unix. Unix: Gestione della Memoria. Gestione della memoria in UNIX - fondamenti. Gestione della memoria in UNIX - storia
Modello della memoria in Unix I processi Unix lavorano su uno spazio di indirizzamento virtuale Es. 0,..., 2 32 1 su indirizzi a 32bit Ogni processo ha uno spazio indirizzi separato per i segmenti text,
DettagliI Processi nel Sistema Operativo Unix
I Processi nel Sistema Operativo Unix Processi Unix Unix è un sistema operativo multiprogrammato a divisione di tempo: l unità di computazione è il processo. Caratteristiche del processo Unix: processo
DettagliLaboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a Docente: H. Muccini
[http://www.di.univaq.it/muccini/labarch] Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a. 2005-2006 Docente: H. Muccini Lecture 15: - Macro - Eccezioni e interruzioni
DettagliSistemi Operativi. Lezione 4 I processi: implementazioni
Lezione 4 I processi: implementazioni UNIX Creazione di un processo Assegna al processo un identificatore univoco Alloca spazio per il processo Inizializza il PCB Predisponi gli opportuni agganci con strutture
DettagliREGISTRATION GUIDE TO RESHELL SOFTWARE
REGISTRATION GUIDE TO RESHELL SOFTWARE INDEX: 1. GENERAL INFORMATION 2. REGISTRATION GUIDE 1. GENERAL INFORMATION This guide contains the correct procedure for entering the software page http://software.roenest.com/
DettagliProcessi. Laboratorio Software 2008-2009 C. Brandolese
Processi Laboratorio Software 2008-2009 Introduzione I calcolatori svolgono operazioni simultaneamente Esempio Compilazione di un programma Invio di un file ad una stampante Visualizzazione di una pagina
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Pietro Frasca Lezione 20 Martedì 16-12-2014 1 System call per la gestione dei processi Creazione
DettagliSistemi Operativi Teledidattico
Sistemi Operativi Teledidattico Anno 2002 3a esercitazione 5/10/2002 Paolo Torroni processi fork (creazione di un figlio) exec (sostituzione di codice del programma in esecuzione) wait (attesa della terminazione
Dettaglistrutturare dati e codice
Puntatori e passaggio parametri strutturare dati e codice Tipo di dati int * Pi ; Op. dereferenziazione j = *Pi ; Op. indirizzo Pi = &i ; By value int f(int i) ; a = f(b) ; By address int f(int * Pi) ;
DettagliCREAZIONE PROCESSI IN UNIX 20
CREAZIONE PROCESSI IN UNIX 20 STRUTTURE DATI PER PROCESSI Un processo puo' essere in escuzione in 2 modi: kernel e utente. Un processo ha almeno 3 regioni: codice, dati e stack Lo stack è allocato dinamicamente.
DettagliInterazione con il DOS e il BIOS
Interazione con il DOS e il BIOS ARGOMENTI PRESENTATI IN QUESTI LUCIDI Routine di BIOS e DOS Due modalità diverse di restituire il controllo al DOS L interazione con le routine del DOS: l interrupt 21H
DettagliAllocazione dinamica della memoria
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Tipi di memoria dati Nella macchina astratta C esistono tre tipi di memoria per allocare
DettagliSincronizzazione tra processi. Sincronizzazione tra processi. segnali. Segnali UNIX
Sincronizzazione tra processi Sincronizzazione tra processi UNIX: i segnali Processi interagenti possono avere bisogno di meccanismi di sincronizzazione Ad esempio, abbiamo appena visto il caso di processi
DettagliProcessi UNIX. I Processi nel SO UNIX. Gerarchie di processi UNIX. Modello di processo in UNIX
Processi UNIX I Processi nel SO UNIX UNIX è un sistema operativo multiprogrammato a divisione di tempo: unità di computazione è il processo Caratteristiche del processo UNIX: processo pesante con codice
DettagliGestione dei Processi
Gestione dei Processi Processo Un sistema operativo esegue una varietà di programmi: Sistemi batch lavori o jobs Sistemi in time-sharing programmi utente o tasks I termini job e process sono usati quasi
DettagliProcessi in Linux. Igino Corona igino.corona@diee.unica.it. 20 Ottobre 2009
Sistemi Operativi Processi in Linux Igino Corona igino.corona@diee.unica.it 20 Ottobre 2009 Contenuti della lezione Come funzionano i programmi in Linux? Schema base di esecuzione di un programma Modalità
DettagliControllo dei Processi 1
Controllo dei Processi 1 I processi Nei sistemi Unix/Linux ogni processo ne può generare altri. Il processo che li genera è detto processo padre (parent process), mentre i processi generati sono detti
DettagliI/O in Minix3. Sistemi Operativi Lez. 15
I/O in Minix3 Sistemi Operativi Lez. 15 Architettura di riferimento Device Driver Per ogni classe di dispositivo di I/O (HD, floppy, RAM disk) esiste un apposito driver che condivide un insieme di routine
DettagliLaboratorio di Sistemi Operativi Marzo-Giugno 2008 matricole congrue 0 mod 3
Marzo-Giugno 2008 matricole congrue 0 mod 3 Funzioni wait e waitpid quando un processo termina il kernel manda al padre il segnale SIGCHLD Controllo dei processi (2) il padre può ignorare il segnale (default)
DettagliI SISTEMI OPERATIVI (1)
I SISTEMI OPERATIVI (1) 1 un computer può essere pensato come una stratificazione di macchine virtuali, ciascuna delle quali mette a disposizione alcuni servizi, che sono utilizzabili mediante chiamate
DettagliSistema di protezione
Sistema di protezione - Un processo potrebbe tentare di modificare il programma o i dati di un altro processo o di parte del S.O. stesso. - Protezione: politiche (cosa) e meccanismi (come) per controllare
DettagliProcessi. Comunicazione tra processi Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino
Processi Comunicazione tra processi Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 Processi independenti e cooperanti I processi concorrenti possono essere Indipendenti Cooperanti
DettagliThread. Thread. Creazione di nuovi processi. Applicazioni reali. La creazione di un nuovo processo costa I tempi di context switch sono elevati
Thread Thread Motivazioni Modelli Multithread Pthread, Threads in Win32, Thread in Java Problematiche relative ai Thread Thread Windows XP Thread Linux Applicazioni reali Creazione di nuovi processi Browser
DettagliI CAMBIAMENTI PROTOTESTO-METATESTO, UN MODELLO CON ESEMPI BASATI SULLA TRADUZIONE DELLA BIBBIA (ITALIAN EDITION) BY BRUNO OSIMO
I CAMBIAMENTI PROTOTESTO-METATESTO, UN MODELLO CON ESEMPI BASATI SULLA TRADUZIONE DELLA BIBBIA (ITALIAN EDITION) BY BRUNO OSIMO READ ONLINE AND DOWNLOAD EBOOK : I CAMBIAMENTI PROTOTESTO-METATESTO, UN MODELLO
DettagliSe vogliamo cambiarlo: i dati vengono sovrascritti. 300 White Jones (vecchio valore) 300 Worthington 0.00
File position pointer File position pointer Indica la posizione da cui leggere/scrivere i prossimi byte Non un puntatore, ma un valore intero (specifica la posizione dall inizio file in termini di numero
DettagliL ambiente di un processo (I)
L ambiente di un processo (I) L ambiente di un processo è un insieme di stringhe (terminate da \0). Un ambiente è rappresentato da un vettore di puntatori a caratteri terminato da un puntatore nullo. Ogni
DettagliCapitolo 7 I puntatori in C
1 Capitolo 7 I puntatori in C 7.2 Dichiarazione e inizializzazione di puntatori Variabili puntatore Contengono gli indirizzi di memoria come valore Le normali variabili contengono uno specifico valore
DettagliComponenti di Sistemi Operativi. System Call Programmi di sistema Componenti di un SO Servizi di SO
Componenti di so 1 Componenti di Sistemi Operativi System Call Programmi di sistema Componenti di un SO Servizi di SO 2 System Call Le system call forniscono l'interfaccia tra running program e SO Generalmente
DettagliSystem calls. permettono ai programmi utente di richiedere servizi al Sistema Operativo. servizi come scrittura di file, stampa su video, ecc.
Le System Calls System calls permettono ai programmi utente di richiedere servizi al Sistema Operativo servizi come scrittura di file, stampa su video, ecc. corrispondenti procedure di libreria GNU C Library
DettagliSistema di protezione (2) Protezione (1)
Sistema di protezione (1) Sistema di protezione (2) Sistema di protezione (3) - Un processo potrebbe tentare di modificare il programma o i dati di un altro processo o di parte del S.O. stesso. - Protezione:
Dettagli