Autor: Przemyslaw Dobrowolski (dobrawka_at_asua.org.pl)
Data: Mon 03 Jul 2000 - 23:23:35 MET DST
On Mon, 3 Jul 2000 18:11:09 +0200 (MET DST), Tomasz Szczesniak wrote:
>Jak os/2 zarzadza przydzielaniem i zwalnianiem pamieci?
>Jak mam liste kilkudziesieciu tysiecy kilkunastobajtowych elementow i na kazdy
>rezerwuje pamiec odzielna funkcja malloc() to czy w rzeczywistosci struktury
>jadra zwiazane z istnieniem tylu fragmentow pamieci nie pozeraja jej drugie
>tyle? Czy lepiej jest zarezerowac pewien ciagly obszar pamieci z gory i ew.
>kiedy stanie sie za maly zwiekszyc go realloc()? (lista ma zmienna dlugosc, moze
>miec 100 elementow, ale i 100 tysiecy)
Odpowiem w bardzo dużym skrócie/uogólnieniu:
Nie używasz API OS/2 - DosAlloc(Shared)Mem, DosSetMem itd. Gdybyś używał w/w
funkcje to mogłoby się zdażyć że zabraknie Ci pamięci - DosAllocMem alokuje
_conajmniej_ 64kB pamięci. Lecz funkcją DosSetMem możesz sobie ją podzielić na
kawałki.
Większość (wszystkie ;-) OeSowych kompilatorów (bibliotek runtime) funkcje malloc
tworzy z DosAllocMem i DosSetMem, więc nie musisz martwić się o obszary pamięci
ponieważ pomyśleli o tym wszystkim twórcy OS/2 i kompilatora (ów);-)
A jeżeli masz dużo czasu to możesz sam napisać funkcje alokacji pamięci ale i tak wg
Twojego myślenia zrobisz identycznie jak Twoi poprzdnicy ;-)
>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 możliwość lecz tylko z poziomu sterownika.
Z drugiej strony bardzo dobrze, że tak nie ma tak jak chciałbyś zrobić, bo na przykład
jeśli każdy z programistów pomyśli że program będzie chodził szybciej jak będzie coś
przetrzymywane w pamięci fizycznej to bardzo szybko pamięci fizycznej by zabrakło, a
z drugiej strony to w jaki sposób wyobrażałbyś sobie obsługę pamięci przez jądro
(stabliność), jeśli programy z ringu3 będą sobie korzystały bez żadnych ograniczeń z
ringu0?
--- *Przemek/2* - dobrawka_at_asua.org.pl - ICQ: 18642806 Asua Programmers http://www.asua.org.pl TeamOS/2pl http://www.teamos2.org.pl This OS/2 system uptime is 0d 0h 28m 48s 710ms (en).
To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 15:28:02 MET DST