Módulos de Linux
Lo siguiente es el enunciado simplificado:
En esta tarea Ud. deberá implementar un driver para Linux que permita lecturas bloqueantes en el dispositivo /dev/syncread con número major 61. Considere un primer proceso que está escribiendo un archivo, es decir todavía no lo cierra, y un segundo proceso que lee ese mismo archivo. El comportamiento estándar de Unix consiste en que si no hay nada más para leer, read retorna 0 bytes leídos, lo que es interpretado como fin del archivo en el proceso lector. Esto se hace aún cuando el proceso escritor eventualmente va a agregar más datos al archivo, puesto que aún no lo cierra. Una lectura bloqueante haría que read se bloquee hasta que el proceso escritor agregue con write más datos o bien cierre el archivo con close. Es decir funciona de manera similar a un pipe.
| Shell \(A\) | Shell \(B\) | Shell \(C\) | Shell \(D\) |
|---|---|---|---|
% cat > /dev/syncread |
|||
% cat < /dev/syncread |
|||
los 4 puntos |
los 4 puntos |
||
% echo hola > /dev/syncread |
|||
|
|||
cardinales son 3: el norte y el sur |
cardinales son 3: el norte y el sur |
cardinales son 3: el norte y el sur |
|
| <control-D> | |||
|
CC4302 — Sistemas Operativos