SYS2 2

Aujourd’hui:

Process vs Thread

Adress space: Adresse mémoire

Process: instantiation en mémoire d’un programme avec plusieurs états. Idenfiable via le pid, avec une durée de vie, et qui est schedulé.

Comment passer d’un process à un autre ?
On peut passer de l’un à l’autre toutes les quelques millisecondes.

Pour un thread c’est à peu près pareil.

Execve permet de créer un process.
Fork permet de faire de l’execution parallèle en duplicant un process mais aussi l’adresse space.

Probleme ? Si on veut travailler sur les même données (c-a-d même adresse space).

Solution 1:

Drop les privilères: Quand on a besoin de privilège pour faire des trucs, mais qu’une fois fini on relache les privilèges (pour que ce soit plus safe).

Ex: Word n’a pas le droit d’ouvrir n’importe quel fichier. Du coup quand on veut ouvrir un fichier, on lui donne le droit d’ouvrir des fichiers, il ouvre celui qu’on lui demande, puis une fois ouvert, on lui retire les droits.

Globalement, étant donné qu’il faut masse manip pour synchroniser les données, puis les signaux, puis la mémoire etc… On a créer les threads

Thread

Ce qui n’est pas partagé dans un thread:

Comment créer un nouveau thread:

Pour changer d’un thread à un autre: On utilise sigalarm à intervalle de temps régulier.

Mais du coup comment on retrouve le context dans lequel on s’est arrêter ? -> Sigaction

pthread -> Posix Thread (LIB):

Tasks

A partir du moment où un truc est schedulé on appelle ça une tache. Cela peut etre un process, un thread ou autre.