c.Comunic.intr

Сделай свою wap-шпаргалку =) попробуй конструктор сайтов http://www.panweb.com/


--algoritmul msgsnd /* trimiterea unui mesaj */
^intrгri (1)descriptorul cozii de mesaje
(2)adresa structurii de date pentru mesaje
(3)lungimea mesajului
(4)indicatori /* flags */
ie?iri numгrul de octeti efectiv trimisi
{
verifica valabilitatea descriptorului si a drepturilor de acces;
while(nu exista spatiu de memorie suficient pt. stocarea mesajului)
{
if(flag-ul specifica faptul ca procesul nu asteapta)
return;
sleep(eveniment: exista spatiu suficient pt. stocarea mesajului)
}
aloca antet de mesaj;
copiaza mesajul propriu-zis din spatiul user in spatiul nucleu;
actualizeaza structura de date:
-insereaza in lista noul antet de mesaj;
-initializeaza pointerul din antetul de mesaj catre zona de date;
-inscrie valoarea:-contorului de octeti;
-momentelor de timp;
-identificatorului procesului transmitator;
^trezeste toate procesele care asteapta sa citeasca mesaje din coada;
}
Structurile de date pentru comunicarea prin mesaje:
^Procesele primesc mesaje cu ajutorul apelului sistem msgrcv, care are urmгtoarea sintaxг count = msgrcv(id, msg, maxcount, type, flag)
unde:
-id este descriptorul de mesaj;
-msg este adresa unei structuri de date a utilizatorului оn care se va scrie mesajul primit;
-maxcount este dimensiunea ?irului de caractere din structura de date msg;
-type specificг tipul de mesaj pe care utilizatorul dore?te sг-l citeascг;
-flag precizeazг ce trebuie sг facг nucleul dacг nu existг mesaje оn coada de mesaje.
Valoarea оntoarsг de apel, count, reprezintг numгrul de octeюi de date efectiv primiюi de cгtre utilizator.