Taller 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_t bufcirc;

Para crear y destruir una instancia del TAD tenemos las funciones: Las funciones proyectoras y modificadoras del ring buffer son: El código está disponible para ser bajado.

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áloga 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.