lunes, 12 de septiembre de 2011

Implementing locks using Semaphores

Heres the algorithm of how we'll implement locks using semaphores. and actually a lock it is really a binary semaphore. here's the code.

3 comentarios:

  1. Aquí en realidad no estás usando un semáforo para crear un candado, sino estás haciendo lo que los semáforos de NachOS hacen para parar las interrupciones. Yo hubiera esperado que tengan una instancia de semáforo y que con llamadas a esa se nazca la funcionalidad requerida de un candado.

    ResponderEliminar
  2. Bueno tengo entendido que un semaforo en nachos a diferencia de un lock no hace validaciones sobre los threads (solo verifica el valor del semaforo) y como se ve en este pseudocodigo lo que hace el Lockholder != null es verificar que el lock no ah sido asignado antes a otro thread ademas de otra validacion que revisa que el thread que pide el lock no tenga uno asignado. Creo yo que al estar implementados de inicio los locks en la version de java de NachOS no es necesario llamar a instancias de semaforos,solo complicaria las cosas ya que los semaforos manejan unsigned values y los locks manejan estados...

    ResponderEliminar
  3. Pues de echo, los semaforos binarios son demasiado parecidos a los Locks.
    Aunque la propiedad de un lock es que solo puede ser liberado por el thread que lo adquirio.

    Mientras que un lock de tipo semaforo binario, puede ser llamado por cualquier otro thread, con tan solo usar V(),P(). Esto podria crear problemas.

    Creo que no es muy buena idea hacer un lock, con un semaforo binario. :/

    ResponderEliminar