Semaphore

مهندس أنظمة

  • Jr. Member
  • **
    • مشاركة: 57
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
في: كانون الأول 05, 2008, 11:46:21 صباحاً
هذا تمرين لموديل أنظمة التشغيل ارجو من أخوة التعاون لحل هذا التمرين

Soient trois processus concurrents P1, P2 et P3 qui partagent les
variables n et out. Pour contrôler les accès aux variables partagées, un
programmeur propose les codes suivants :
Semaphore mutex1 = 1 ;
Semaphore mutex2 = 1 ;
Code du processus p1 :
P(mutex1) ;
P(mutex2) ;
out=out+1 ;
n=n-1 ;
V(mutex2) ;
V(mutex1) ;
Code du processus p2 :
P(mutex2) ;
out=out-1 ;
V(mutex2) ;
Code du processus p3 :
P(mutex1) ;
n=n+1 ;
V(mutex1) ;
Cette proposition est-elle correcte ? Sinon, indiquer parmi les 4
conditions requises pour réaliser une exclusion mutuelle correcte,
celles qui ne sont pas satisfaites ? Proposer une solution correcte.
1) On veut effectuer en parallèle le produit de deux matrices A et B
d’ordre n (nxn). Pour se faire, on crée m (m
(threads). Chaque processus léger se charge de calculer quelques
lignes de la matrice résultat R :
Pour j = 0 à n-1 R[i,j] = k=0,n-1 A[i,k]*B[k,j] ;
Donner sous forme de commentaires (en utilisant les sémaphores et
les opérations P et V), le code des processus légers : CalculLignes ( ).
Préciser les sémaphores utilisés et les variables partagées.


مهندس أنظمة

  • Jr. Member
  • **
    • مشاركة: 57
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #1 في: كانون الأول 05, 2008, 02:28:26 مسائاً
حل السؤال أول
1) Non, car si P2 est en section critique et P1 a exécuté P(mutex1)
alors P1 est bloqué et empêche P3 d’entrer en section critique.
Conditions non vérifiées :
Un processus en dehors de sa section critique bloque un autre
processus.
Processus P1
P(mutex1) ;
n=n-1 ;
V(mutex1) ;
P(mutex2) ;
Out = out +1 ;
V(mutex2) ;
[/FONT]


ya1980

  • Newbie
  • *
    • مشاركة: 20
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #2 في: كانون الأول 07, 2008, 10:48:11 صباحاً
es que vous pouvez expliquer l'algorithme du sémaphore   et comment le semaphore rt travaille        
 merci


مهندس أنظمة

  • Jr. Member
  • **
    • مشاركة: 57
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #3 في: كانون الأول 07, 2008, 03:45:06 مسائاً
P(s)
S :=S-1 ;
si ( S<0) alors
le processes réalisant p(s) est bloque dans f(s);
finsi

 
v(s)
S:=S+1 ;
si (S<=0) alors
un processes de la file d’attente de s est débloque;
finsi

initialisation

S :=valeur
f(s) :=vide

sémaphore d’exlusion mutuelle

mutex :=1

processes pi (i=1-n)

p(mutex ;
section-critique() ;
v(mutex) ;
section-non-critique ;


مهندس أنظمة

  • Jr. Member
  • **
    • مشاركة: 57
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #4 في: كانون الأول 07, 2008, 04:00:50 مسائاً
sémaphore
 
un sémaphore s est constitué par l' association d'un compteur a valeurs entiéres noté S  et  d'un file d' attente notée f(s  a la création du sémaphore le compteur recoit une valeur initiale S( s>=0 et la file f(s  est vide  un sémaphore sert a bloque des processus en attendant qu'une condition soit réalisée pour leur réveil les processus bloqués sont palcés dans f(s  plusieurs processus peuvent se synchroniser en utilisant  des sémaphore
qui appartiennent a la partie commun  de leur contexte un sémaphore s ne peut étre manipulé que deux opération dites primitives p(s  v(s  la valeur du compteur et état  de la file sont inaccessible  méme en lecteur


مهندس أنظمة

  • Jr. Member
  • **
    • مشاركة: 57
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #5 في: كانون الأول 07, 2008, 04:14:27 مسائاً
le fonctionnement  d'un  sémaphore peut étre comparé a celui d'un portillon auotomatique fonctionnant  a l 'aide de jeton   déposé  autorise  un ouverture  du  portillon  laissant passer une personne et une seul  il est possible d'introduire plusieurs jeton a l'avance l'opération p correspond a une tentative de franchissement du portillon qui peut  éventuellement obliger le demandeur a attendre l' opération v correspond au dépot d'un jeton si des personnes sont en attente l'un d'entre elles peut franchir le portillon  


khelef

  • Hero Member
  • *****
    • مشاركة: 1023
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #6 في: كانون الأول 07, 2008, 06:33:43 مسائاً
شكككككككككككككككككككرا


ya1980

  • Newbie
  • *
    • مشاركة: 20
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #7 في: كانون الأول 07, 2008, 07:51:09 مسائاً
شــــــــــــــــــــــكرا جزاك الله


ya1980

  • Newbie
  • *
    • مشاركة: 20
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #8 في: كانون الأول 07, 2008, 08:26:24 مسائاً
j'ai trouve un bonne site qui explique l'algorithme du semaphore http://www.lb.refer.org/chebaro/page55.htm


bouelam

  • Newbie
  • *
    • مشاركة: 13
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #9 في: كانون الأول 09, 2008, 06:36:25 صباحاً
شكرا جزيلا على الدروس القيمة


خيرالدين88

  • Newbie
  • *
    • مشاركة: 2
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #10 في: كانون الثاني 22, 2009, 02:10:31 مسائاً
Enoncee :
Le TP consiste a implémenter des algorithmes vus dans le cours en ce qui concerne la synchronisation et la communication entre les processus concurrents. A savoir :


- Des lecteurs-rédacteurs avec différentes priorités, le dîner des philosophes , producteurs- consommateurs en utilisant les sémaphores, les moniteurs en langage java.

- Des lecteurs rédacteurs, le dîner des philosophes, producteurs-consommateurs en C sous Linux.


نرمين*

  • Global Moderator
  • Hero Member
  • *****
    • مشاركة: 3989
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #11 في: كانون الثاني 23, 2009, 12:00:44 مسائاً
مشكورين على هذا الدرس الر ائع


نرمين*

  • Global Moderator
  • Hero Member
  • *****
    • مشاركة: 3989
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #12 في: كانون الثاني 26, 2009, 05:36:10 مسائاً
مقتبس من: مهندس أنظمة;167794
هذا تمرين لموديل أنظمة التشغيل ارجو من أخوة التعاون لحل هذا التمرين

 
Soient trois processus concurrents P1, P2 et P3 qui partagent les
variables n et out. Pour contrôler les accès aux variables partagées, un
programmeur propose les codes suivants :
Semaphore mutex1 = 1 ;
Semaphore mutex2 = 1 ;
Code du processus p1 :
P(mutex1) ;
P(mutex2) ;
out=out+1 ;
n=n-1 ;
V(mutex2) ;
V(mutex1) ;
Code du processus p2 :
P(mutex2) ;
out=out-1 ;
V(mutex2) ;
Code du processus p3 :
P(mutex1) ;
n=n+1 ;
V(mutex1) ;
Cette proposition est-elle correcte ? Sinon, indiquer parmi les 4
conditions requises pour réaliser une exclusion mutuelle correcte,
celles qui ne sont pas satisfaites ? Proposer une solution correcte.
1) On veut effectuer en parallèle le produit de deux matrices A et B
d’ordre n (nxn). Pour se faire, on crée m (m
(threads). Chaque processus léger se charge de calculer quelques
lignes de la matrice résultat R :
Pour j = 0 à n-1 R[i,j] = k=0,n-1 A[i,k]*B[k,j] ;
Donner sous forme de commentaires (en utilisant les sémaphores et
les opérations P et V), le code des processus légers : CalculLignes ( ).
Préciser les sémaphores utilisés et les variables partagées.

 
 
  • non car si p2 est en section critique et p2 exécute p(mutex1)  
  • alors p1 est bloqué et empeche p3 d'entrer en section critique
  • la condition non vérifier est le déroulement


mohammed1993

  • Newbie
  • *
    • مشاركة: 5
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #13 في: كانون الأول 08, 2014, 10:55:55 صباحاً
merci a tous les perssons qui participe danne ce objet