🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #4972

Re: Glos na temat Javy

#4972
From: Sektor van Skijlen
Date: Thu, 18 Feb 1999 16:38
74 lines
3579 bytes
W ostatnim odcinku, Andrzej Lewandowski naskrobal:
: Prosze zwrocic uwage na to ze w "prawdziwych" problemach czasu
: rezczywistego nawet zwykly, porzadny alloc uwaza sie za
: niedeterministyczny. I slusznie bowiem alloc przeszukuje liste blokow
: wolnych az znajdzie odpowiedni. Jak dluga ta lista bedzie, nikt nie
: wie.
Jest tez na to sposob, ktory widzialem w ostatniej wersji UltraEnvy. Nawet sam
do tego dorobilem pare podobnych kawalkow. Jest napisany w C, ale to nie
przeszkadza (C++ to dopiero dalby tu mozliwosci!). Wyglada to tak:

1. Kazda struktura, ktorej obiekty sa czesto przydzielane i zwalniana, oraz
trzymane w liscie ma swoj wskaznik na liste aktualnych i liste wolnych blokow:

	Affect* affect_list;
	Affect* affect_free;

2. Dodanie obiektu do listy polega na przydzieleniu mu pamieci i zainicjowaniu
go. Wykonuje to jedna z funkcji new_*():

Affect* new_affect( void )
{
	Affect* aff;
	if ( !affect_free )
		aff = alloc_perm( sizeof *aff );
	else
	{
		aff = affect_free;
		affect_free = affect_free->next;
	}

	bzero( aff, sizeof *aff );
}

Funkcja alloc_perm jest tu funkcja, ktora przydziela pamiec, ale juz jej nie
zwalnia. W sumie moznaby tez zastapic ja przez malloc().

Jak widac, funkcja alloc_perm jest tutaj wywolywana tylko dla pierwszych
obiektow, bo pozniej ich zwalnianie wyglada w ten sposob:

void free_affect( Affect * pAf )
{
    pAf->next   = affect_free;
    affect_free = pAf;
}


Jest tez oczywiscie wada tego rozwiazania. Polega ona mianowicie na tym, ze
zawsze program zajmuje maksymalna ilosc pamieci. Oczywiscie zysk na
efektywnosci tutaj jest ogromny, a to jest akurat aplikacja, ktora nie
przesadza z iloscia obiektow dynamicznych i co chwila je tworzy i usuwa.

Jasne jest jednak, ze srednio sie to do wielu rzeczy nadaje (np. wlasnie do
systemow czasu rzeczywistego).

: najchetniej uzywana struktura danych w takich systemach jest tablica.
: Struktury dynamiczne takie jak listy sa bowiem nieprzewidywalne pod
: wzgledem czasu wykonywanych na nich operacji.

Jasne, ale tablice niestety nie sa tak dynamiczne i nielatwo sie je rozszerza.

We wspomnianej aplikacji, w celu przyspieszenia znajdowania obiektow wg
klucza, obiekty, ktore maja byc wg tego klucza szukane, sa "pozawieszane" na
wskaznikach z hash_table.

: Polecam nastepujace [...]

Dziekuje.


-- 
 ... Win tarquen yre aubenk aerden jen backieten
     Fer napern ta seimen eim van yre broust...
 ... Michal 'Sektor' Malecki <mmalecki@technologist.com>
 ... Politechnika (jeszcze) Lodzka, Elektrotechnika/Informatyka Stosowana
Technical Details
Message-ID: <7ahfle$fk4$4@polonez.man.lodz.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!news.wnaft.agh.edu.pl!news.memax.krakow.pl!paa.gov.pl!news.swierk.pl!news.icm.edu.pl!news.task.gda.pl!news.man.lodz.pl!not-for-mail
References: <0328a2336221129CIERNIK@ciernik.onet.pl> <36CB564A.2B570613@interdata.com.pl> <36cb685d.245132@news-s01.ny.us.ibm.net> <36CB82B6.87B83E9E@interdata.com.pl> <36cb9cc8.13664688@news-s01.ny.us.ibm.net> <36CBDCCD.B41AC238@netcom.com> <36CBF5E2.25B9025C@ipipan.waw.pl> <36cc1147.351225@news-s01.ny.us.ibm.net>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!news.wnaft.agh.edu.pl!news.memax.krakow.pl!paa.gov.pl!news.swierk.pl!news.icm.edu.pl!news.task.gda.pl!news.man.lodz.pl!not-for-mail
From: Sektor van Skijlen <sektor@spam.org>
Newsgroups: pl.comp.objects
Subject: Re: Glos na temat Javy
Date: 18 Feb 1999 16:38:06 GMT
Organization: Metropolitan Area Network in Lodzi
Lines: 74
Message-ID: <7ahfle$fk4$4@polonez.man.lodz.pl>
References: <0328a2336221129CIERNIK@ciernik.onet.pl> <36CB564A.2B570613@interdata.com.pl> <36cb685d.245132@news-s01.ny.us.ibm.net> <36CB82B6.87B83E9E@interdata.com.pl> <36cb9cc8.13664688@news-s01.ny.us.ibm.net> <36CBDCCD.B41AC238@netcom.com> <36CBF5E2.25B9025C@ipipan.waw.pl> <36cc1147.351225@news-s01.ny.us.ibm.net>
NNTP-Posting-Host: zly.kis.p.lodz.pl
User-Agent: tin/pre-1.4-981225 ("Volcane") (UNIX) (SunOS/5.5.1 (i86pc))
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit