2011-08-17 2 views
1

Quelqu'un m'a posé cette question:Bibliothèque partagée utilisée par deux processus

Deux processus P1 et P2 utilisent une bibliothèque partagée (système UNIX). La bibliothèque partagée possède une variable globale G1 et une fonction getval() et setval() qui obtient et définit la valeur de G1.

Voici la séquence des événements:

P1:Calls setval(10) P1:Goes to sleep P2: Calls setval(20) P2:Goes to sleep P1:awake from sleep P1: Calls val=getval() 

Maintenant, ce sera la valeur de val? Quel P1 reçoit? Est-ce 10 ou 20?

Quelle sera votre réponse, avec des explications. Les choix sont:

  1. val = 10, est que chaque processus exécute et a son propre espace d'adressage bien que plusieurs processus utilisent la même bibliothèque partagée. Donc, bien que G1 soit une variable globale, sa valeur sera unique pour chaque processus.

  2. P1. reçoit une valeur de 20, car la valeur a été modifiée par le processus P2 lorsque P1 était endormi.

  3. La valeur ne peut pas être déterminée.

  4. Vous pouvez ajouter une autre réponse si vous le souhaitez, en dehors de ces 4 choix.

Eh bien, 1. était ma réponse. Êtes-vous d'accord?

P1 et P2 ne coopèrent pas et sont des processus indépendants

Répondre

2

val = 10. En effet, chaque processus a son propre espace d'adressage (ce n'est pas «c'est», c'est «c'est»). La bibliothèque n'a pas d'espace de données en elle-même.

+1

Merci d'avoir signalé la faute de frappe. – kingsmasher1

Questions connexes