Gesimuleerd RAM-geheugen

Crowl.ramworker.js simuleert RAM-geheugen in een browser via een web worker. 

Doel

De code stelt je in staat om een gesimuleerd geheugenblok in een webomgeving te beheren, wat nuttig kan zijn voor:

  1. Het ontwikkelen van onderwijssoftware die studenten laat zien hoe geheugenbeheer werkt.
  2. Testen van geheugengerelateerde algoritmen in een gecontroleerde omgeving.
  3. Simuleren van geheugenoperaties voor ontwikkeling zonder directe toegang tot systeemhardware.
  4. Wegschrijven van tussentijdes data in online games
  5. ...

Voordelen en mogelijkheden

  • Isolatie en veiligheid: Draait in een web worker, dus het beïnvloedt de hoofdthread van de browser niet, wat de gebruikerservaring soepel houdt.
  • Flexibiliteit: Kan worden aangepast aan verschillende geheugengroottes en -configuraties.
  • Educatief: Biedt een visueel en interactief begrip van hoe gegevens worden opgeslagen en beheerd in het geheugen.

Functies van de simulatie

  1. initializeMemory(size): Initialiseert het geheugen van de opgegeven grootte.
  2. writeStringToMemory(address, text): Schrijft een string op een specifiek geheugenadres.
  3. readStringFromMemory(address): Leest een string vanaf een specifiek geheugenadres.
  4. clearMemoryAtAddress(address): Wist het geheugen op een specifiek adres.
  5. getMemorySize(): Geeft de totale grootte van het gesimuleerde geheugen terug.
  6. findStrings(): Vindt alle strings in het geheugen, inclusief hun adressen en lengtes.
  7. clearStringAtAddress(address): Wist een string beginnend bij een specifiek adres.
  8. getLastWrittenAddress(): Geeft het laatste adres terug waar gegevens zijn geschreven.

Voorbeeldcode voor gebruik 

  1. Initialiseren van de Worker: We maken een instance van de web worker aan met het correcte script, "crowl.ramworker.js".
  2. Communiceren met de Worker: Om interactie te hebben met de worker, verstuur je berichten met postMessage en luister je naar binnenkomende berichten met een onmessage event handler.
// Maak een nieuwe instance van de Worker
const SimRam = new Worker("crowl.ramworker.js");

// Luister naar berichten vanuit de Worker
SimRam.onmessage = function(e) {
    console.log("Bericht ontvangen van SimRam:", e.data);
    
    let gelezenString = e.data.text;
    console.log("Gelezen string:", gelezenString);
};

// Initialiseer geheugen van 1MB
SimRam.postMessage({ action: 'initialize', size: 1024 * 1024 });

// Schrijf een string in het geheugen
SimRam.postMessage({ action: 'writeString', address: 100, text: 'Hallo, wereld!' });

// Lees de string terug
SimRam.postMessage({ action: 'readString', address: 100 });

// Clear Memory at Address
SimRam.postMessage({ action: 'clearMemory', address: 100 });

// Get Memory Size
SimRam.postMessage({ action: 'getMemorySize' });

// Find Strings
SimRam.postMessage({ action: 'findStrings' });

// Clear String at Address
SimRam.postMessage({ action: 'clearString', address: 100 });

// Get Last Written Address
SimRam.postMessage({ action: 'getLastWrittenAddress' });
Volgende pagina