Re: [so] [Examen] Clarificare materie

2020-05-25 Fir de Conversatie Razvan Deaconescu via so
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

2020-05-25 Fir de Conversatie Darius Mihai via so
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

2020-05-25 Fir de Conversatie Paul Olaru via so
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