Ho pensato di scrivere un sistema operativo per hobby per alcuni processori ARM. Esistono molti computer a scheda singola popolari con ARM MPU, quindi volevo semplicemente acquistarne uno (scegliendone uno con più documentazione aperta). Sono stato sorpreso quando ho scoperto che anche le schede con memoria davvero sufficiente non hanno MPU con Memory Management Unit.
Dato che ho sempre lavorato con processori i386 + e mai niente altro (tranne alcuni PIC Microchip), ora sono confuso e non sono sicuro se si può scrivere un sistema operativo funzionante la cui funzionalità non sarebbe limitata se confrontata con i sistemi operativi scritti per MPU con MMU.
Potrei pensare a poche soluzioni per "sostituire" o "simulare" MMU e ho alcune domande:
- Su processori Intel in modalità a 16 e 32 bit esiste un modo di utilizzare segmenti e selettori di segmento per utilizzare diversi blocchi di memoria per attività diverse. Ciò significa che potrei cambiare lo spazio di memoria modificando il contenuto dei registri di segmento quando eseguo un cambio di attività su x86. Esistono concetti generali per la segmentazione della memoria che potrebbero essere utilizzati sull'architettura ARM?
- Caricando un file oggetto collegato anziché eseguibile, potrei usare rilocazioni (correzioni) o posizionare un codice indipendente per indirizzare le attività su pezzi di memoria allo stesso modo come se mappassi la memoria usando strutture di paginazione. Sarebbe abbastanza efficace?
- Ho anche letto qualcosa sulle Memory Protection Unit sui processori ARM. Questi potrebbero essere utili?
Esistono modi "usuali" per gestire le attività sui sistemi senza MMU?