No suelo hablar en mi blog de temas de la facultad, porque creo que es uno de esos temas que no interesan fuera de contexto, pero últimamente ciertas prácticas están ganándose un post en la categoría Personal, porque ya es algo personal.
Hoy estoy de irónica celebración. Hace un mes que comenzó la entrega de prácticas de una asignatura de segundo ciclo, Diseño de Sistemas Operativos, y ni he acabado de entregarla ni finalmente hemos hecho una cena para celebrar el mes de entrega. A pesar de todo, me gusta la asignatura, y a pesar de todo, me gusta el profesor, a pesar de que su peculiar método de entrega de prácticas obligatorias esté siendo bastante perjudicial para mi estado de ánimo.
El caso es que mejor tomarse las cosas con humor, y de ahí El vídeo del niño loco alemán del Unreal haciendo las prácticas de DSO (Diseño de Sistemas Operativos). No he tenido paciencia para completarlo, y los subtítulos son algo genéricos, pero es suficientemente mediocre como para publicarlo como desahogo.
Después de un mes de entrega
A continuación una serie de consejos, o pequeños truquillos, por si alguien llega a mi blog personal buscando por Google:
- La relocalización es un tema más complejo de lo que parece a primera vista. Probadlo con un grafo en el que pueda haber varios ciclos, en el que un dato de la estructura pueda ser un puntero (que no se debe relocalizar).
- Al hacer lseek, comprobad que la posición a la que os movéis no sea negativa.
- Para compilar utilizando aio_read, aio_write, etc, hay que utilizar el flag -lrt de gcc, además de incluir el aio.h. Esto es del tipo de cosas que nadie te dice.
- La llamada close hace close. Aunque haya una lectura asíncrona aio_write pendiente de escribir.
- Sí, sabes lo que hay en la pila, pero la cpu guarda registros con direcciones de pila. EBP (base de pila), ESP (cima de pila), puntero al siguiente frame… ¿cual es cual? Además gcc 3.4 mete instrucciones en las llamadas a funciones para modificar estos punteros, cosa que gcc 4.0 no hace. ¿Esto sirve de ayuda? Posiblemente no.
- En el kernel 2.6 la forma de compilar módulos es distinta de 2.4. No perdáis tres días intentando hacerlo con manuales para 2.4 como hice yo.
- Puedes montar una partición en modo síncrono con mount /dev/loquesea /mnt/loquesea -o sync, pero esto no te servirá de nada, medir tiempos “es complicado”.
- El comando cp utiliza double buffering. O eso dicen.
- Era más feliz cuando podía utilizar el término memoria virtual sin remordimientos.
- La vida es demasiado corta como para perder tanto tiempo con una práctica.
Y de regalo una ración de keywords: Diseño de Sistemas Operativos (DSO), Facultade de Informática (FIC), Universidade da Coruña (UDC)
9 comments