Basic memory management werkt! Een grote stap voorwaarts voor Vireo. Hiermee kunnen we enkele PCI-drivers maken en ondersteunen, kunnen we drive management maken en kunnen we later programma's en bestanden uitvoeren/openen. Maar dit is pas het begin. Na deze inleiding volgt zo’n 600 woorden uitleg over wat memory management nou eigenlijk inhoudt, als je dit wilt skippen kan je verder lezen bij ‘Dan nu eindelijk de update’.
Wat is (of gebeurd er met) memory management? Ik ben niet heel erg solid met uitleggen dus ik hoop dat dit goed komt… Memory, een verkorte aanduiding van RAM (Random Access Memory) is eigenlijk gewoon tijdelijke opslag. Je kan er letterlijk mee doen wat de naam zegt. Random Access (willekeurige toegang) betekent dat je op elk gewenst adres (<-- komen we later nog op terug) data kan lezen en schrijven. RAM houdt alleen gegevens ‘vast’ als er stroom op staat, in andere woorden: alleen als je computer aan staat. Daarna, is alles weg.
De simpele uitleg van wat memory management nou eigenlijk is, met behulp van een voorbeeld: Het besturingssysteem krijgt de vraag van een programma om een plek te zoeken voor bepaalde data, laten we als voorbeeld de tekst “Hello, world!†nemen (elk karakter is 1 byte). In dit voorbeeld hoeft de tekst alleen tijdelijk opgeslagen te worden en kan dus prima in RAM opgeslagen worden. Het zijn 13 karakters (spaties tellen mee) dus dat zijn 13 bytes. Het besturingssysteem moet vervolgens een plekje van 13 bytes zien te vinden die nog niet gebruikt wordt door een ander programma. Als het besturingssysteem die vindt dan moet hij het op die plek neerzetten, deze plek heeft een adres in een getal. Aangezien dit een 32-bits besturingssysteem is kan dat een adres zijn van 0 tot 2^32. Het adres wordt meestal afgebeeld in een hexadecimaal getal dus het minst is 0x00000000 en het grootste adres is 0xFFFFFFFF. Maar aan de andere kant, als het besturingssysteem dit niet vindt moet het dat programma stoppen en een error geven.
Dan, waarom dit slechts het begin is: Vireo ondersteund nu alleen physical memory management, terwijl virtual management veiliger is. Voor het physical/virtual gedeelte moeten we terug naar het vorige voorbeeld. Stel het besturingssysteem heeft een plek gevonden, in physical memory management zou je het adres gelijk terug geven aan het programma. Het programma kan vervolgens ermee doen wat het wil, maar aangezien het systeem er geen limieten voor kan opstellen kan het door schrijven en ook de ruimte van een ander programma overnemen. Natuurlijk ideaal voor een virus: Het enige wat het hoeft te doen is overal een 0 zetten vanaf het adres wat het kreeg en je systeem is onbruikbaar. Zeker aangezien het systeem moet bijhouden waar adressen zijn, dus alle adressen na dat adres wat het systeem aan het virus gegeven heeft wijzen nu naar de data van het virus, het systeem zal nooit weten dat het virus dat gedaan heeft want volgens het systeem is dat van een ander programma. Virtual memory management, paging, werkt anders. Terug naar het originele voorbeeld, het adres dat het systeem gevonden heeft hoeft niet het adres te zijn die het programma krijgt. Het programma krijgt dan een ander adres, maar het systeem houdt een soort tabel bij met welk physical adres bij welk virtuele adres hoort. Het programma kan ook alleen dingen lezen en schrijven in zijn eigen stukje land. Het zal nooit verder kunnen schrijven dan zichzelf dus een virus zoals hierboven beschreven heeft weinig nut.
Wat is (of gebeurd er met) memory management? Ik ben niet heel erg solid met uitleggen dus ik hoop dat dit goed komt… Memory, een verkorte aanduiding van RAM (Random Access Memory) is eigenlijk gewoon tijdelijke opslag. Je kan er letterlijk mee doen wat de naam zegt. Random Access (willekeurige toegang) betekent dat je op elk gewenst adres (<-- komen we later nog op terug) data kan lezen en schrijven. RAM houdt alleen gegevens ‘vast’ als er stroom op staat, in andere woorden: alleen als je computer aan staat. Daarna, is alles weg.
De simpele uitleg van wat memory management nou eigenlijk is, met behulp van een voorbeeld: Het besturingssysteem krijgt de vraag van een programma om een plek te zoeken voor bepaalde data, laten we als voorbeeld de tekst “Hello, world!†nemen (elk karakter is 1 byte). In dit voorbeeld hoeft de tekst alleen tijdelijk opgeslagen te worden en kan dus prima in RAM opgeslagen worden. Het zijn 13 karakters (spaties tellen mee) dus dat zijn 13 bytes. Het besturingssysteem moet vervolgens een plekje van 13 bytes zien te vinden die nog niet gebruikt wordt door een ander programma. Als het besturingssysteem die vindt dan moet hij het op die plek neerzetten, deze plek heeft een adres in een getal. Aangezien dit een 32-bits besturingssysteem is kan dat een adres zijn van 0 tot 2^32. Het adres wordt meestal afgebeeld in een hexadecimaal getal dus het minst is 0x00000000 en het grootste adres is 0xFFFFFFFF. Maar aan de andere kant, als het besturingssysteem dit niet vindt moet het dat programma stoppen en een error geven.
Dan, waarom dit slechts het begin is: Vireo ondersteund nu alleen physical memory management, terwijl virtual management veiliger is. Voor het physical/virtual gedeelte moeten we terug naar het vorige voorbeeld. Stel het besturingssysteem heeft een plek gevonden, in physical memory management zou je het adres gelijk terug geven aan het programma. Het programma kan vervolgens ermee doen wat het wil, maar aangezien het systeem er geen limieten voor kan opstellen kan het door schrijven en ook de ruimte van een ander programma overnemen. Natuurlijk ideaal voor een virus: Het enige wat het hoeft te doen is overal een 0 zetten vanaf het adres wat het kreeg en je systeem is onbruikbaar. Zeker aangezien het systeem moet bijhouden waar adressen zijn, dus alle adressen na dat adres wat het systeem aan het virus gegeven heeft wijzen nu naar de data van het virus, het systeem zal nooit weten dat het virus dat gedaan heeft want volgens het systeem is dat van een ander programma. Virtual memory management, paging, werkt anders. Terug naar het originele voorbeeld, het adres dat het systeem gevonden heeft hoeft niet het adres te zijn die het programma krijgt. Het programma krijgt dan een ander adres, maar het systeem houdt een soort tabel bij met welk physical adres bij welk virtuele adres hoort. Het programma kan ook alleen dingen lezen en schrijven in zijn eigen stukje land. Het zal nooit verder kunnen schrijven dan zichzelf dus een virus zoals hierboven beschreven heeft weinig nut.
Laatst bewerkt door een moderator: