Resumen prácticas
Pasaje a modo protegido
Bootloader de la materia
- Se copia el bootloader a la posición
0x1000
- Busca y carga el archivo kernel.bin contenido en el diskette y lo copia en la dirección
0x1200
- Se salta hacia la dirección
0x1200
y se ejecuta desde ahi
Segmentación
Segment selector
CS: Code segment SS: Stack segment DS: Data segment ES: (Extra) data segment GS & FS: General purpose segments
Segment descriptor
Pasar a modo protegido
- Completar la GDT
- Deshabilitar interrupciones
- Cargar el registro GDTR con la direcci+on base de la GDT
- Setear el bit PE del registro CR0
- FAR JUMP a la siguiente instrucción
- Cargar los registros de segmento (DS, ES, GS, FS y SS)
Interrupciones
- Offset que va a ser la dirección de memoria donde comienza la rutina de atención de interrupción.
- Segment selector que indica qupe selector debe utilizarse al ejecutar el código de la rutina.
- P,DPL que indican si la rutina se encuentra en memoria o no y el nivel de privilegio, respectivamente.
- Bits 8 a 12 de los bytes 4 a 7 indican el tipo específico de la compuerta de interrupción, el bit D indica si es una compuerta de 32 o 16 bits.
Ejemplo override interrupción para responder al teclado
Ejemplo de implementación de una syscall
Son interrupciones de software que no necesitan avisarle al PIC, por ejemplo para acceder a la syscall 10 se hace
Paginación
Info dump
Address virtual a física