Taller opcional de Sistemas Operativos

Proyecto

Objetivo

Aplicar los conceptos aprendidos en clase para el desarrollo de un controlador para un dispositivo de caracteres sencillo.

El buffer circular

Un buffer es una región de memoria que se utiliza para almacenar datos. Generalmente, puede ser accedido indicando la posición del dato que se intenta leer o escribir. Por ejemplo:
En un buffer circular, sus posiciones extremas son contiguas. Es decir, el elemento siguiente del último es el primero. (Es conveniente notar la dificultad de distinguir el primer y último elemento de un buffer circular.)

Cómo utilizar el buffer circular

Primero, se debe declarar la variable de tipo RBuffer que contendrá los datos a almacenar:

RBuffer bufcirc;

Para inicializar esta variable, se debe llamar a la función RB_init, cuyo prototipo es el siguiente: Las funciones para acceder al ring buffer son:

Consigna

Implementar un controlador para un dispositivo "fifo" que duerma al proceso consumidor cuando el buffer esté vacío y lo despierte cuando haya datos disponibles. Se debe aplicar una política análogo para el productor.

Recomendaciones

  1. Seguir los lineamientos propuestos en el documento CodingStyle que acompaña al código del núcleo de Linux.
  2. Modularizar la implementación del controlador.