Re: [so] [Tema3][Linux] Probleme testul 5 BSS

2019-04-16 Fir de Conversatie Razvan Crainea via so
Salut, Alex!

Logica ta de rezolvare este bună.
Este ok să mapezi fișierul direct la adresele virtuale, doar că asta
s-ar putea să nu funcționeze întotdeauna. Mai exact cred că ai avea
probleme la cazul în care ar trebui să mapezi date de dimensiune mai
mică decât o pagină. Ba mai mult, la bss nu ai ce mapa :).
Încearcă să faci puțin debugging și să vezi la ce adresă ar trebui să
înceapă zona de bss și să te asiguri că mapezi ce trebuie acolo.

Numai bine,
Răzvan


On Mon, Apr 15, 2019 at 3:25 PM Alex Cosmin Mihai via so
 wrote:
>
> Salut,
>
> Intampin probleme cu testul 5, mai exact cu verificarea ca octetii care sunt 
> in bss sunt initializati cu 0.
>
> Nu reusesc sa-mi dau seama unde anume nu setez cu 0 si ar trebui sa o fac.
>
> In principiu, calculez adresa de inceput a paginii in care se afla adresa 
> care genereaza SIGSEGV folosind ALIGN_DOWN, aflu in care segment se afla si 
> verific
> - daca este in totalitate in portiunea cuprinsa in executabil => mapez din 
> fisierul de la offsetul corespunzator la acea adresa page_size octeti
> - daca este partial in executabil, partial in portiunea dintre file_size si 
> mem_size ale segmentului => mapez din fisier doar portiunea cuprinsa in 
> interior si restul las mapat la o zona plina cu 0 din memoria fizica
> - daca este in totalitate in afara fisierului => mapez adresa de inceput a 
> paginii la un frame plin de 0
>
> Este ok daca mapez direct fisierul la adresele virtuale? Practic tot se 
> copiaza pana la urma in memoria fizica continutul fisierului.
>
> Daca ati putea sa va uitati peste codul urcat pe GitLab 
> (alexandru.mihai1708), v-as fi foarte recunoscator!
>
> Numai bine,
> Alexandru Mihai
> ___
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii



--
Răzvan Crainea
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

[so] [Tema3][Linux] Probleme testul 5 BSS

2019-04-15 Fir de Conversatie Alex Cosmin Mihai via so
Salut,

Intampin probleme cu testul 5, mai exact cu verificarea ca octetii care
sunt in bss sunt initializati cu 0.

Nu reusesc sa-mi dau seama unde anume nu setez cu 0 si ar trebui sa o fac.

In principiu, calculez adresa de inceput a paginii in care se afla adresa
care genereaza SIGSEGV folosind ALIGN_DOWN, aflu in care segment se afla si
verific
- daca este in totalitate in portiunea cuprinsa in executabil => mapez din
fisierul de la offsetul corespunzator la acea adresa page_size octeti
- daca este partial in executabil, partial in portiunea dintre file_size si
mem_size ale segmentului => mapez din fisier doar portiunea cuprinsa in
interior si restul las mapat la o zona plina cu 0 din memoria fizica
- daca este in totalitate in afara fisierului => mapez adresa de inceput a
paginii la un frame plin de 0

Este ok daca mapez direct fisierul la adresele virtuale? Practic tot se
copiaza pana la urma in memoria fizica continutul fisierului.

Daca ati putea sa va uitati peste codul urcat pe GitLab
(alexandru.mihai1708), v-as fi foarte recunoscator!

Numai bine,
Alexandru Mihai
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii