Indholdsfortegnelse:
Definition - Hvad betyder Semaphore?
En semafor er et synkroniseringsobjekt, der styrer adgang ved hjælp af flere processer til en fælles ressource i et parallelt programmeringsmiljø. Semaforer er vidt brugt til at kontrollere adgangen til filer og delt hukommelse. De tre grundlæggende funktionaliteter, der er forbundet med semaforer, indstilles, tjek og vent, indtil det ryddes for at indstille det igen. |
Semaforer bruges til at løse benchmark-synkroniseringsproblemer.
Begrebet semafor blev fremsat af den hollandske computerforsker Edsger Dijkstra.
Techopedia forklarer Semaphore
Semaforer er ikke-negative heltalværdier, der understøtter operationerne semafor-> P () og semafor-> V (). P er en atomoperation, der venter på, at en semafor skal være positiv og derefter dekrementerer den med en, mens V er en atomoperation, der øger en semafor med én, hvilket indebærer, at den vækker en ventende P. Test og sæt tilknyttet semafor er rutiner implementeret i hardware til koordinering af kritiske sektioner på lavere niveau.
Semaforer implementeres normalt ved hjælp af filbeskrivelser. Semaforekreationer er ikke atomiske. Hvis to processer forsøger at oprette, initialisere og bruge en semafor på samme tid, oprettes en race-betingelse. Semaforer oprettes og initialiseres til en positiv værdi for at vise tilgængeligheden af en ressource, der skal bruges. Semaforer kan implementeres gennem afbrydelser eller ved hjælp af test-sæt operationer.
Hver semafor opretholder sæt tilladelser. Det begrænser antallet af tråde, der får adgang til ressourcerne. Semaforer med kun en tilladelse og initialiseret til en fungerer som gensidig udelukkelseslåse. De omtales som sådanne, fordi de kun har to tilstande: tilladelse til rådighed eller nul tilladelse til rådighed. Dette lukker ejendommen, så en lås kan frigøres af en anden tråd end ejeren, hvilket hjælper med inddrivelse af dødvande. Semaforer bruges til gensidige ekskluderinger, hvor semaforen har en startværdi på en, og P () og V () kaldes før og efter de kritiske sektioner.




