Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » GNU/Linux » Semaphoren unter Unix

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.04.2006, 09:09 Uhr
Österreini



Hoi!

Hab ein Referat über Semaphoren geschrieben ... da stimmt aber einiges nicht.

Weil ich selber keine Ahnung von dem ganze habe und auf Quellen im Inet angewiesen bin, weiß ich nicht, wie ich die Mängel des Referats beheben kann.

Und zwar:

Mit dem semop()-Befehl wird die Semaphore selbst bearbeitet


Code:
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>

int semop(int semid, struct sembuf sem_array[], size_t n_op);




Folgende Argumente werden beim semop()-Befehl übergeben:
- semid: die ID der Semaphore, die man bei semget() erhalten hat
- sem_array[]: die Adresse eines Arrays von der Struktur sembuf, die je eine Semaphorenoperation beschreiben
- n_op: gibt an, wie viele Elemente in dem Array (2. Parameter) stehen


sembuf beinhaltet folgende Felder:


Code:
struct sembuf {
    short sem_num;  /* semaphore number: 0 = first */
    short sem_op;   /* semaphore operation */
    short sem_flg;  /* operation flags */
};



Bei sem_op hab ich jetzt folgendes stehen:

sem_op: bestimmt die Operation selbst. Folgendes ist möglich:
- semop > 0: Der Wert der Semaphore wird um den Wert, den semop hat, erhöht. Diese Operation blockiert nie
- semop < 0: Der Wert der Semaphore wird um den Wert von semop verringert.
Wird die Semaphore durch diese Operation negativ, wird der kritische Bereich gesperrt.
Versucht nun ein anderer Prozess, darauf zuzugreifen, hängt die Reaktion von dem sem_flag ab.
Wurde IPC_NOWAIT gesetzt, bricht semop() mit einem Fehler ab, ansonsten wartet der Prozess, bis die Ressource wieder freigegeben ist.
- semop == 0: ist der Wert der Semaphore semval Null, dann läuft die Operation einfach durch. Ansonsten blockiert dieser Prozess und wartet, bis das Semaphor Null wird.

Anscheinend stimmen aber die Beschreibungen für
semop == 0
und semop > 0 nicht ... !

Weitere Frage die der Lehrer fragt:
Was passiert, wenn bei semop nur ein Teil der sembuf-Spezifikationen erfüllt werden kann?

Und noch weiter:
Was ist nun key wirklich?

Meine Beschreibung wäre gewesen:
Der Key ist quasi die „magische Nummer“, also eine Zahl, die von den Programmen vereinbart wird, die über die Semaphore kommunizieren wollen.

Reicht aber anscheinend nicht aus ...

Irgend jemand hier im Forum, der sich da besser auskennt und meine Fragen beantworten kann?
--

Your Anime & Manga-Source ->
www.ani-area.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ GNU/Linux ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: