Laboratorio No 7
Implementación de
llamadas a sistema en Linux 2.6
Fecha inicio: 18/06/07
Fecha entrega: 3/07/07
Descripción
Durante este laboratorio los estudiantes
deberán familiarizarse con el mecanismo de implementación de llamadas a sistema
de Linux 2.6 para luego agregar una al kernel y probarla. En este link encontrará un documento
completo, junto con un ejemplo del procedimiento requerido para agregar una
llamada a sistema en Linux 2.6. Para poder realizar este laboratorio,
obligatoriamente deberá primero leer este documento.
Objetivos
-
Entender
el mecanismo de comunicación entre procesos de usuario y kernel en el sistema
operativo Linux : Llamadas a sistema
-
Modificar
software de dominio público. En particular el kernel de Linux agregando una
llamada a sistema
Metodología
Los estudiantes trabajarán en grupos de 2 o 3
personas. El sistema (a instalar en Windows XP) a modificar viene encapsulado
en una máquina virtual de dominio público (qemu) de manera que cualquier
modificación al kernel no afecte la operación del sistema host donde se realiza
el laboratorio accesible aquí. El
sistema encapsulado posee dos opciones de buteo, una de las cuales debe ser
usada con el kernel modificado.
El código fuente de Linux se encuentra en
/usr/src/Linux….
Puntos importantes
-
Primero,
para hacer funcionar el linux instalado en la máquina virtual deberá configurar
los directorios de acuerdo al lugar donde usted lo ha descomprimido. Para hacer
esto debe modificar su configuración de profiler, image and media accesible en
el menú Options del Qemu Manager.
o
Usuario
disponible root password toor
-
Para
agregar una llamada a sistema usted tiene dos opciones
o
Crear
un archivo independiente donde se define (millamada.c)
§
Debe
agregar en Makefile millamada.o en dos partes
o
Agregar
llamada a sistema a un archivo en el kernel existente
§
No
requiere modificar el Makefile
Luego para compilar sólo debe pararse
donde se encuentra el fuente de Linux
y compilar con
- make bzImage
- Para evitar problemas simplemente
copie los archivos bzImage y System.map creador de la siguiente manera:
cp /usr/src/Linux-version/System.map /boot/System.map-2.6.18
cp /usr/src/linux-version/arch/i386/boot/bzImage /boot/vmlinuz-2.6.18
-
Modifique
el archive /etc/lilo.conf
o
Donde
dice image bzImage simplemente cambie bzImage por vmlinuz-2.6.18
o
Ejecute
el comando lilo
- reboot
- cuando sistema se reinicie elija
buteo Linux-prueba
Llamada a sistema a
implementar
Debe incorporar una llamada a sistema que
permita retornar el número de fallos de página mínimos y el número de fallos de
páginas mayores que experimenta un proceso.
El sistema operativo distingue dos tipos de
fallos de página, el mínimo corresponde a fallos, es decir que proceso no tiene
un marco válido en la tabla de páginas asociado a una página virtual, pero el
sistema no lo bloquea. Esto ocurre cuando el proceso requiere memoria en blanco
para almacenar sus datos (es decir cuando la necesita para sus datos
iniciales). Los fallos majores ocurren cuando sistema bloquea a proceso
mientras atiende el fallo de página lo que ocurre cuando sistema debe respaldar
datos en el disco.
Pista: Mire la estructura task_struct definida
en /usr/src/Linux-version/include/Linux/sched.h