11.04.2013 Visualizzazioni

Processo figlio

Processo figlio

Processo figlio

SHOW MORE
SHOW LESS

Trasformi i suoi PDF in rivista online e aumenti il suo fatturato!

Ottimizzi le sue riviste online per SEO, utilizza backlink potenti e contenuti multimediali per aumentare la sua visibilità e il suo fatturato.

user<br />

mode<br />

running<br />

<br />

kernel<br />

mode<br />

running<br />

exited zombie<br />

preempted<br />

Uscita<br />

ready<br />

sleeping in<br />

memory<br />

new<br />

Ingresso<br />

ready<br />

swapped out<br />

sleeping<br />

swapped out


user<br />

mode<br />

running<br />

<br />

kernel<br />

mode<br />

running<br />

exited zombie<br />

preempted<br />

Uscita<br />

ready<br />

sleeping in<br />

memory<br />

new<br />

Ingresso<br />

ready<br />

swapped out<br />

sleeping<br />

swapped out


user<br />

mode<br />

running<br />

<br />

kernel<br />

mode<br />

running<br />

exited zombie<br />

preempted<br />

Uscita<br />

ready<br />

sleeping in<br />

memory<br />

new<br />

Ingresso<br />

ready<br />

swapped out<br />

sleeping<br />

swapped out


user<br />

mode<br />

running<br />

<br />

kernel<br />

mode<br />

running<br />

exited zombie<br />

preempted<br />

Uscita<br />

ready<br />

sleeping in<br />

memory<br />

new<br />

Ingresso<br />

ready<br />

swapped out<br />

sleeping<br />

swapped out


user<br />

mode<br />

running<br />

<br />

kernel<br />

mode<br />

running<br />

exited zombie<br />

preempted<br />

Uscita<br />

ready<br />

sleeping in<br />

memory<br />

new<br />

Ingresso<br />

ready<br />

swapped out<br />

sleeping<br />

swapped out


Kernel<br />

PID=0<br />

init<br />

PID=1<br />

Legge<br />

/etc/inittab<br />

<br />

<br />

<br />

<br />

<br />

getty login shell<br />

getty login shell<br />

getty login shell<br />

Legge<br />

/etc/passwd


Kernel<br />

PID=0<br />

init<br />

PID=1<br />

Legge<br />

/etc/inittab<br />

<br />

<br />

<br />

<br />

<br />

getty login shell<br />

getty login shell<br />

getty login shell<br />

Legge<br />

/etc/passwd


Page<br />

daemon<br />

BASH<br />

Kernel<br />

Swapper Init<br />

Getty


Page<br />

daemon<br />

BASH<br />

Kernel<br />

Swapper Init<br />

Getty


Page<br />

daemon<br />

BASH<br />

Kernel<br />

Swapper Init<br />

Getty


pid_t fork(void)


<strong>Processo</strong> padre<br />

stack<br />

heap<br />

dati<br />

testo<br />

<br />

fork()<br />

Entrambi i processi ripartono<br />

dall'istruzione successiva alla<br />

fork() nel testo<br />

<strong>Processo</strong> <strong>figlio</strong><br />

stack<br />

heap<br />

dati<br />

testo


find . -name '*.c' -print |<br />

wc -l<br />

<br />

<br />

<br />

<br />

<br />

fork()<br />

exec()<br />

shell<br />

pipe()<br />

fork()<br />

exec()<br />

input<br />

richieste<br />

find wc<br />

fork()<br />

Child<br />

process<br />

Server<br />

process<br />

fork()<br />

Child<br />

process<br />

risposta risposta<br />

output


find . -name '*.c' -print |<br />

wc -l<br />

<br />

<br />

<br />

<br />

<br />

fork()<br />

exec()<br />

shell<br />

pipe()<br />

fork()<br />

exec()<br />

input<br />

richieste<br />

find wc<br />

fork()<br />

Child<br />

process<br />

Server<br />

process<br />

fork()<br />

Child<br />

process<br />

risposta risposta<br />

output


find . -name '*.c' -print |<br />

wc -l<br />

<br />

<br />

<br />

<br />

<br />

fork()<br />

exec()<br />

shell<br />

pipe()<br />

fork()<br />

exec()<br />

input<br />

richieste<br />

find wc<br />

fork()<br />

Child<br />

process<br />

Server<br />

process<br />

fork()<br />

Child<br />

process<br />

risposta risposta<br />

output


omb<br />

bomb ... bomb<br />

bomb<br />

bomb ... bomb<br />

...<br />

bomb<br />

bomb ... bomb<br />

... ... ... ...


while ( 1 ) {<br />

}<br />

x=malloc(1048576); /* 1MB */<br />

*x = 0;/* forza il Copy On Write */<br />

fork();


ulimit -u numero<br />

<br />

<br />

kill -9 -1


ulimit -u numero<br />

<br />

<br />

kill -9 -1


pid_t getpid(void)<br />

<br />

<br />

<br />

pid_t getppid(void)


pgrep<br />

pgrep stringa<br />

<br />

<br />

pgrep init


pgrep<br />

pgrep stringa<br />

<br />

<br />

pgrep init


pgrep<br />

pgrep stringa<br />

<br />

<br />

pgrep init


void exit(int status)


void exit(int status)


void exit(int status)


void exit(int status)


kill<br />

kill -l


kill<br />

kill -l


kill<br />

kill -l


kill<br />

<br />

kill -id segnale pid<br />

kill -9 8732<br />

<br />

pkill<br />

<br />

pkill -KILL program


int kill(pid_t pid, int sig)


void sig_handler(int signo)<br />

<br />

sighandler_t<br />

<br />

<br />

typedef void (*sighandler_t) (int);


sighandler_t signal(int signo,<br />

sighandler_t handler)


sighandler_t signal(int signo,<br />

sighandler_t handler)


pid_t wait(int *status)


man wait


padre<br />

PID<br />

Tabella<br />

processi<br />

fork()<br />

PID<br />

Running<br />

<strong>figlio</strong><br />

Running


<strong>figlio</strong><br />

padre<br />

wait()<br />

Tabella<br />

processi<br />

Blocked<br />

Running


<strong>figlio</strong><br />

padre<br />

wait()<br />

Tabella<br />

processi<br />

Running<br />

Zombie


padre<br />

wait()<br />

PID,<br />

codice<br />

uscita<br />

Tabella<br />

processi<br />

Running<br />

Zombie


padre<br />

PID<br />

Tabella<br />

processi<br />

fork()<br />

PID<br />

Running<br />

<strong>figlio</strong><br />

Running


<strong>figlio</strong><br />

padre<br />

Tabella<br />

processi<br />

Running<br />

Zombie


padre<br />

wait()<br />

PID,<br />

codice<br />

uscita<br />

Tabella<br />

processi<br />

Running<br />

Zombie


padre<br />

PID<br />

Tabella<br />

processi<br />

fork()<br />

PID<br />

Running<br />

<strong>figlio</strong><br />

Running


<strong>figlio</strong><br />

padre<br />

Tabella<br />

processi<br />

Running<br />

Zombie


padre<br />

<br />

Tabella<br />

processi<br />

Exiting<br />

Zombie


pid_t waitpid(pid_t pid, int *status, int<br />

options)


pid_t waitpid(pid_t pid, int *status, int<br />

options)


pid_t waitpid(pid_t pid, int *status, int<br />

options)


Spazio indirizzamento<br />

processo (RAM)<br />

Pagina 1<br />

Pagina 2<br />

...<br />

Pagina n<br />

Memoria secondaria<br />

(periferica)<br />

Blocco<br />

1<br />

Blocco<br />

n<br />

Blocco<br />

2


CPU<br />

<br />

Spazio indirizzamento<br />

processo (RAM)<br />

Pagina 1<br />

Pagina 2<br />

...<br />

Pagina n<br />

Sostituzione di codice:<br />

le pagine vengono<br />

sostituite quando richieste<br />

dal processore.<br />

Memoria secondaria<br />

(periferica)<br />

Blocco<br />

1<br />

Blocco<br />

n<br />

Blocco<br />

2


CPU<br />

<br />

Spazio indirizzamento<br />

processo (RAM)<br />

Pagina 1<br />

Pagina 2<br />

...<br />

Pagina n<br />

Sostituzione di codice:<br />

le pagine vengono<br />

sostituite quando richieste<br />

dal processore.<br />

Memoria secondaria<br />

(periferica)<br />

Blocco<br />

1<br />

Blocco<br />

n<br />

Blocco<br />

2


int execlp(const char *file, const char<br />

*arg, ...);<br />

int execle(const char *file, const char<br />

*arg, ..., char * const envp[]);<br />

int execv(const char *file, const char<br />

*argv[]);<br />

int execvp(const char *file, const char<br />

*argv[]);<br />

int execle(const char *file, const char<br />

*arg[], char * const envp[]);


in/sh -c comando


int system(const char *command)<br />

<br />

/bin/sh -c comando


int system(const char *command)<br />

<br />

/bin/sh -c comando

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!