[so] Cursul 5 de SO
Salutare. Găsiți pe wiki slide-urile și demo-urile cursului 5 de SO (Gestiunea memoriei)[1]. Următoarele trei cursuri de sisteme de operare au legătură cu modul în care sistemul de operare și procesele folosesc și gestionează memoria sistemului. Vă recomandăm să parcurgeți slide-urile cursului înainte de participarea la curs. La curs vom parcurge și demo-urile; este indicat să reiterați prin slide-uri și demo-uri ulterior cursului. [1] http://ocw.cs.pub.ro/courses/so/cursuri/curs-05 Răzvan ___ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
Re: [so] Tema 2 - Simulare fork windows
On Mon, Mar 23, 2015 at 3:07 PM Ionel Popescu via so wrote: > Salut, > > Putem folosi CreateThread pentru a simula functia fork de pe Linux (chiar > daca nu creaza un nou proces) sau este obligatoriu sa cream un nou proces > si sa facem operatiile necesare pentru a obtine procesul fiu identic cu cel > parinte. (aici ma refer la crearea a 2 procese fiu pentru a rula in paralel > 2 comenzi) > > Da, puteți folosi CreateThread pentru a rula două sau mai multe comenzi în paralel. ___ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
[so] Tema 2 - Simulare fork windows
Salut, Putem folosi CreateThread pentru a simula functia fork de pe Linux (chiar daca nu creaza un nou proces) sau este obligatoriu sa cream un nou proces si sa facem operatiile necesare pentru a obtine procesul fiu identic cu cel parinte. (aici ma refer la crearea a 2 procese fiu pentru a rula in paralel 2 comenzi) Va multumesc, Ionel Popescu - 332CC ___ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
Re: [so] (no subject)
2015-03-23 10:09 GMT+02:00 Andrei Tuicu via so : > > > În data de 23 martie 2015, 09:59, Vlad Dogaru via so > a scris: > >> On Mon, Mar 23, 2015 at 07:36:32AM +, Sebastian ENE via so wrote: >> > Salut, >> > >> > Am si eu o intrebare daca puteti sa ma lamuriti va rog : >> > >> > Pe Linux intr-un process copil aloc memorie inainte de a executa >> > execv(). >> > Dupa ce am executat execv() toata memoria procesului copil se suprascrie >> > (asta inclusive heap-ul in urma alocarilor cu malloc, calloc..) >> > 1.Apelul free() dupa execv() nu mai are sens deoarece s-a suprascris >> > intreaga zona de memorie nu? >> >> După un execv() cu succes nu se mai execută nimic din codul de după. >> Deci dacă pui free() după nu are sens, pentru că nu se ajunge la el. >> >> Are sens să apelezi free dacă execv() eșuează, dar nu cred că asta >> întrebai. >> >> > 2.File descriptorii deschisi inainte de execv() se pierd, dar >> > structurile aferente procesului care fac legatura cu inode-urile >> > raman? >> >> File descriptorii nu se pierd decât dacă au flag-ul close on exec [1]. >> Ceilalți rămân. This makes sense if you think about it, poți moșteni, >> at the very least, stdin, stdout și stderr, ca să nu te trezești că ai >> executat un program redirectat într-un fișier și apoi el face exec() >> altuia care începe să scrie la consolă. >> >> [1] >> http://stackoverflow.com/questions/6125068/what-does-the-fd-cloexec-fcntl-flag-do >> >> > 3.Pe Windows trebuie sa dealocam memoria pentru parametrii in linie de >> > comanda trimisi catre CreateProcess() din procesul parinte pentru a >> > evita memory leak-uri ? >> >> Asta nu știu. > > Poti sa incerci sa rulezi cu DrMemory pe Windows sa vezi ce zice: > http://www.drmemory.org/ (free and open source). > Nu este permis să ai leak-uri de memorie. Trebuie să te gândești la o soluție să-i eliberezi. PS: te rog să dai un titlu sugestiv la thread-urile pornite pe listă. Adrian ___ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
Re: [so] (no subject)
În data de 23 martie 2015, 09:59, Vlad Dogaru via so a scris: > On Mon, Mar 23, 2015 at 07:36:32AM +, Sebastian ENE via so wrote: > > Salut, > > > > Am si eu o intrebare daca puteti sa ma lamuriti va rog : > > > > Pe Linux intr-un process copil aloc memorie inainte de a executa execv(). > > Dupa ce am executat execv() toata memoria procesului copil se suprascrie > > (asta inclusive heap-ul in urma alocarilor cu malloc, calloc..) > > 1.Apelul free() dupa execv() nu mai are sens deoarece s-a suprascris > > intreaga zona de memorie nu? > > După un execv() cu succes nu se mai execută nimic din codul de după. > Deci dacă pui free() după nu are sens, pentru că nu se ajunge la el. > > Are sens să apelezi free dacă execv() eșuează, dar nu cred că asta > întrebai. > > > 2.File descriptorii deschisi inainte de execv() se pierd, dar > > structurile aferente procesului care fac legatura cu inode-urile > > raman? > > File descriptorii nu se pierd decât dacă au flag-ul close on exec [1]. > Ceilalți rămân. This makes sense if you think about it, poți moșteni, > at the very least, stdin, stdout și stderr, ca să nu te trezești că ai > executat un program redirectat într-un fișier și apoi el face exec() > altuia care începe să scrie la consolă. > > [1] > http://stackoverflow.com/questions/6125068/what-does-the-fd-cloexec-fcntl-flag-do > > > 3.Pe Windows trebuie sa dealocam memoria pentru parametrii in linie de > > comanda trimisi catre CreateProcess() din procesul parinte pentru a > > evita memory leak-uri ? > Asta nu știu. > Poti sa incerci sa rulezi cu DrMemory pe Windows sa vezi ce zice: http://www.drmemory.org/ (free and open source). Andrei > > Vlad > ___ > http://ocw.cs.pub.ro/courses/so/info/lista-discutii ___ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
Re: [so] (no subject)
On Mon, Mar 23, 2015 at 07:36:32AM +, Sebastian ENE via so wrote: > Salut, > > Am si eu o intrebare daca puteti sa ma lamuriti va rog : > > Pe Linux intr-un process copil aloc memorie inainte de a executa execv(). > Dupa ce am executat execv() toata memoria procesului copil se suprascrie > (asta inclusive heap-ul in urma alocarilor cu malloc, calloc..) > 1.Apelul free() dupa execv() nu mai are sens deoarece s-a suprascris > intreaga zona de memorie nu? După un execv() cu succes nu se mai execută nimic din codul de după. Deci dacă pui free() după nu are sens, pentru că nu se ajunge la el. Are sens să apelezi free dacă execv() eșuează, dar nu cred că asta întrebai. > 2.File descriptorii deschisi inainte de execv() se pierd, dar > structurile aferente procesului care fac legatura cu inode-urile > raman? File descriptorii nu se pierd decât dacă au flag-ul close on exec [1]. Ceilalți rămân. This makes sense if you think about it, poți moșteni, at the very least, stdin, stdout și stderr, ca să nu te trezești că ai executat un program redirectat într-un fișier și apoi el face exec() altuia care începe să scrie la consolă. [1] http://stackoverflow.com/questions/6125068/what-does-the-fd-cloexec-fcntl-flag-do > 3.Pe Windows trebuie sa dealocam memoria pentru parametrii in linie de > comanda trimisi catre CreateProcess() din procesul parinte pentru a > evita memory leak-uri ? Asta nu știu. Vlad ___ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
[so] (no subject)
Salut, Am si eu o intrebare daca puteti sa ma lamuriti va rog : Pe Linux intr-un process copil aloc memorie inainte de a executa execv(). Dupa ce am executat execv() toata memoria procesului copil se suprascrie (asta inclusive heap-ul in urma alocarilor cu malloc, calloc..) 1.Apelul free() dupa execv() nu mai are sens deoarece s-a suprascris intreaga zona de memorie nu? 2.File descriptorii deschisi inainte de execv() se pierd, dar structurile aferente procesului care fac legatura cu inode-urile raman? 3.Pe Windows trebuie sa dealocam memoria pentru parametrii in linie de comanda trimisi catre CreateProcess() din procesul parinte pentru a evita memory leak-uri ? Va multumesc, Astept raspuns Sebastian Sent from Windows Mail ___ http://ocw.cs.pub.ro/courses/so/info/lista-discutii