Autor: Grzegorz Szyszlo (znik_at_avalon.wbc.lublin.pl)
Data: Tue 04 Jul 2000 - 12:47:38 MET DST
Tomasz Szczesniak wrote:
>
> Hello All.
>
> Jak os/2 zarzadza przydzielaniem i zwalnianiem pamieci?
> Jak mam liste kilkudziesieciu tysiecy kilkunastobajtowych elementow i na kazdy
> rezerwuje pamiec odzielna funkcja malloc()
w rzeczywistosc, funkcje typu *alloc() jesli rezerwua duzy kawalek ramu,
pobieraja go bezposrednio od systemu. jesli zas kawalek ramu jest maly,
pobieraja wiecej (zadeklarowany obszar), i tna go sobie na malutkie
fragmenciki. od funkcji bibliotecznych zalezy w jaki sposob jest to
robione.
w kompilatorach GNU C, stosowane sa dodatkowe zmienne, ktore wplywaja
na sposob przydzialu pamieci. w ten sposob kernel systemu nie jest
zameczany tysiacami malych przydzialow ramu, gdyz z reguly jest to
operacja czasochlonna.
> to czy w rzeczywistosci struktury
> jadra zwiazane z istnieniem tylu fragmentow pamieci nie pozeraja jej drugie
> tyle?
jesli przydzielasz po 4ry bajty, to tak :)))
> Czy lepiej jest zarezerowac pewien ciagly obszar pamieci z gory i ew.
> kiedy stanie sie za maly zwiekszyc go realloc()?
To jest oplacalne ale tylko wtedy, kiedy rezerwujesz obszary dla
jednolitego
rodzaju danych o jednakowej wielkosci. inaczej koszty zwiazane z
algorytmem
zarzadzania moga przewyzszac te, ktore sa standardowo (z reguly)
wbudowane
w *alloc() .
>(lista ma zmienna dlugosc, moze
> miec 100 elementow, ale i 100 tysiecy)
to niewazne. wazne by elementy byly jednakowej wielkosci.
> 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?)
jest taka mozliwosci, ale nie wiem na czym to polega.
-- /===================================\ oOOo (C) Publikacja tego | http://avalon.wbc.lublin.pl/~znik/ \===\__/==\ artykulu lub jego | Grzegorz Szyszlo mailto:znik_at_wbc.lublin.pl | fragmentow w Gaz.Wyb. \==============================================/ surowo wzbroniona.
To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 15:28:02 MET DST