• Aucun résultat trouvé

Synchronisation  Échange de données Deadlocks: Blocage: quand un process doit attendre pour une ressource utilisée par un autre process

N/A
N/A
Protected

Academic year: 2022

Partager "Synchronisation  Échange de données Deadlocks: Blocage: quand un process doit attendre pour une ressource utilisée par un autre process"

Copied!
1
0
0

Texte intégral

(1)

Synchro de «haut niveau»: Pour faciliter la programmation [Ensemble de sémaphores/Événements/Moniteurs/IPC unix]

Deadlock: Besoin de ressources différentes - Se résoud en les prenant dans le même ordre Besoin de n unités d'une ressources

Problème des philosophes: - Les prendre dans un ordre constant (famine?) Moniteurs: (Hoare 1974) / Dijkstra (Secrétaire) / Brinch Hansen

Type abstrait~objet | Regroupement syntaxique | Données partagée | Opérations (Procédures)

Exclusion mutuelle implicite | Condition (évènement) ... synchro (Primitive d'attente: c.wait() c.signal() c.empty() Mécanismes IPC: (Inter Process Comm)

 Envergure [Machine|Programme|LAN|Internet]

 Identification (Repérage) [Process (connaître l'interlocuteur)|Point de communication]

 Synchronisation

 Échange de données

Deadlocks: Blocage: quand un process doit attendre pour une ressource utilisée par un autre process.

Ressource: quelque chose dont un process a besoin pour continuer (physique ou logique/non partageable/attente circulaire) Interblocage: Situation impliquant un ensemble de process où chaque process attend un événement d'un autre process de l'ensemble.

Graphes:  requête  occupation Un process bloqué (avec des requêtes en attente) ne peut pas initier une transition. (bloqué vs actif) Conditions nécessaires pour obtenir un deadlock : (donc, si on en élimine une, on est sûr de pas en avoir)

1- a) Usage exclusif (pas partageables) b) Pas de préemption/réquisition (réserver la ressource avant) 2- Hold&Wait (Un process en attente de ressources continue à monopoliser les ressources qu'il a obtenues.)

3- Attente circulaire (Il existe un ensemble de process {p0, ..., pn-1} (cycle) tel que pi attend une ressource occupée par pi+1 mod n) Techniques reliées à l'interblocage:

1- Détection (en ce moment, ai-je un DL?)  base des autres algorithmes

2- Guérison (kill?, préemption et retour?): récupération «forcée» de ressources pour faire terminer les autres.

3- Avoidance (évitement?): [algo du banquier] (besoin d'annonce préalable des besoins max) (réservation)

Algo d'avoidance: 1) Exige une connaissance préalable sur les besoins maximum de chaque process pour chaque ressource.

2) À chaque transition, on vérifie si l'allocation d'une requête mène à un état non-sécuritaire. Si oui on fait attendre Test de sécurité: Simule une demande max de tous les process actifs et vérifie si impasse. oui  non-sécuritaire 4- Prévention: Concevoir un système qui nie une (ou plus) des conditions préalables. ex.: demander les ressources dans le même ordre 

hiérarchie des ressources (et demander niveau par niveau ds même ordre / ttes requêtes même niveau en même temps) ex philosophes: limites mangeurs n-1 ou ordonner baguettes

Convertir chaîne->octets:byte[] buf=new byte[2048]; String msg="Hello world";byte[ ] message;message=msg.getBytes();String s2=new String(buf,0,10);

Problèmes fichiers: Repérage (où vs nom) (Espace non-contigü / Pagination / fd) // Gestion d'espace (trous) // Partage+protection // Performance Pagination: le taux de fautes de page multiplié par le temps d'accès à la mémoire secondaire doit être du même ordre (x2 x3?) que l'accès en cache.

donc on ajuste la quantité de mémoire allouée par process pour éviter le «crash». TAUX MAX DE FAUTE: 1 / 10 ms (temp d'accès) Algos de cache: FIFO (simpliste) // Dernier utilisé (trop long à faire) // Second chance (FIFO modifié (horloge) bit «utilisé depuis dernière fois» qui

permet de "sauter par-dessus"... approx de LRU (Last Recently Used) // NRU (Not Recently Used), [Bit R, référencé, Bit M, modifié], on sort par préférence les pages non-ref, non-mod, puis les non-ref, mod, puis ref, non-mod et finalement ref et mod. (On remet à 0 de temps en temps les référencées, mais pas les modifiées, évidemment.) Page choisie au hasard dans la catégorie.

Opérations fichiers: Création (Réserv. espace support+Répertoires) // Écriture Calcul+E/S+plusd'espace? // Lire Calcul+E/S // Positionner // Supprimer Ouverture/Fermeture:  pour éviter de chercher le descripteur à chaque accès / permissions / copie en ram du descripteur / allocation de tampon Contenu d'un descripteur de fichier: Infos localisation / Taille || 3 Dates || Propriétaire/Groupe || Perm || Attributs [Caché/Effacé/...] || {Nom}  optionnel!

Alors les répertoires sont des liste de nom vs #descripteur. |||| On a alors une table de descripteurs (Inodes) ... ds Unix pas de nom et resp=fichiers

Type: [action à prendre | Vérification d'erreur] Indicateurs: Conventions nom (extensions) // Début fichier // Scripts: #!<path> // descripteur:[fich/dir/dev]

Gestion d'espace: Allocation contiguë // Allocation chaînée ~FAT (File Allocation Table) // Allocation indexée (UNIX)

Contiguë: Espace nécessaire minimal, Accès rapide, Vitesse lecture haute, Accès direct (positionnement). Grossir complexe, frag espace libre.

Allocation chaînée: Peu d'espace de stockage, bcoup frag, direct impossible. Pas d'espace perdu, ajout d'espace facile. FAT=garde pointeurs Allocation indexée: Mon listing pointe vers une liste de pointeurs trouvée sur le disque. Unix 12+3 (3 niveaux)

Organisation physique: Boot sector // Superbloc (Infos sur le disque) // Inodes [les descripteurs] (sur windows 2xFAT) // Data+Rep MBR: remplace boot sector pour infos partitions

FAT16 = 216 ...

- Différences entre smea (Dijkstra) et mutex de PTHREAD

mutex est un sema initialisé à un (sema binaire). sema peut contenir n'importe quoi // 2 font de l'exclusion mutuelle // un théo autre implémenté Envergure Identification Data [exch] Synchronisation (sécuritaire)

Fichiers LAN Path Oui Oui

- attente active de création - attente active par lock

Sémaphore Machine Entier Non Oui

- attente passive

Shared memory Machine Entier Oui Non

Msg Queues Machine Entier Oui Oui

Fork/Wait Machine

(père / fils)

Process ID (pid)

Oui - Père  fils (création) - Fils  Père (mort du fils)

Le père peut attendre la mort du fils

Signal (kill) Machine Process ID

(pid)

Non (type de sig.)

? routine d'interruption + réveil de toute attente Threads

(posix ou java)

Programme Variables globales Oui (passif)

Pipe (FIFO) Machine fid (file ID) Flux de données Oui (?)

Attendre pour lire: Read bloquant Syncho sur le début, pas la fin Socket (Streams /

Packet) Internet Host+port

Références

Documents relatifs

ReWrite is a forward compliance checking approach based on business process models and compliance policies1. Re- lated work addresses the annotation of business processes [15,

Therefore, we want to extend existing work on the PPM [15], which focuses on single model engineer settings, toward a collaborative setting where multiple stakeholders (e.g.,

This implementation will be used during the enactment of any instance of the process to access the IT systems and discover the occurrence of events defined in event monitoring

 the stochastic approach: it considers the time evolution as a kind of random-walk process which is governed by a single differential-difference equation (the “master equation”),

Software project tracking and oversight Project monitoring and control Software subcontract management Supplier agreement management Software quality assurance Process and

In summary, the process mining application enables the user to detect the potential for automation, but also the business impact of automation by show- ing the change in

Behaviour of the resources is analysed based on 3 parameter: Performance, Load and Queue using polynomial regression model for load and performance [4.2] and Average Servicing Time

documentation, supervised clinical practice hours, language proficiency, and evidence of knowledge of physiotherapy practice in the Canadian healthcare context.. Outcomes of