Autor: Tomasz Szczesniak (Tomasz.Szczesniak_at_p134.f127.n480.z2.fidonet.org)
Data: Wed 05 Jul 2000 - 22:52:02 MET DST
Hello Grzegorz.
04 Jul 00 12:47, Grzegorz Szyszlo wrote to All:
GS> zmienne, ktore wplywaja na sposob przydzialu pamieci. w ten sposob
GS> kernel systemu nie jest zameczany tysiacami malych przydzialow ramu,
GS> gdyz z reguly jest to operacja czasochlonna.
To jedno, a po drugie są tworzone jakieś (w zalezności od przyjętego modelu
zarządzania pamięcię) struktury danych jądra dla teog procesu. Zreszta jak to
jes w OS/2: Czy każde odwołanie do *alloc() może tworzyć odrębny segment danych,
czli innymi słowy, jeden program może mieć jednocześćnie kilka segmentów danych,
cz wszystkie zaalokowane obszary są w jednym segmencie? Ta druga metoda jest
prostsza, deskryptor procesu ma tylko trzy wejścia (kod, dane i stos), ale
bardziej pracochłonna w zarządzaniu pamięcią (koniecznośc kopiowania czasami
duzych ilości danych przy alokacji pamięci), co prawda przy stronnicowaniu już
tak kiepsko nie jest. A pierwszym pzypadku dużo łatwiej zarządzac pamięcią, ale
struktury daych dla procesu maja zmienną długoąć (i są większe).
>> Czy lepiej jest zarezerowac pewien ciagly obszar pamieci z gory i
>> ew. kiedy stanie sie za maly zwiekszyc go realloc()?
GS> To jest oplacalne ale tylko wtedy, kiedy rezerwujesz obszary dla
GS> jednolitego
GS> rodzaju danych o jednakowej wielkosci. inaczej koszty zwiazane z
GS> algorytmem
GS> zarzadzania moga przewyzszac te, ktore sa standardowo (z reguly)
GS> wbudowane
GS> w *alloc() .
I o to mi m.in. chodzło, czy alloc() też zarządza pamięcią, czy jest tylko
prostym odwołaniem do odpowiedniej funkcji systemu.
>> (lista ma zmienna dlugosc, moze
>> miec 100 elementow, ale i 100 tysiecy)
GS> to niewazne. wazne by elementy byly jednakowej wielkosci.
Nie są. Gdyby były byłoby prościej - zadeklarowałbym tablicę. A tak muszę miec
tablicę wskaxników na elementy (u mnie kurat jest lista, bo wystarczy dostęp
sekwenycjny)
>> I drugie pytanie: Czy jest mozliwosc trzymania jakiegos fragmentu
>> pamieci (dane i kod) zawsze w pamiec fizycznej? (innymi slowy, zeby
>> system go nigdy nie wyswapowal?)
GS> jest taka mozliwosci, ale nie wiem na czym to polega.
Nie do zrealizowania w normlanym programie?
Tomasz
To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 15:28:04 MET DST