Stap 6: De schrijven/lezen functies
Om te schrijven aan de buffer, probeert de schets eerst te verlagen van sem_space met de semop functie. Het maakt gebruik van een struct (gedefinieerd in IPCBuffer.h als sem_up en sem_down), waarvan de drie waarden de index in de array van de semafoor geven (weer, altijd 0 voor deze code), hoeveel we willen increment (positief getal) of verlagende (negatieve integer geretourneerd), en optionele besturingsvlaggen, respectievelijk. De derde waarde 0 hier betekent dat het proces wordt geblokkeerd als is het onvermogend voor het verlagen van de semafoor (dat wil zeggen de telling is op 0).Nadat de decrement naar sem_space lukt, weten we dat er ruimte voor ten minste één gegevenseenheid is. We staan alleen een proces te lezen of schrijven van een eenheid van gegevens tegelijk of anders wij zou indruisen tegen de interpretatie van de semafoor de graaf. We weten niet de waarde van de semafoor, alleen dat het was niet 0 toen we semop genoemd op sem_space. We proberen daarna te verlagen van sem_lock. Als het blokkeert dan dat betekent is een ander proces toegang krijgen tot het gedeelde geheugen segment. Wanneer de schets opgeheven wordt zal het het hoofd index en een breedte van waarde van bytes uit geheugen adres bron te kopiëren naar de juiste locatie in het gedeelde geheugen lezen. De hoofd index is verhoogd en teruggeschreven naar gedeeld geheugen voordat het verhogen van de sem_lock.
De laatste stap is het verhogen van sem_data. Hierdoor kunnen andere processen om te zien dat nieuwe geldige gegevens in de buffer is gelegd. Het is de moeite waard erop te wijzen dat we niet extra staat hoeven om de situatie waar de kop en staart waarden gelijk zijn. Dit gebeurt zowel wanneer de buffer leeg is en als het vol is. De semaforen sem_space en sem_data bijhouden van hoeveel ruimte er is om gegevens te worden gelezen uit of weggeschreven naar de buffer. Wanneer sem_space waarde 0 heeft bereikt, bijvoorbeeld, betekent dit dat de buffer vol is en geen proces probeert te schrijven naar de buffer slagen zullen tot een ander proces element uit de buffer leest.
De Lees methode volgt de dezelfde grondgedachte voor schrijven, maar het verlaagt sem_data eerst en de bijbehorende sem_space aan het einde samen met de staart-index gebruikt om te lezen uit de buffer. De Python script volgt hetzelfde patroon voor lezen en schrijven alleen met de API van de sysv_ipc module.