jueves, 1 de diciembre de 2011

Problema de lectores / escritores con prioridad de escritores

  • Declaración de variables globales
semáforo lecMutex; // para modificar el numero de lectores
semáforo escMutex; // para modificar el numero de escritores
semáforo lectores; // para bloquear a los lectores cuando están los escritores
semáforo escritores; // para que solo esté un escritor en la S.C. a la vez


int nEscritores=0; // número de escritores en la S.C. 
int nLectores=0; // número de lectores en la S.C.  
  • Inicialización
init( lecMutex, 1);
init( escMutex, 1);
init( lectores, 1);
init( escritores, 1);

  • Lector

while(true){
  wait(lectores);
  wait(lecMutex);
  nLectores++;
  if(nLectores == 1)
    wait(escritores)
  signal(lecMutex)
  signal(lectores);
  // leer
  wait(lecMutex);
  nLectores--;
  if(nLectores == 0)
  signal(escritores);
  signal(lecMutex)
}

  • Escritor

while(true){   

  wait(escMutex);
  nEscritores++;
  if(nEscritores == 1)
    wait(lectores)
  signal(escMutex)
  wait(escritores);
  // escribir
  signal(escritores);
  wait(escMutex);
  nEscritores--;
  if(nEscritores == 0)
    signal(lectores);
  signal(escMutex);
}



Nota: Las variables nLectores y nEscritores son globales ya que si fueran locales al empezar un hilo se inicializan a 0 una y otra vez.

Ruleta de la suerte en C

Otra de mis entradas del antiguo blog los programadores pelirrojos.

Bueno pues aquí tenéis un juego cutre en C que hice usando la librería de conio hace ya algún tiempo.
El juego consiste en hacer que los tres dibujos de las tres columnas que van pasando rápidamente coincidan, como en las maquinas tragaperras.
Cuado os lo descarguéis encontrareis el ejecutable, el código fuente (sin comentar ya que se entiende mas o menos bien) y las librerías necesarias para compilar el código fuente del juego.


AVISO PARA LUDOPATAS: no jueguen a esto que si no se envician y aquí no se gastan las perras.

Reloj analógico en java

Hace tiempo programé un pequeño reloj en java con sus 3 agujas y todo. Os lo dejo aquí por si tenéis curiosidad.
La entrada es originalmente de lpp antiguo blog donde publicaba mis chorradas.

Los que quieran descargarse el código-> aquí
Los que tengan dudas que comenten.
Quien sepa algo de java le animo a que mire el código y vea lo fácil que meter otra aguja para por ejemplo los meses.

jueves, 13 de octubre de 2011

Historia de los sistemas operativos a partir de 1996

Evolución de Linux
Distribuciones de Linux
Después de la primera versión oficial del núcleo 1.0 de Linux en 1994 apareció en 1996  la versión  2.0 de Linux que aporta múltiples arquitecturas y sistemas multiprocesador.
También en 1996 empiezan a proliferar distribuciones de GNU/Linux como Debian.
En http://distrowatch.com/ podemos encontrar distribuciones de Linux para aburrir. Una de las mas populares es Ubuntu que fue lanzado el 20 de octubre de 2004.

Ubuntu








 


Ya en 1998 aparece KDE y mas tarde GNOME, desktops que hicieron que Linux fuera mucho mas fácil de usar.
En 2001 se lanza la version 2.4.x con bastantes mejoras en el sistema de archivos dando soporte para ficheros grandes.
En la versión 2.6.x del kernel se mejoró el rendimiento y se incorporaron novedades como el Virtual File System y soporte para GPUs AMD y NVIDIA y chips del tipo Wi-Fi.
Actualmente el kernel de linux ya va por la version 3.1, en http://kernelnewbies.org/Linux_3.1 podemos ver la gran cantidad de mejoras del que se producen en cada version.


Mac OS
Evolución de MAC
En 1997 aparece Mac OS 8 que incluyó una renovación al Finder que podía hacer más cosas al mismo tiempo, dando la opción de controlar múltiples aplicaciones al mismo tiempo con un mejor desempeño del  procesador. Tambien se mejoró el sistema de archivos con HFS+ y se dio soporte a dispositivos usb y firewire.
Mac OS 9  apareció en 1999 con opción de tener varios usuarios en una maquina y con soporte TCP/IP.

Mac OS X 10.5
En el 2001 aparece la versión 10 de Mac OS X que protegía la memoria, y así los programas no podían utilizar la información de otros programas, de esta forma el procesador no se bloqueaba memoria. En 2002 una nueva version del Mac OS X consiguió un incremento en su rendimiento, un nuevo y depurado look y  mayor soporte para redes de Microsoft.
En las ultimas versiones de Mac OS X se han mejorado el rendimiento y el aspecto del sistema. Tambien se han introducido nuevas características como el Time Machine y mejoras en el Finder.


Evolución  de Windows
Windows 98
En 1998 Microsoft lanza Windows 98/NT, algunas de las novedades mas importantes fueron un nuevo sistema para el manejo de los archivos (NTFS), soporte USB mejorado e Internet Explorer 5.

Microsoft Windows 2000 fue lanzado en el año 2000 el 17 de febrero, algunas de sus caracteristicas eran: gran estabilidad, soporte para varios procesadores y un alto nivel de seguridad.

Microsoft Windows ME (Millenium) una actualización de Windows 98 que toma algunas características de Windows 2000, primó la facilidad de uso, las mejoras en multimedia y comunicaciones e Internet.

En el año 2001 Microsoft lanza Windows XP el dia 25 de octubre del 2001 con soporte LAN, software de grabación de CDs, multimedia, escritorio remoto y manejo de usuarios. Tambien cambio el aspecto y se mejoró la instalación de drivers.
Windows XP
En  Marzo 28 del 2003 Microsoft lanza una version Windows XP para 64Bit.
Microsoft Windows Server 2003 es lanzado en Marzo 28 del 2003 enfocado a las redes.
En el 2006 Microsoft lanza Microsoft Windows Vista que requiere de hardware potente para ejecutarse. Algunas de las novedades más destacadas son las de agregar efectos visuales y varias opciones como mejor control en las cuentas de usuarios, firewall, mayor seguridad...

En el 2009 Microsoft lanza Windows 7con soporte completo para 64bits, rendimiento mejorado en procesadores multinúcleo y mejoras en la  GUI.

Bibliografía: