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