malloc/free

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Sobota Listopad 5 17:34:53 CET 2016


Jenze ucelem tohoto mechanismu virtualizace pameti neni ani tak 
defragmentace, jako poskytnuti prostredku pro dokonale multitaskovy OS, 
kdy kazda aplikace ma svuj privatni pametovy prostor v podstate 
libovolne mapovatelny.
Obecny popis najdete snadno, jestli se pak bude jednat o intel nebo ARM 
je IMHO celkem nepodstatne, je to velmi podobne.

Dne 05.11.2016 v 17:30 Jindrich Fucik napsal(a):
> OK, já bych se o těch intelech nehádal, už mi ten dějepis moc nejde, 
> takže se nemám o co opřít.
>
> Spíš jsem chtěl ukázat, že existují relativně jeddnoduché metody, jak 
> správce paměti může defragmentovat, aniž by tím poškodil vzhled 
> pointerů v uživatelském programu.
>
> Dne 5.11.2016 v 17:07 Pavel Hudecek napsal(a):
>> Tak tady bych se teda hádal: 286 i 386 mají selektory, liší se jen
>> formát položek tabulky. 286 umožňovala délku segmentu 0-64 kB
>> definovanou po B, od 386 se jedním bitem nastavuje, zda je to jako na
>> 286, nebo do 4 GB, ale velikost je pak dělitelná 4 kB. Virtualizace Vámi
>> popsaným způsobem šla už na 286, od 386 je výhodnější použít
>> stránkování, což je další virtualizační level mezi fyzickou pamětí a
>> segmenty.
>>
>> Velké ARMy mají taky nějaké takové memory managementy, ale zatím jim tak
>> dobře nerozumím, k Pentiu jsem měl knížky v češtině. Není něco takového
>> k ARMům?
>>
>> PH
>>
>> -----Původní zpráva----- From: Jindrich Fucik
>> Tady nám ještě schází jedno malé kouzlo - podívat se na architekturu
>> používaného procesoru.
>> Například intel - původně používal pointr ve tvaru segment:offset. Na
>> šestnáctibitech (8086) tedy dvě šestnáctibitová čísla: 1234:1234, přitom
>> platilo, že segment*konstanta+offset dávají fyzickou adresu.
>> Konstanta nebyla moc velká, tuším 16, takže se na jedno místo dalo
>> dosáhnout jako 0001:0000 a nebo 0000:0010.
>>
>> Pak přišla 286 která zavádí chráněný režim a segment už mohl být celý
>> unikátní a měl velokost 64k, takže do něj nemohl nikdo jiný a nedal se
>> naadresovat jinak. Pořád však leží jeden za druhým.
>>
>> A pak tu máme 386, ta místo segment zavádí slovo selector. Selector je
>> číslo bloku, který si přejeme dostat, ale existuje někde tabulka, která
>> říká, jakej je přepočet selector -> fyzická adresa, respektive, kde je
>> daný selector ve fyzické paměti. A aby se to nepletlo, tak zavádí i
>> výjimku, která říká, že v té paměti vůbec není. To se pak využilo pro
>> to, aby se obsah paměti vystěhoval třeba na disk a vznikl nám swap.
>> Prostě proces si chce sáhnout na selector 1234, podle tabulky se zjistí,
>> že není v paměti, tak se operační systém podívá kde je na disku, stáhne
>> ho do paměti a tvému procesu vrátí s úsměvem že je to fyzická adresa 
>> XYZ.
>>
>> A tímto dlouhým povídáním jsem chtěl říci to, že taková defragmentace
>> může probíhat, většinou je to vlastnost operačního systému, ale na
>> druhou stranu tato defragmentace nemá vliv na tvar pointerů, ale jen na
>> jejich přepis ze selectoru na fyzickou reprezentaci.
>>
>> Pochopitelně třeba na arduinu neprobíhá, tam je velmi jednoduchá správa
>> paměti.
>>
>> Dne 3.11.2016 v 1:28 Pavel Hudecek napsal(a):
>>> mějme program v C, běžící v MCU s několika desítkami kB RAM.
>>>
>>> Program čas od času alokuje nějakou paměť a jindy zas odalokuje.
>>> Předpokládejme, že se alokují kousky od několika B až do několika kB.
>>> Alokace a dealokace se dějí v obecně náhodném pořadí, tedy různé kousky
>>> paměti jsou alokovány na různou dobu.
>>>
>>> 1. Může se stát, že se paměť postupně fragmentuje tak, že od jistého
>>> okamžiku již nepůjde alokovat nějaké větší kousky, přestože celkové
>>> místo by bohatě stačilo?
>>> 2. Pokud se neděje (1), může se stát, že nějaký správce paměti bude v
>>> průběhu času již alokované kusy v případě nutnosti přesouvat, takže se
>>> budou měnit hodnoty pointerů na ně ukazujících?
>>> 3. Nebo to funguje úplně jinak? :-)
>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list




Další informace o konferenci Hw-list