12.07.2015 Views

Généralités sur les systèmes d'exploitation - Site personnel de ...

Généralités sur les systèmes d'exploitation - Site personnel de ...

Généralités sur les systèmes d'exploitation - Site personnel de ...

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

LO14 : Université Technologique <strong>de</strong> TroyesT1''lockX(B)x=read(B)x=x­10write(B,x)lockX(A).....T4lockS(A)y=read(A)lockS(B)....Il existe plusieurs manières d'éviter <strong>les</strong> verrous mortels :• Obliger <strong>les</strong> transactions à <strong>de</strong>man<strong>de</strong>r tous <strong>les</strong> verrous simultanément. Le système <strong>les</strong> accepte alors tousà la fois ou aucun. Des données peuvent donc être verrouillées longtemps sans être utilisées.• Fixer une relation d'ordre <strong>sur</strong> <strong>les</strong> données et obliger <strong>les</strong> transactions à <strong>de</strong>man<strong>de</strong>r leurs verrous dans cetordre.• Quand une situation d'interblocage se produit, arrêter la transactions incriminée et la réexécuterultérieurement. Pour cela on affecte à chaque transaction une estampille unique et on utilise cesestampil<strong>les</strong> pour déci<strong>de</strong>r si en cas <strong>de</strong> conflit, une transaction doit être mise en attente ou rejetée. Si elleest rejetée elle reste affectée à la même estampille, ce qui la fait "vieillir''. Deux schémas existent pourrégler <strong>les</strong> conflits entre transactions plus jeunes et plus vieil<strong>les</strong> : Wait­Die et Wound­Wait.1. Avec le schéma Wait­Die (attendre ou mourir), si une transaction Ta détient unedonnée et que Tb la réclame dans un mo<strong>de</strong> non compatible, on autorise Tb à attendressi Tb est plus vieille que Ta. Dans le cas contraire, Tb est avortée, elle sera relancéeavec la même estampille. Donc plus Tb vieillit plus elle est autorisée à attendre.2. Avec le schéma préemptif Wound­Wait (B<strong>les</strong>ser ou attendre) si une transaction Tadétient une donnée et que Tb la réclame dans un mo<strong>de</strong> non compatible, on autorise Tbà attendre si elle est plus jeune que Ta. Dans le cas contraire, Ta est b<strong>les</strong>sée (avortéeet relancée avec la même estampille). Donc plus Tb est vieille plus elle est autorisée àaccé<strong>de</strong>r aux données.Que ce soit dans le schéma Wait­Die ou dans le schéma Wound­wait, la plus vieille <strong>de</strong>s transactions nepeut être rejetée. Ces <strong>de</strong>ux schémas évitent <strong>les</strong> situations <strong>de</strong> <strong>de</strong>adlock.Prenons l'exemple <strong>de</strong> 3 transactions Ta, Tb et Tc d'estampil<strong>les</strong> respectives 5,10 et 15.1. Wait­Die :Si Ta réclame un article traité par Tb, Ta attend.Si Tc réclame un article traité par Tb, Tc est rejetée.2. Wound­Wait :Si Ta réclame un article traité par Tb, Tb est rejetée et Ta prend la donnée.Si Tc réclame un article traité par Tb, Tc attend.Selon <strong>les</strong> types d'applications gérées par l'entreprise, on préférera soit le schéma par estampillage <strong>de</strong> typeWound­Wait (c'est le cas pour le contrôle <strong>de</strong> processus ou la gestion bancaire) soit le schéma Wait­Die.Pour prendre en compte l'ordonnancement <strong>de</strong>s transactions, la gestion <strong>de</strong>s fi<strong>les</strong> d'attentes entretransactions, la pose et la levée <strong>de</strong>s verrous il faut un outil spécial : Le moniteur transactionnel. Le plusconnu est sans doute CICS fourni par IBM pour <strong>systèmes</strong> MVS.C'est aussi à lui <strong>de</strong> vérifier et <strong>de</strong> gérer <strong>les</strong> points suivants :• Quand une transaction ne peut pas accé<strong>de</strong>r à une donnée à cause d'un verrou, elle est mise en attente.Dés que la transaction concurrente libère <strong>les</strong> verrous, elle se remet en exécution.• Si une transaction est en attente <strong>de</strong>puis une durée supérieure à une durée limite, la transaction estrejetée.• Si plusieurs transactions s'atten<strong>de</strong>nt mutuellement (<strong>de</strong>adlock), le système choisit une transaction quisera rejetée.Pour conclure ce chapitre il est important <strong>de</strong> dire que la manière dont le journal, <strong>les</strong> verrous etl'ordonnancement <strong>de</strong>s transactions sont effectués restent transparents pour l'utilisateur. Tout se passecomme si l'utilisateur était seul avec sa base <strong>de</strong> données. Néanmoins la compréhension <strong>de</strong>s mécanismesprofonds permettant l'accès concurrent est important pour écrire <strong>de</strong>s transactions efficaces. On prendragar<strong>de</strong> notamment et autant que faire se peut à• grouper <strong>les</strong> lectures ensemb<strong>les</strong> et <strong>les</strong> écritures ensemb<strong>les</strong> dans la transaction, ou mieux, dans <strong>de</strong>stransactions séparées.• éviter <strong>de</strong>s traitements longs entre <strong>les</strong> lectures et <strong>les</strong> écritures.• regrouper <strong>les</strong> interventions <strong>de</strong> l'opérateur en début <strong>de</strong> transaction et <strong>les</strong> lectures­écritures en fin <strong>de</strong>transaction.71 /98 S. Moutou : Cours

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

Saved successfully!

Ooh no, something went wrong!