П╠7Syntax10.Scn.FntПЪЪЪП╧УЮ╔ParcElemsAllocП╫Р═² ░Щ|ЪЪЪp╟╜VersionElemsAllocBeg$Syntax24b.Scn.FntEnglish DeutschEnglishEnglish Deutsch$Syntax14b.Scn.Fnt DokumentationSyntax14b.Scn.Fntp╟╜VersionElemsAllocEndSyntax24b.Scn.Fnt╨ЛЪЪ─}4юEPElemsAllocBMFv(XЪЪЪЪЪЪЪЪЪЪВВВ───Пй╕──ююю╓══───ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллщщ≥≥ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллщщ≥≥ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллщщ≥≥ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллщщ≥≥ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллНН≥≥ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллНН≥≥ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллНН≥≥ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллНН≥≥ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллЪЪ≥≥ллллллллллллллUUDDDDллллллллщщщщллллННUUDDDDUUDDллллллллллллллллDDUUллллллллллллллллллллллллUUллллЪЪЪЪллDDUUDDUUDDUUллллллллллллллллллллллллллллллллллллллллллллллллллллЪЪ≥≥ллллллллллллллUUDDDDллллллллщщщщллллННUUDDDDUUDDллллллллллллллллDDUUллллллллллллллллллллллллUUллллЪЪЪЪллDDUUDDUUDDUUллллллллллллллллллллллллллллллллллллллллллллллллллллЪЪ≥≥ллллллллллллллUUDDDDллллллллщщщщллллННUUDDDDUUDDллллллллллллллллDDUUллллллллллллллллллллллллUUллллЪЪЪЪллDDUUDDUUDDUUллллллллллллллллллллллллллллллллллллллллллллллллллллЪЪ≥≥ллллллллллллллUUDDDDллллллллщщщщллллННUUDDDDUUDDллллллллллллллллDDUUллллллллллллллллллллллллUUллллЪЪЪЪллDDUUDDUUDDUUDDUUDDщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщ≥≥ННллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллЪЪDDUUDDщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщ≥≥ННллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллЪЪDDUUDDщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщ≥≥ННллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллЪЪDDUUDDщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщ≥≥ННллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллЪЪSyntax14.Scn.Fnt╨ЛЪЪ─}4юEBMFv(XЪЪЪЪЪЪЪЪЪЪВВВ───Пй╕──ююю╓══───щщщщННННDDUUUUDDUUЪЪЪЪщщщщННННЪЪDDUUUUDDUUщщщщННННЪЪЪЪщщщщDDUUННННЪЪЪЪщщщщННННЪЪЪЪщщщщDDННННЪЪЪЪUUDDUUDDUUDDUUDDUUDDщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННщщщщННННDDUUUUDDUUЪЪЪЪщщщщННННЪЪDDUUUUDDUUщщщщННННЪЪЪЪщщщщDDUUННННЪЪЪЪщщщщННННЪЪЪЪщщщщDDННННЪЪЪЪUUDDUUDDUUDDUUDDUUDDщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННщщщщННННDDUUUUDDUUЪЪЪЪщщщщННННЪЪDDUUUUDDUUщщщщННННЪЪЪЪщщщщDDUUННННЪЪЪЪщщщщННННЪЪЪЪщщщщDDННННЪЪЪЪUUDDUUDDUUDDUUDDUUDDщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННщщщщННННDDUUUUDDUUЪЪЪЪщщщщННННЪЪDDUUUUDDUUщщщщННННЪЪЪЪщщщщDDUUННННЪЪЪЪщщщщННННЪЪЪЪщщщщDDННННЪЪЪЪUUDDUUDDUUDDUUDDUUDDщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщщщННННЪЪЪЪщщ≥≥ННDDUUЪЪЪЪщщщщDDUUUUDDUUННННЪЪЪЪщщщщННDDUUUUDDUUЪЪЪЪщщщщННННЪЪЪЪDDUUщщщщННННЪЪЪЪщщщщННННЪЪЪЪDDщщщщННННллллллллллллллллллллллллллллллллллллллллллллллллллЪЪЪЪщщщщННННЪЪЪЪщщ≥≥ННDDUUЪЪЪЪщщщщDDUUUUDDUUННННЪЪЪЪщщщщННDDUUUUDDUUЪЪЪЪщщщщННННЪЪЪЪDDUUщщщщННННЪЪЪЪщщщщННННЪЪЪЪDDщщщщННННллллллллллллллллллллллллллллллллллллллллллллллллллЪЪЪЪщщщщННННЪЪЪЪщщ≥≥ННDDUUЪЪЪЪщщщщDDUUUUDDUUННННЪЪЪЪщщщщННDDUUUUDDUUЪЪЪЪщщщщННННЪЪЪЪDDUUщщщщННННЪЪЪЪщщщщННННЪЪЪЪDDщщщщННННллллллллллллллллллллллллллллллллллллллллллллллллллЪЪЪЪщщщщННННЪЪЪЪщщ≥≥ННDDUUЪЪЪЪщщщщDDUUUUDDUUННННЪЪЪЪщщщщННDDUUUUDDUUЪЪЪЪщщщщННННЪЪЪЪDDUUщщщщННННЪЪЪЪщщщщННННЪЪЪЪDDщщщщННННллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллЪЪллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллЪЪллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллЪЪллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллЪЪnЪЪЪp╟╜#Syntax10.Scn.FntEnglish DeutschEnglishEnglish Deutsch#Syntax10.Scn.Fnt von Martin Rammerstorfer (MR) p╟╜ПЪЪЪП╧УЮ╔П╫Р═² ░ЩYЪЪЪp╟╜$Syntax24b.Scn.FntEnglish DeutschEnglishEnglish Deutsch#Syntax10.Scn.Fnt11<== Bitte Sprache w┐hlen / Please select language1p╟╜ПЪЪЪП╧УЮ╔П╫Р═² ░Щ└ЪЪЪp╟╜#Syntax10.Scn.FntEnglish DeutschEnglishEnglish Deutsch$Syntax16b.Scn.FntInhaltSyntax16b.Scn.Fntp╟╜Syntax12.Scn.FntУЪЪЪ  ≤StampElemsAlloc19 May 97ПЪЪЪП·\Ю╔П╫Р═² ░ЩщШЪЪp╟╜#Syntax10.Scn.FntEnglish DeutschEnglishEnglish Deutsch┼Syntax12b.Scn.FntЭЪЪЪют╟╜MarkElemsAlloc ЗЪЪЪ═├╟╜LinkElemsAlloc*dSyntax12.Scn.FntЗЪЪЪ═├╟╜*eЗЪЪЪ═├╟╜*fЗЪЪЪ═├╟╜*gЗЪЪЪ═├╟╜*hЗЪЪЪ═├╟╜*i ЗЪЪЪ═├╟╜*jЗЪЪЪ═├╟╜*kЗЪЪЪ═├╟╜*lЗЪЪЪ═├╟╜*mЭЪЪЪют╟╜ЗЪЪЪ═├╟╜*х"Syntax10.Scn.FntЭЪЪЪют╟╜,ЗЪЪЪ═├╟╜*╦ ПЪЪЪП╧УЮ╔ParcElemsAllocП╫Р═² ░ЩSyntax14b.Scn.FntMПЪЪЪП╧УЮ╔П╫Р═² ░ЩG1. Die Defragmentizer-Kommandos 1.1. Defragmentize 1.2. InstallTask 1.3. RemoveTask 1.4. Install 1.5. Remove 1.6. PrintObj 1.7. PrintPtr 1.8. PrintStat 1.9. SetNewToFirstFit 2. Implementierung des Defragmentizer 3. Autor Tut mir leid, die deutsche Version ist derzeit noch nicht g┐nzlich verf┘gbar Syntax12b.Scn.FntЭЪЪЪют╟╜MarkElemsAllocЗЪЪЪ═├╟╜LinkElemsAlloc*2 ЭЪЪЪют╟╜ ЗЪЪЪ═├╟╜*dЗЪЪЪ═├╟╜*eЗЪЪЪ═├╟╜*fЗЪЪЪ═├╟╜*gЗЪЪЪ═├╟╜*hЗЪЪЪ═├╟╜*i ЗЪЪЪ═├╟╜*jЗЪЪЪ═├╟╜*kЗЪЪЪ═├╟╜*lЗЪЪЪ═├╟╜*mЭЪЪЪют╟╜ЗЪЪЪ═├╟╜*х)ЭЪЪЪют╟╜,ЗЪЪЪ═├╟╜*╦ p╟╜ЛЪЪЪ ёZЮ╔юХr─й═Эь═² ░ЩЭЪЪЪют╟╜2 ЛЪЪЪП╧УЮ╔ю╡─й═Эь═² ░ЩНЪЪЪ ёZЮ╔─й═Эь═² ░ЩАЛЪЪЪ ёZЮ╔юХr─й═Эь═² ░ЩЭЪЪЪют╟╜dЭЪЪЪют╟╜eSyntax12i.Scn.Fnt`ЭЪЪЪют╟╜f AЭЪЪЪют╟╜g ЗЪЪЪ═├╟╜*fЭЪЪЪют╟╜hЦЭЪЪЪют╟╜i3ЭЪЪЪют╟╜jPЙЪЪЪП╧УЮ╔─ь╧─Рв═т▓═² ░Щ2 V &8ЛЪЪЪП╧УЮ╔═оp─й═Эь═² ░ЩЭЪЪЪют╟╜k╕ЙЪЪЪП╧УЮ╔─ь╧─Рв═т▓═² ░Щ,-/V+'ЛЪЪЪП╧УЮ╔═оp─й═Эь═² ░ЩЭЪЪЪют╟╜l QЭЪЪЪют╟╜m╠ЭЪЪЪют╟╜х(∙ЙЪЪЪП╧УЮ╔─ь╧─Рв═т▓═² ░Щ+.`(#ЛЪЪЪ ёZЮ╔═оp─й═Эь═² ░ЩЭЪЪЪют╟╜╦ ┘ЪЪЪp╟╜#Syntax10.Scn.FntEnglish DeutschEnglishEnglish Deutsch$Syntax16b.Scn.FntAutorp╟╜HщDocumentation of Defragmentizer  V V  by Martin Rammerstorfer (MR) <== Please select language / Bitte Sprache w┐hlen Contents () 0. Motivation 1. The Defragmentizer commands 1.1. Defragmentize 1.2. InstallTask 1.3. RemoveTask 1.4. Install 1.5. Remove 1.6. PrintObj 1.7. PrintPtr 1.8. PrintStat 1.9. SetNewToFirstFit 2. The implementation of the Defragmentizer 3. Author 0. Motivation In the Oberon System, there is a mark & sweep Garbage Collector implemented, which deletes all objects which are not anchored by any pointer in global modules, or on the stack. This results in many little free blocks between the objects on the heap, and so the free memory is splitted into many little fragments. If many objects are allocated and deleted, the fragmentation of the heap becomes a problem because of the missing of large free blocks. An allocation of large objects requires large contiguous blocks of memory. The Defragmentizer moves all objects from higher addresses on the heap to lower addresses, and so the mean size of the free blocks on heap grows (they move to higher addresses and melt together) and the allocated objects are more compact at the lower end of the heap. The memory-defragmentation of the heap has the following advantages: - better locality of the objects on the heap (less page- and cache-misses) - less problems with allocation of large objects (or loading of large modules) 1. The Defragmentizer commands 1.1. Defragmentize ["-"]number Forces one run of the Defragmentizer. If a number is specified, the defragmentation is forced number times. If the number is negative, during each run of the defragmentizer a point is printed to output. If there are not enough objects to defragmentize, the Defragmentizer stops. This command first calls the Garbage Collector (because it is pointless to move deletable objects), and then the Defragmentizer copies at most 512 objects to lower addresses, after that the Garbage Collector is called again (deletion of the original objects). If there is a number specified, the Garbage Collector and the Defragmentizer are called in alternating order. 1.2. InstallTask Installs a task, which calls the Defragmentizer periodically. 1.3. RemoveTask Removes the installed task. 1.4. Install Installs the Defragmentizer in the afterQueue of the module Kernel, i.e. the Defragmentizer is called after every Garbage-Collection (in this case it is not necessary to call the Garbage Collector prior to defragmentation). 1.5. Remove Removes the Defragmentizer from the afterQueue. 1.6. PrintObj Prints some information about the objects, which have been moved during the last run of the Defragmentizer. Format: Obj-Nr | Source-Adr | Destination-Adr | Size | References to this object | [Comment] If the object could not be moved, the destination address is zero, the object is not moved and the comment is printed. Comments: - Stack anchored: Object maybe anchored on the stack => not moved - No defrag: The address of the destination object has a higher address than the original object - Too large: Object is too large (> 32000 bytes) - Too much pointers: If there there are too many references to this object - Defragmentation complete:  1.7. PrintPtr Prints some information about the pointers, which point to a registered object. Format: Ptr-Nr | Pointer-Address | Obj-Nr | Source of pointer Source of pointer: - Module global pointer: Pointer is a global variable of a module - Pointer in record: Pointer is placed in a record on the heap - Pointer in finalize object: Pointer in an object that will be finalized - Pointer on the stack: Pointer is located on the stack (LONGINTs are regarded as candidates for pointers) - Modulepointer in typedesc: Pointer to a module in a typedescriptor - Modulepointer in importlist: Pointer to a module in an import list  1.8. PrintStat Prints some statistics about the last run of the Defragmentizer and the heap. 1.9. SetNewToFirstFit Sets the algorithm for allocating objects from a best fit algorithm (for objects lower than or equal 256 bytes) to a first fit algorithm. If this procedure is called, it is guaranteed, that the next NEW - command allocates the object at the lowest possible address on the heap. This procedure is useful if you want to allocate a small long-life object (<= 256 bytes) and you want to avoid unnecessary fragmentation of the heap. 2. The implementation of the Defragmentizer The Defragmentizer only moves objects which are arrays with pointers or records, which are not anchored from the stack. Not movable objects are: - Objects which contain the code of a module: Addresses in the code must not be changed - Arrays without pointer: These blocks of memory might contain the code of modules or LONGINTs with pointer semantics - Typedescriptors: --- - Objects which are anchored on the stack: LONGINTs with pointer semantics 3. Author Martin Rammerstorfer Anger 36 4201 Gramastetten e-mail: k3073e6@c210.edvz.uni-linz.ac.at