[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [PROGRAMMERING] [C++]heap allokering?



On Thu, 2004-08-12 at 00:43, Peter Makholm wrote:
> Bo Simonsen <sslug@sslug> writes:
> 
> > Ja korrekt, men hvad gør man i single process operativ systemer? Der må
> > formentlig benyttes ovenstående princip.. Altså central registering af
> > memory allokeringer.. men selvføglelig ikke i OS'et men i selve
> > processen.
> 
> Aner det ikke, jeg har aldrig kodet til DOS. Mit gæt er noget ala:

> Man slår virtuel hukommelse fra, indlæser programmet på adresse
> 0x400000 og giver programmet frit råderum derover. Så må programmøren
> selv fedte med detaljerne.

Aha. (I DOS o.l. er malloc/free implementeret). 

> >> Det kan nemlig være relativt dyrt at bede kernen om mere eller
> >> mindre hukommelse, derfor forsøger man ikke at gøre det for tit.
> >
> > Det er vel kun hvis heap har behov for at vokse?
> 
> Jeg ved det faktisk ikke. Jeg kan godt forestille mig måder at styre
> hukommelse på hvor det tager lige så meget bogholderi at frigive en
> side hukommelse som at allokerer den.

free() er nok lidt mere end en noop. Måske bliver det smidt i en kø for
frigivning.. Er formentlig ikke ligeså performerence krævende.

> Men hvis man frigiver hukommelse til kernen for tidligt, så kommer man
> let ud for at ret hurtigt skulle bede om en ny blok. Derfor trimmer
> man kun når man har et vist overskud i toppen af heapen.

Problemet med operativsystemer er at programmørene implementere det som
de lyster, så er det svært for studerende/e.l. at hitte rede i hvordan
at skidtet rent faktisk virker.

> > sbrk er også nævnt i ikke-ansi udgaven af K&R.
> 
> Tilgengæld er den bevidst udeladt af POSIX.1

Pga. malloc()-familien kun er brugt ?

> > Men det kan da ikke være rigtigt at et hukommelseskrævet program bliver
> > nødt til at stoppe under kørselen fordi der ikke er mere hukommelse pga.
> > free's ikke bliver registeret. Eller misforstår jeg dig?
> 
> Hvis man programmerer embedded-ting uden MMU skal man ikke forvente at
> kunne lave general-purpose programmering.

Jeg det kan jeg høre. :)

Bo




 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 22:44 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *