Re: [so] [Examen] Clarificare materie
Mihai Sp via so writes: > Buna seara, > > Am cateva intrebari si m-ar ajuta daca mi-ati raspunde pentru a-mi clarifica > cateva goluri din intelegerea materiei: > > 1. Se poate crea un semafor numai din mutexuri? (Eu as spune ca da, > daca cream, de exemplu, un vector de mutexuri, pe care diferite > procese vor face lock in limita mutexurilor, simuland deci un semafor) Nu poți avea un vector de mutex-uri că nu vei putea ști în ce ordine sunt apelate. Cum pui semaforul pe 3? La nivelul implementării ai, în general: * un mutex implementat prin: ** un spinlock care protejează ... ** o variabilă booleană ** o coadă de procese care așteaptă eliberarea mutexului (atunci când este luat) * un semanfor e implementat prin ** un spinlock care protejează ... ** un întreg / contor ** o coadă de procese care așteaptă eliberarea semaforului (atunci când este contorul pe zero) > 2. Poate exista un proces si zombie si orfan? (Eu as spune ca da, > intrucat imediat ce un proces zombie ramane fara parinte si pana sa > fie adoptat de init, este si zombie si orfan, chiar daca acest > interval de timp este infim de mic) Da, în acel interval infim până când este adoptat de init (ca orfan) și reaped tot de init (ca zombie). > 3. Ce adresa IP si ce port are un socket intors de accept() ? (Nu am > nicio idee. Din cate stiu, este ales un socket cu un index cat mai > mic, dar mai departe nu stiu ce sa spun) Același ca al serverului listen care a fost transmis ca argument la apelul accept(). Am adăugat clarificare în notițele cursului 13[1], secțiunea "Procesare stiva TCP". [1] https://ocw.cs.pub.ro/courses/so/curs/net Răzvan ___ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
Re: [so] [Examen] Clarificare materie
Salut, Mihai, La întrebarea 1 nu sunt sigur care este problema pe care încerci să o rezolvi. Varianta ta ar părea o soluție posibilă, dar trebuie să ai în vedere faptul că ai oricum nevoie și de un contor cu ajutorul căruia să ții valoarea curentă a semaforului (care ar trebui să fie protejat de alt mutex). În lipsa unor funcții care pot să deblocheze un mutex atunci când încearcă să facă lock pe altul, precum SignalObjectAndWait de pe Windows, nu o să poți face decrementarea, verificarea și blocarea unui mutex în mod atomic. Pe Linux această funcționalitate este disponibilă pentru obiecte de tip event. La întrebarea 2 este corect. Poți avea un proces zombie care rămâne orfan (și va avea ambele calități până este distrus de un reaper). Darius On Mon, May 25, 2020 at 8:57 PM Paul Olaru via so wrote: > > La întrebarea a 3-a adresa și portul locale și remote sunt stabilite de > clientul care a dat connect. Adresa și portul local sunt pe ce ai dat listen, > adresa și portul remote e decis de client. FD-ul în sine va ocupa un slot > oarecare din tabela de descriptori, de obicei primul liber dar nu ai voie să > te bazezi că e întotdeauna așa. > > On Mon, May 25, 2020, 20:54 Mihai Sp via so wrote: >> >> Buna seara, >> >> Am cateva intrebari si m-ar ajuta daca mi-ati raspunde pentru a-mi clarifica >> cateva goluri din intelegerea materiei: >> >> 1. Se poate crea un semafor numai din mutexuri? (Eu as spune ca da, daca >> cream, de exemplu, un vector de mutexuri, pe care diferite procese vor face >> lock in limita mutexurilor, simuland deci un semafor) >> 2. Poate exista un proces si zombie si orfan? (Eu as spune ca da, intrucat >> imediat ce un proces zombie ramane fara parinte si pana sa fie adoptat de >> init, este si zombie si orfan, chiar daca acest interval de timp este infim >> de mic) >> 3. Ce adresa IP si ce port are un socket intors de accept() ? (Nu am nicio >> idee. Din cate stiu, este ales un socket cu un index cat mai mic, dar mai >> departe nu stiu ce sa spun) >> >> Multumesc anticipat, >> Spataru Mihai >> ___ >> http://ocw.cs.pub.ro/courses/so/info/lista-discutii > > ___ > http://ocw.cs.pub.ro/courses/so/info/lista-discutii ___ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
Re: [so] [Examen] Clarificare materie
La întrebarea a 3-a adresa și portul locale și remote sunt stabilite de clientul care a dat connect. Adresa și portul local sunt pe ce ai dat listen, adresa și portul remote e decis de client. FD-ul în sine va ocupa un slot oarecare din tabela de descriptori, de obicei primul liber dar nu ai voie să te bazezi că e întotdeauna așa. On Mon, May 25, 2020, 20:54 Mihai Sp via so wrote: > Buna seara, > > Am cateva intrebari si m-ar ajuta daca mi-ati raspunde pentru a-mi > clarifica cateva goluri din intelegerea materiei: > > 1. Se poate crea un semafor numai din mutexuri? (Eu as spune ca da, daca > cream, de exemplu, un vector de mutexuri, pe care diferite procese vor face > lock in limita mutexurilor, simuland deci un semafor) > 2. Poate exista un proces si zombie si orfan? (Eu as spune ca da, intrucat > imediat ce un proces zombie ramane fara parinte si pana sa fie adoptat de > init, este si zombie si orfan, chiar daca acest interval de timp este infim > de mic) > 3. Ce adresa IP si ce port are un socket intors de accept() ? (Nu am nicio > idee. Din cate stiu, este ales un socket cu un index cat mai mic, dar mai > departe nu stiu ce sa spun) > > Multumesc anticipat, > Spataru Mihai > ___ > http://ocw.cs.pub.ro/courses/so/info/lista-discutii ___ http://ocw.cs.pub.ro/courses/so/info/lista-discutii