OS/2 i zarzadznie pamiecia

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