escrito en una versión ligeramente modificada de BCPL
(http://rabbit.eng.miami.edu/class/een521/bcpl-2.pdf)
para un emulador Intel 80486
- http://rabbit.eng.miami.edu/class/een521/hardware-1.pdf
- http://rabbit.eng.miami.edu/class/een521/hardware-2a.pdf
- http://rabbit.eng.miami.edu/class/een521/intel486vm.pdf
emulador escrito por DR. Stephen Murrell
(Código fuente: http://rabbit.eng.miami.edu/class/een521/een521.zip)
Dentro de este repetición:
- Start.B: Memoria virtual (para el 80846. 4GB Memoria = 512 páginas * 2048 palabras por página. Word = 32 bits)
Directorio de página con tablas de página para seis regiones separadas
del espacio de direcciones virtuales (código de usuario y sistema, montón y pila) - OS.B: controlador de fallas de página para cultivar un montón y pila
Capacidad para leer y ejecutar programas de usuario
EXIT () Llamada al sistema para restaurar el sistema FP, SP y PC, establecer banderas de CPU y reciclar páginas de proceso de usuario del usuario
Sistema de entrada del teclado basado en la interrupción
shell de línea de comando
(en proceso) cola de procesos ejecutables - NewVec.B: Asignación y reciclaje de montón con NewVec y Freevec
- file_system.b: sistema de archivos básico (Mkdir, CD, RMDIR, FCreate, Fdelete, Fopen, FClose, FWrite, Fread)
- sys_lib.b: API básica de llamadas de sistema para procesos de usuario
- Procesos de usuario XB, YB: para pruebas
Por ahora, las entradas de directorio se limitan a un bloque cada una (128 palabras = 512 bytes),
lo que significa que los directorios se limitan a 16 archivos y directorios infantiles. Estos niños
Los directorios también se limitan a 16 entradas, etc.
Cada directorio contiene:
- 512 bytes
- Hasta 16 estructuras de 28 bytes, cada una que describe un archivo o directorio infantil
- 6 bytes para el nombre de los directores
- 4 bytes para la ubicación en el disco de su directorio principal
Los archivos también sirven como soporte de lugar e incluyen un bloque de encabezado con
28 palabras de información descriptiva: nombre, permisos, tiempo creado, etc.
y 100 punteros al contenido del archivo.
100 punteros * 512 bytes por bloque = tamaño máximo de archivo 50kb
- Los directorios requieren una lectura de disco para abrir
- Los archivos toman un disco que lee para abrir el bloque de encabezado
Además, un disco se lee para acceder a cada uno de los hasta 100 bloques de contenido
El objetivo era tener un sistema de archivos básico (soporte para archivos y directorios)
Para probar el sistema operativo subyacente y atrapar cualquier problema
antes de optimizar. Las características que se están probando son
- Memoria virtual, directorio de página con tablas de página para seis regiones separadas
del espacio de direcciones virtuales (código de usuario y sistema, montón y pila) - Manejador de fallas de página para cultivar un montón y pila
- Capacidad para leer y ejecutar programas de usuario
- EXIT () Llamada del sistema para restaurar el sistema FP, SP y PC
Establecer banderas de CPU, reciclar páginas de proceso de usuario - Sistema de entrada del teclado basado en la interrupción
- Asignación y reciclaje de montón con NewVec y Freevec
En curso
- cola de procesos de usuario que se turnan para ejecutarse
- Prueba de Fread y FWrite
Después
- B+ árbol para acomodar archivos grandes con lecturas mínimas de disco