- Arquitectura microkernel.
- 100% 32 bits, usa caracteristicas avanzadas del procesador i386+ como protección de memoria, niveles de privilegio (ring 0 y 3), acceso a memoria virtual hasta 4GB, uso de estructuras GDT, LDT y TSS.
- Multitarea usando software stack switching, esto es, conmutación de contexto entre distintos niveles de privilegio guardando estado de proceso en pila.
- Planificación en base a prioridades las cuales internamente soportan round robin.
- Sistema de IPC mediante paso de mensajes (SEND, RECV, SENDRECV) entre procesos y con el mismo microkernel mkx86 (estilo rendezvous).
- Manejo de QUANTUM para expropiar CPU de procesos.
- Manejo de interrupciones (PIC8259 + IRQs + ISR + IDT) y transformadas en notificaciones a procesos.
- Manejo de excepciones para evitar la caída del sistema.
- Manejo de reloj de sistema PIT 8253 para soporte a tick y Quantums.
- Manejo de memoria básico segmentada con lista de bloques.
Con la ayuda de los procesos que corren en modo usuario se puede adicionar las siguientes características:
- API disponible, esto es, librería para interactuar parcialmente compatible con el Standard LIBC. Proximamente se publicará documentación.
- Sistema de archivos RAMFS el cual actualmente sopoerta FAT12 que corre en memoria RAM del proceso "FS".
- Driver de consola en modo usuario que maneja teclado/pantalla y se comunica con procesos por paso de mensajes.
- Soporta inicialización de procesos "on boot" mediante programa "INIT".
- Carga y ejecución de procesos desde RAMFS.
- Mini shell MKX86 de demostración.
Estas son las caracteristicas soportadas actualmente. La llamo "beta 1", pues es la primera versión sacada en publico y posiblemente se necesite hacer algunos fixes dependiendo de los bugs que los usuarios vayan reportando.
Mientras tanto no se tiene pensado adicionar otras caracteristicas al menos sea realmente necesario. El esfuerzo hasta el "beta 9" se pondrá en la documentación, difusión, fixes y porting de aplicaciones externas pequeñas.
Hay un semi plan de publicación que prentendo ir cumpliendo poco a poco.
- Presentación [OK]
- Caracteristicas[OK]
- Funcionamiento general del mkx86 [PEND]
- Compilando el mkx86 [PEND]
- API programación de aplicaciones [PEND]
- mkx86 y el bajo nivel [PEND]
- Kernel Internals mkx86 [PEND]
- Explicación del driver de consola [PEND]
- Otros ... ¿?¿??¿
Saludos,
Palabras clave: GCC, microkernel, mkx86, sistemas operativos
Comentarios
http://softwarelibre.org.bo/mod/mediastream/display.php?ident=14&ow
Quieren Logo, Basic, Python, PHP, Haskell, Pascal, ...? Estan invitados a hacer el primer 'port' ;)
Por otro lado, el cross compiling solo hice en ANSI/C y NASM desde Linux, pero si tienen un compilador para su "lenguaje preferido" que genere FLAT BINARY (No ELF), enlace librerias de forma estática y ademas puedas decir que no use las librerias nativas de Linux sino puedas apuntar a libc del mkx86, entonces puedes desarrollar una aplicacion en Linux/Windows y ejecutarla en el mkx86.
Mientras no pueda publicar un manual, por ahora solo puedo decir:
"Use the force, read the source" :)