Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porCristóbal Rodrigo Blanco Bustamante Modificado hace 7 años
1
Microkernels - Minix Sistemas Operativos 2 – Usac 2009
2
Minix Un UNIX más Que se ha mantenido pequeño Que tiene un microkernel
Y que aun siendo pequeño es multitarea y bien diseñado Totalmente modular Con un stack TCP/IP Hecho en C como los machos
3
Arquitectura . . . Lo primero que debemos entender
4
El kernel en minix El componente central
Basicamente como dicta la filosofia de los microkernels solo maneja el acceso al hardware y la comunicación entre procesos
5
¿Versus Linux (el viejo linux)?
* Todos los servicios se obtienen en los servidores mediante llamadas IPC
6
Las llamadas al sistema
Desde el usuario al kernel Send, receive y sendrec Los procesos de usuario estan condenados a la ultima Si uno quiere que un susbsistema haga algo basta con enviarle un mensaje
7
IPC . . . en minix El IPC se maneja asi
Un proceso envia un mensaje y el destinatario al kernel El kernel lo envia al destinatario correcto (mediante el UID indicado) Funcionan a manera de demonios
8
Las llamadas al sistema
Table.c FS independiente
9
Y por si tenían duda Todo es a traves del kernel (sea cual sea la religión del kernel). Tanto hardware (drivers) como software (ver el caso de FORK)
10
¿Como se programan? Un programa accesa a una llamada a traves de una biblioteca En este caso si queremos crear una llamada tenemos que crear la llamada y la biblioteca o la función de acceso correspondiente El prototipo lo encuentran en /usr/include/unistd.h
11
Entrando en detalle Si queremos implementar nuestra llamada necesitamos editar y seguir la estructura de table.c no_sys, /* 0 = unused */ do_exit, /* 1 = exit */ do_fork, /* 2 = fork */ do_usac/* 77 = XXX */ nuestra llamada. Ademas de escribir el método de la llamada debemos usar el proto.h
12
Algunas otras Debemos informar a la biblioteca de la nueva llamada
Esto se hace ubicando un archivo .c en el directorio /lib/posix con la sintaxis _llamada.c #include <lib.h> #define fork _fork #include <unistd.h> PUBLIC pid_tfork() { message m; return(_syscall(MM, FORK, &m)); }
13
Y este codigo significaba
Se llama a _syscall Se elige entre MM o FS (cuando el kernel recibe una llamada lo primero que hace es convocar a MM/FS) El segundo parametro define el tipo de servicio (ver /usr/include/minix/callnr.h) Y repitiendo un programa de usuario NO puede ejecutar la llamada directamente, tiene que usar un mensaje (ver /usr/include/minix/type.h)
14
¿Y ahora? Prueben minix por si mismos Editor similar a vi – elvis
Editor similar a nano – elle Buscan algo: find -name foo.c Si quieren ver el codigo de una llamada busquen el getset.c Editar el codigo y copiar por ftp, wget o ¿telnet? O ir más alla y leer esto O esto:
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.