🇮🇹 Italiano · 🇬🇧 English
▶ Provalo online: https://manzolo.github.io/OsSimulator/?lang=it
Un hub didattico interattivo in due piani per capire come un sistema operativo sparte un computer — la memoria e il tempo di CPU — mostrando ogni decisione passo per passo. Motori scritti a mano, nessuna dipendenza: il livello fissa il carico di lavoro, tu scegli la politica, e guardi l'allocazione riempire l'heap, i page fault caricare e sfrattare pagine, il diagramma di Gantt riempirsi tick dopo tick.
È un fratello della collana EDU-*, insieme a EDU-16 ASM Playground, EDU-NUM, EDU-NET, EDU-REGEX, EDU-SQL, EDU-GIT, EDU-CRYPTO, EDU-NN e EDU-ELN.
- Gestione della memoria — distribuisci e recupera memoria su un heap (first/best/worst-fit, frammentazione, coalescing), poi pagina la memoria virtuale dentro e fuori (page table, page fault, sostituzione FIFO / LRU / ottima).
- Scheduling della CPU — dai i processi in pasto a una CPU e guarda il diagramma di Gantt riempirsi: FCFS, SJF, SRTF, Round Robin e a priorità — e vedi come cambia il tempo di attesa.
Possedere il motore è tutto il punto: l'allocatore, il paginatore e lo
scheduler sono discreti e deterministici, in */js/core/, e verificati nei
test contro valori calcolati a mano. Ogni motore emette un flusso di eventi
neutri rispetto alla lingua (una scansione, un page fault, uno switch di
contesto) a cui la UI si iscrive: un tick = una micro-operazione, così puoi
guardare al rallentatore o macinare in turbo.
Non serve alcun prerequisito: alla prima visita si apre una guida introduttiva che spiega da zero — con analogie e un glossario — cosa fa un sistema operativo, cosa sono processi, heap, pagine, page fault, scheduler e Gantt. Resta sempre raggiungibile dal bottone in alto.
Ogni piano ha livelli guidati con verifica automatica (su carichi di lavoro anche nascosti, così una politica cablata sul caso visibile fallisce quelli nascosti) e una sandbox libera.
Sito statico puro, moduli ES, zero build, zero dipendenze:
npm run serve # python3 -m http.server 8000
# apri http://localhost:8000
Deploy su GitHub Pages da main/root così com'è (.nojekyll, percorsi relativi).
npm test # node --test — motori e livelli dei due piani
npm run e2e # smoke test headless su Chrome (hub + i due piani)
MIT © Andrea Manzi (manzolo)