Wat is signaalprogrammering?

"Signaalprogrammering" is een term die vaak wordt gebruikt om te verwijzen naar een computerprogramma dat voornamelijk functioneert in reactie op signalen of gebeurtenissen die worden gegenereerd door een wijziging van de status of door gebruikersinvoer. Bijna elk deel van een computersysteem, van een perifeer apparaat tot het besturingssysteem zelf, kan een signaal genereren dat kan worden vastgelegd door een toepassing en vervolgens kan worden verwerkt. In veel vormen lijkt signaalprogrammering op gebeurtenisgestuurde programmering. Enkele van de meest voorkomende toepassingen voor signaalprogrammering zijn met grafische gebruikersinterfaces die reageren op gebruikersinvoer, netwerkcommunicatie en programma's op laag niveau die specifieke systeemsignalen vastleggen en verwerken.

Een signaal in computerprogrammering kan worden gedefinieerd als een bericht, een gebeurtenis of een interrupt, afhankelijk van de oorsprong, de systeemarchitectuur of zelfs de voorkeur van de programmeur. In de breedste termen is het een indicator dat sommige status of gegevens zijn gewijzigd, en het gaat soms gepaard met aanvullende informatie over de wijziging die heeftgebeurde. Het signaal kan worden gegenereerd door de gebruiker wanneer een toets wordt ingedrukt, van hardware zoals een monitor wanneer een verticale terugtrekken optreedt, of zelfs vanuit het besturingssysteem wanneer er iets zoals een paginafout gebeurt tijdens geheugentoewijzing.

Binnen een toepassing kan signaalprogrammering verschillende soorten architecturen aannemen, maar een van de meest voorkomende is een luisteraar- of waarnemersmodel. In deze methode kan een stuk door de gebruiker gedefinieerde code op een of andere manier worden doorgegeven aan een signaalhandler, meestal binnen het besturingssysteem, dat vervolgens dat stuk code oproept om signalen te verwerken die overeenkomen met wat de functie zoekt. Het type signaal dat een functie vaak kan verwerken, wordt bepaald door een variabele die bekend staat als een signaalmasker, dus sommige signalen worden niet doorgegeven aan routines die niet zijn ontworpen om ze te hanteren.

Een tweede type signaalprogrammering omvat het hebben van een programma dat een wachtrij implementeert die inkomende Sig accepteertnals. Deze wachtrij wordt ondervraagd in de hoofduitvoeringslus van het programma en het programma reageert zodra een signaal de wachtrij binnengaat. Elk signaal kan vervolgens logisch worden gesorteerd, behandeld, genegeerd of doorgegeven aan een ander proces.

Sommige moeilijkheden kunnen ontstaan ​​bij signaalprogrammering wanneer gelijktijdige processen of multi-threaded-applicaties worden gebruikt. De complicaties kunnen ontstaan ​​als bijvoorbeeld twee afzonderlijke threads luisteren naar signalen die worden gegenereerd door twee afzonderlijke gebruikersinvoerapparaten of uit twee netwerkbakken. Als twee gebruikers tegelijkertijd proberen een wijziging van sommige gegevens aan te brengen, kunnen de programmagegevens uit de synchronisatie vallen en anders voor elke gebruiker verschijnen. Het gebruik van een lineaire wachtrij of het implementeren van threadsynchronisatiemethoden kan helpen om deze situatie te voorkomen.

ANDERE TALEN