He estado pensando en escribir un sistema operativo para algunos de los procesadores ARM. Hay muchas computadoras populares de placa única con ARM MPU, por lo que simplemente quería comprar una de ellas (elegir una con más documentación abierta). Me sorprendí cuando descubrí que incluso las placas con suficiente memoria no tienen MPU con la Unidad de administración de memoria.
Como siempre he estado trabajando con procesadores i386 + y nunca con nada más (excepto algunos PIC de Microchip), ahora estoy confundido y no estoy seguro de si se puede escribir un sistema operativo que funcione y cuya funcionalidad no se vea limitada cuando se compara con los sistemas operativos escritos para MPU con MMU.
Podría pensar en algunas soluciones para "reemplazar" o "simular" MMU y tengo algunas preguntas:
- En los procesadores Intel en modos de 16 y 32 bits, hay una forma de usar segmentos y selectores de segmentos para usar diferentes bloques de memoria para diferentes tareas. Eso significa que podría cambiar el espacio de memoria al cambiar el contenido de los registros de segmento al hacer un cambio de tarea en x86. ¿Hay algún concepto general para la segmentación de memoria que pueda usarse en la arquitectura ARM?
- Al cargar un archivo de objeto vinculado en lugar de ejecutable, podría usar reubicaciones (arreglos) o posicionar código independiente para apuntar tareas en piezas de memoria de la misma manera que si asignara la memoria usando estructuras de paginación. ¿Sería esto lo suficientemente efectivo?
- También he leído algo sobre Unidades de protección de memoria en procesadores ARM. ¿Podrían ser útiles?
¿Hay alguna forma "habitual" de administrar tareas en sistemas sin MMU?
fuente