La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Sistemes Operatius (S.O.) Onion: Mecanisme d'entrada al sistema

Presentaciones similares


Presentación del tema: "Sistemes Operatius (S.O.) Onion: Mecanisme d'entrada al sistema"— Transcripción de la presentación:

1 Sistemes Operatius (S.O.) Onion: Mecanisme d'entrada al sistema
Enginyeria en Informatica Facultat d'Informatica de Barcelona Universitat Politecnica de Catalunya

2 Practica d'Onion: 1a entrega
fluxes.c onionlib.lib boot.c sistema.c bfs.c nucli.c

3 Estructura de la practica
3 fitxers donats salres.asm solib.lib / rutines.h new_maq.asm / new_maq.h 6 fitxers a generar boot.c sistema.c bfs.c nucli.c onionlib.lib fluxes.c Mes tots els .h que calguin! salres.h sistema.h / onionlib.h bfs.h ...

4 salres.asm int *salvar() void restaurar(void)
Guarda el context de l’usuari a la pila Retorna un apuntador al context salvat Caldra modificar-la mes endevant ! void restaurar(void) Restaura el context de l’usuari de la pila NOTA: cal que us feu el fitxer de capcelera Altrament el compilador enten: int salvar()

5 solib.lib / rutines.h Inhibir i desinhibir les interrupcions
int inhibir() / void desinhibir(int flags) Rutines d'acces als dispositius hardware escriure_pantalla_hw llegir_teclat_hw Rutines de gestio de cues ini_cua insertar cap primer

6 new_maq.asm / new_maq.h Dades i rutines necessaries per accedir als dispositius Taula de mapeig del teclat Taula d’adreces de pantalla Rutina d'inicialitzacio de la pantalla int *ini_pantalla()

7 boot.c Inhibir interrupcions
Inicialitzar totes les estructures del sistema Pantalla Vector d’interrupcions Desinhibir interrupcions Canvi a mode usuari Perdua de tots els privilegis de sistema acces a estructures de dades Execucio del proces inicial

8 sistema.c Punt d’entrada al sistema (INT 64)
(no cal inhibir les interrupcions) Salvar Accedir al registre AX Atendre peticio d’usuari Restaurar Escriure pantalla (sistema) Recollir parametres de la pila rsi_trap() { ctx = salvar (); switch (reg_AX) { (...) case N: escriure_pantalla_sis (); break; } restaurar(); escriure_pantalla_sis ( ??? ) { ... }

9 bfs.c sistema BFS nucli Escriure pantalla (BFS)
Passa directament a nivell nucli sistema BFS nucli

10 nucli.c 80 columnes 25 files Escriure pantalla (nucli)
Comprovar parametres Coordenades de pantalla valides Accedir al dispositiu Retorn de resultats A traves del registre AX de l’usuari Caldra accedir al CONTEXT 80 columnes 25 files

11 onionlib.lib Programacio en assemblador de la llibreria del sistema
Indicar el servei al registre AX Cridar a la instruccio de TRAP Una rutina per cada crida a sistema Llibreria del sistema (Onion sobre i8086) public _CAS _CAS proc far . MOV AX, num_servei INT 64 RET _CAS end proc

12 fluxes.c codi dades No disposem d’un carregador (loader)
Sistema de fitxers Gestio de memoria Codi dels processos d’usuari Inclos el proces inicial codi dades

13 Estat de la pila en una CAS Onion (I)
Crida a la llibreria del sistema Empilar parametres Empilats de dreta a esquerra Registres CS:IP A recordar: Empilem el parametres en cridar a la subrutina usuari() { . CAS(par_1, par_2) } CS:IP usuari() par_1 par_2 Sistemes Operatius Mecanismes d'entrada al S.O.

14 Estat de la pila en una CAS Onion (II)
Executar crida a sistema Indicar el servei que es desitja Modificar registre AX Executar instruccio TRAP Empilar PSW public _CAS _CAS proc far . MOV AX, num_servei INT 64 RET _CAS end proc CS:IP _CAS PSW CS:IP usuari() par_1 par_2 Sistemes Operatius Mecanismes d'entrada al S.O.

15 Estat de la pila en una CAS Onion (III)
Executar ruitna d'atencio als traps Fer l'enllac dinamic push BP mov BP, SP Reservar espai per variables locals i temporals Salvar context a la pila Accedir al registre AX seleccionar el servei Cridar a la ruitna de servei sense parametres nomes CS:IP rsi_trap() context AX locals i temporals rsi_trap() rsi_trap() { ctx = salvar (); switch (reg_AX) { (...) case N: rut_servei_N(); break; } restaurar(); BP CS:IP _CAS PSW CS:IP usuari() par_1 par_2 Sistemes Operatius Mecanismes d'entrada al S.O.

16 Estat de la pila en una CAS Onion (IV)
Programem la rutina de servei amb parametres Fem l'enllac dinamic Recollim els parametres amb el BP a partir de Declarem un parametre de mes, per saltar el que no volem struct deixalles { int brossa[N]; } A recordar: Els parametres es recullen en executar la rutina rutina_servei_N( deixalles, par_1, par_2) { (...) } BP IP:CS rsi_trap() context locals i temporals rsi_trap() BP CS:IP _CAS PSW CS:IP usuari() par_1 par_2 Sistemes Operatius Mecanismes d'entrada al S.O.

17 Practica d'Onion: 1a entrega
fluxes.c fluxe1 onionlib.lib escriure_pantalla boot.c main() sistema.c rsi_trap escriure_pantalla_sis bfs.c escriure_pantalla_bfs nucli.c escriure_pantalla_nuc new_maq.asm ini_pantalla salres.asm salvar restaurar solib.lib escriure_pantalla_hw solib.lib vector_int

18 Estructura de directoris
dir. principal *.c, *.asm Makefile ./include *.h ./lib *.lib


Descargar ppt "Sistemes Operatius (S.O.) Onion: Mecanisme d'entrada al sistema"

Presentaciones similares


Anuncios Google