jueves, 31 de mayo de 2012

Métodos de exclusión mutua con espera ocupada

Solución de Peterson


En 1981. G. L. Peterson descubrió una forma más sencilla para conseguir la exclu-sión mutua, lo cual hizo obsoleta la solución de Dekker. Este algoritmo consta de dos procedimientos escritos en ANSÍ C, lo que indica que hay que proporcionar prototipos de función para todas las funciones definidas y utilizadas. Es convencional la agrupación de dichos prototipos en archivos de encabezado. El primer renglón; de la figura incluye todos esos prototi-pos. Los detalles no son importantes por lo que no se enlistan en este libro.

Antes de utilizar las variables compartidas (es decir, antes de entrar a su región cri-tica). cada proceso llama a enter_region con su propio número de procesos. O o 1, como parámetro. Esta llamada provoca una espera, en caso necesario hasta que pueda entrar.


indude "prototypes.h" . .

#define false 0

#define true 1

#define N 2 . /• Numero de procesos */

int turn: /* ¿de quién es e1 turno? */

int interested[N) /• todos los valores Iniciales son 0(FALSE) •/

void enter_region(int process) /* proceso: quién entra (0 O 1) */

{

int other; . /* numero de los otros procesos •/

other = 1 - process: /* el opuesto de proceso ••I

interested(process) - TRUE: /• muestra que usted esta interesado */

turn = process: . /* establece bandera */

while (turn — proceess && interested[otherl -- TRUE) /* enunciado-null '.'



void 1eave_region(int process) /• proceso: quién sale (0 6 1) •/

intereseted(process) - FALSE: " 7* indica 1a salida de la región critica */



Después de terminar con las variables compartidas. el proceso llama a leave_region para indicar que ha terminado y permitir la entrada de otro proceso, si así lo desea.

Veamos cómo funciona esta solución. En principio, ningún proceso esta en su re-gión critica- Ahora, el proceso 0 llama a enter_region. Indica su interés por determinar el elemento de su arreglo y hace turn=0. Puesto que el proceso 1 no está interesado. enier_region regresa en forma inmediata. Si el proceso 1 llama ahora a enter_region. esperará hasta que interested[0}=FALSE. evento que sólo ocurre cuando el proceso O llama a leave_region.

Consideremos ahora el caso en que ambos procesos llaman a enter_region de for-ma casi simultánea- Ambos almacenarán su número de proceso en turn. Sólo cuenta la última operación; la primera se pierde. Supongamos que el proceso 1 almacena el nú-mero en último lugar, por lo que turn=1. Cuando ambos procesos lleguen al enunciado while. el proceso O se ejecuta O veces y entra a su región critica. El proceso 1 hace un ciclo y no entra a su región critica.




Instrucción TSL


Analizaremos ahora una propuesta que requiere poca ayuda del hardware. Muchas computadoras, en particular aquellas diseñadas teniendo en mente varios procesadores. tienen una instrucción TEST AND SET LOCK; (TSL) que funciona como sigue. Lee el contenido de una palabra de memoria en un registro para después almacenar un valor distinto de cero en esa dirección de memoria Las operaciones de lectura y almacenamiento de la palabra tienen la garantía de ser indivisibles: ninguno de los de más procesadores puede tener acceso a la palabra hasta terminar la instrucción. La CPU que ejecuta la instrucción TSL cierra el bus de memoria para prohibir a las demás CPU el acceso a la memoria hasta terminar.

Para utilizar la instrucción TSL, se emplea una variable compartida, fiag, la cual coordina el acceso a la memoria compartida. Cuando f1ag=0, cualquier proceso puede darle el valor de 1 mediante la instrucción TSL y después leer o escribir en la memoria compartida. Al terminar, el proceso vuelve a hacer flog=0 mediante una instrucción normal move.

¿Cómo puede utilizarse esta instrucción para evitar que dos procesos entren en for-ma simultánea a sus regiones criticas? La solución aparece en la figura. En ella se muestra una subrutina de cuatro instrucciones en un lenguaje ensamblador ficticio (pe-ro típico). La primera instrucción copia el valor anterior de flag en un registro y des-pués hace flag=l. Después, el valor anterior se compara con 0. Si es distinto de cero. la cerradura ya estaba establecida, por lo que el programa regresa al principio y realiza de nuevo la prueba. Tarde o temprano, valdrá O (cuando salga de su región critica el proceso que &e encuentra en ese momento en dicha región) y la subrutina regresa con la cerradura establecida. La eliminación de la cerradura es sencilla: el programa sólo tiene que almacenar un O fag. No se requieren instrucciones especiales.

Ahora se dispone de una solución directa al problema de la sección crítica- Ante» de entrar a su sección crítica, un proceso Dama a enter_region, que hace una espera ocupada basta que se elimina la cerradura- para entonces retomar la cerradura y repisar.

Al salir de la sección crítica, el proceso llama a leave_region. que almacena O en fag. Como con todas las soluciones basadas en las regiones criticas, tos procesos deben llamar a enter_region y leave_region en los instantes correctos para que el método funcione. Si un proceso hace un engaño, la exclusión mutua fallara.

enter_region:


ts1 register.flac copia fag al registro y hace fag=1;


cr.r register.#0 ¿fag=0?


jn.í enter_region: si era distinto de cero , la cerradura estaba establecida, por lo que hay que hacer un ciclo


reg regresa a quien hizo la llamada


entra a la region critica


leave_region:


mov fag.#0 almacena un 0 en flag


ret regresa a quien hizo la llamada

miércoles, 23 de mayo de 2012

IceCast

¿Qué es?

Icecast es un proyecto para streaming de medios mantenido por la Fundación Xiph.org. Puede ser utilizado para crear una estación de la radio en internet o para uso privado entre otras cosas. Es muy versátil en que los nuevos formatos se pueden agregar relativamente fácil y soporta estándares abiertos para comunicación e interacción. También se refiere específicamente al programa servidor que es parte del proyecto.
Actualmente el servidor Icecast soporta en sus últimas versiones streams Ogg Vorbis, MP3, Ogg Speex, Ogg FLAC, Ogg Theora y AAC.
El servidor Icecast tiene una funcionalidad similar al programa propietario de servidor de medios SHOUTcast de Nullsoft y es compatible con éste.
Existen diversas herramientas para alimentar un servidor IceCast tales como:

  • Edcast Plug-in para Winamp y Foobar2k
  • Ezstream
  • Traktor DJ Studio 3
  • Simplecast


Características



General:
· Ayuda del juego de caracteres. La mayoría del non-Ogg fluye (eg. El MP3) envía meta datos como Latin1 pero podría estar en otros juegos de caracteres. Pues el icecast utiliza UTF-8, necesitamos convertir a UTF-8 de modo que los Web pages y los directorios de la corriente rindan correctamente.
· Permitir por-montan el ajuste. Para cuando los clientes de la fuente no indican qué juego de caracteres es funcionando.
· Un parámetro del charset= a la petición de los meta datos.
· El defecto para el contenido del non-Ogg ahora es Latin-1 (aka ISO-8859-1). El contenido de Ogg todavía utiliza UTF-8.

Autentificación:
· Se aísla cada autentificación del mountpoint así que una autentificación del montaje no reduce otra autentificación del mountpoint.
· Las páginas de XSL pueden requerir la autentificación.
· Agregar algunas comprobaciones para de la cordura ajustes incorrectos.

Actualizaciones del zócalo que escuchan:
· Permitir los puertos múltiples sean asignados que permiten que los clientes múltiples de la fuente del shoutcast fluyan en el mismo caso del icecast.
· Ningún límite interno en el número de escucha los zócalos que pueden ser utilizados.
· Tener en cuenta para que un zócalo del escuchar sea SSL marcado capaz. Mientras que cualquier cliente podría conectar en éstos, la idea está realmente para las peticiones de /admin.
· Tener en cuenta para que a ate a ipv4 y a ipv6

Actualizaciones de XSL:
· Las páginas de XSL incluyen un acoplamiento del xspf para las corrientes del non-auth.
· Las páginas de XSL en webroot y adminroot pueden llevar un arg del mount= el límite que los stats se transforman.
· Los archivos de XSL pueden especificar el contenido-tipo para volver al cliente. Se fija no más al HTML

Actualizaciones para la dirección del directorio de la corriente:
· Una corriente no se coloca con el directorio hasta después de que el primer minuto haya pasado. algunas corrientes se han pegado en un lazo de la conexión/de la desconexión.
· Aumentar el tiempo de la recomprobación en falta, si la corriente agrega se rechaza entonces le está abajo a un misconfiguration así que se realiza un retardo largo de la recomprobación.
· Un servidor del YP que no está respondiendo se no hace caso durante algún tiempo

Streaming

¿Qué es?
El streaming es la distribución de multimedia a través de una red de computadoras de manera que el usuario consume el producto al mismo tiempo que se descarga. La palabra streaming se refiere a que se trata de una corriente continua (sin interrupción). Este tipo de tecnología funciona mediante un búfer de datos que va almacenando lo que se va descargando para luego mostrarse al usuario. Esto se contrapone al mecanismo de descarga de archivos, que requiere que el usuario descargue los archivos por completo para poder acceder a ellos.

Historia
Antes de que la tecnología streaming apareciera en abril de 1995 (con el lanzamiento de RealAudio 1.0), la reproducción de contenido Multimedia, a través de internet necesariamente implicaba tener que descargar completamente el "archivo contenedor" al disco duro local. Como los archivos de audio —y especialmente los de video— tienden a ser enormes, su descarga y acceso como paquetes completos se vuelve una operación muy lenta.
Sin embargo, con la tecnología del streaming un archivo puede ser descargado y reproducido al mismo tiempo, con lo que el tiempo de espera es mínimo.


Componentes
Para poder proporcionar un acceso claro, convincente, continuo y sin interrupciones ni cambios, el streaming se apoya en las siguientes tecnologías:


  • Códecs

Artículo principal: Códec.
Son archivos residentes en el ordenador que permiten a uno o varios programas descifrar o interpretar el contenido de un determinado tipo de archivo multimedia.


  • Protocolos Ligeros

UDP y RTSP (los protocolos empleados por algunas tecnologías de "streaming") hacen que las entregas de paquetes de datos desde el servidor a quien reproduce el archivo se hagan con una velocidad mucho mayor que la que se obtiene por TCP y HTTP. Esta eficiencia es alcanzada por una modalidad que favorece el flujo continuo de paquetes de datos. Cuando TCP y HTTP sufren un error de transmisión, siguen intentando transmitir los paquetes de datos perdidos hasta conseguir una confirmación de que la información llegó en su totalidad. Sin embargo, UDP continúa mandando los datos sin tomar en cuenta interrupciones, ya que en una aplicación multimedia estas pérdidas son casi imperceptibles.


  • Precarga

La entrega de datos desde el servidor a quien ve la página pueden estar sujetas a demoras conocidas como lag, (retraso, en inglés) un fenómeno ocasionado cuando los datos escasean (debido a interrupciones en la conexión o sobrecarga en el ancho de banda). Por tanto, los reproductores multimedia precargan, o almacenan en el buffer, que es una especie de memoria, los datos que van recibiendo para así disponer de una reserva de datos, con el objeto de evitar que la reproducción se detenga. Esto es similar a lo que ocurre en un reproductor de CD portátil, que evita los saltos bruscos y los silencios ocasionados por interrupciones en la lectura debidos a vibraciones o traqueteos, almacenando los datos, antes de que el usuario tenga acceso a ellos.


  • Red de Acceso de Contenido

Si un determinado contenido comienza a atraer una cantidad de usuarios mayor a su capacidad de ancho de banda, estos usuarios sufrirán cortes o lag. Finalmente, se llega a un punto en que la calidad del stream es pésima. Ofreciendo soluciones, surgen empresas y organizaciones que se encargan de proveer ancho de banda exclusivamente para streaming, y de apoyar y desarrollar estos servicios.

Usos

  • Radio por Internet

La ventaja para la emisora es llegar a un gran público objetivo, que por diversos motivos (como el alcance territorial limitado de la señal radiofónica), desconocían una emisora de otro lugar. Cabe aclarar que no sólo las emisoras de Radio AM y FM transmiten por Internet, sino que también en los últimos tres años están creciendo exponencialmente las Radios Digitales, las cuales transmiten exclusivamente por internet.

  • Televisión por Internet

Desde finales de los 90, los intentos habían fracasado por el considerable ancho de banda requerido por la señal de vídeo, sin embargo, resurge el interés en este tipo de comunicación pública con el gran éxito de Youtube y la expansión del ADSL.
Un mundo de posibilidades se abre gracias al universo de las ‘tres W’, y si antes los medios únicamente debían competir en el ámbito de la televisión, la prensa o la radio, ahora un nuevo contrincante ha salido a la palestra y, sin duda, las reglas de juego tradicionales se traducen en inoperantes en este contexto. Y ya no es sólo un competidor virtual, sino que es el propio individuo el que selecciona su programación, los soportes y sus noticias. Por ejemplo, no son iguales las estructuras informativas existentes en los medios habituales que en otros más novedosos como los blogs en los que predomina la libertad creadora, difusora, transformadora y la independencia por encima de todo. No obstante, aquí se pueden producir varios problemas.
En primer lugar, el libre acceso a todo tipo de información en el ciberespacio puede contribuir, como consecuencia de la falta de formación, a la confusión y al desconcierto. “Hay que leer la prensa de forma diaria, escuchar la radio, y consultar Internet. Hoy Internet es la biblioteca mayor del mundo. Y un ignorante en una gran biblioteca se pierde. No sabe qué hacer con tanta información. Hay que saber mucho para dominar la red. Es aquí donde radica la importancia de la educación formal”, determina Raigón Pérez de la Concha , en una entrevista publicada en el blog “Periodismo social y educativo” . En segundo lugar, otro conflicto que ha causado bastante revuelo en la opinión pública, es la cuestión de las descargas. Asociaciones como la SGAE, luchan por cobrar cada céntimo que se genera a expensas de un determinado producto cultural.
Incluso Estados Unidos ha decidido cerrar el mercado de DVD en España principalmente por los escasos ingresos por venta, como consecuencia de la piratería. Asimismo, el gremio de actores españoles reivindican en todo momento la necesidad de frenar esta crisis global. La entrada en vigor del canon digital para todos los cds, que incluye las copias para uso privado, ha provocado múltiples movilizaciones en contra, siendo la más conocida la plataforma “Todos contra el canon”, integrada por asociaciones de empresarios, internautas, sindicatos y consumidores, que ha presentado ante el Gobierno más de dos millones de firmas en contra de esta tasa. En esta misma linea se encuentra el Manifiesto en defensa de los derechos de Internet, realizado en 2009 en respuesta al anteproyecto de Ley de Economía Sostenible aprobado por el Consejo de Ministros.


Tipo de Streaming
  • WHMSonic:

Es probablemente el producto más sencillo de los 4, es ideal para proveedores de hosting que desean comenzar a ofrecer servicios de streaming de audio, se integra con cPanel y es de muy bajo costo, la licencia para radios ilimitadas solo cuesta $4.00/Mes.
Cuando usar WHMSonic: Si ya dispone de un servidor cPanel con recursos libres (ancho de banda/Disco/CPU y Memoria)
Cuando NO usar WHMSonic: Si desea ofrecer streaming de video o streaming de audio más profesional, cuando no dispone de un servidor cPanel.

  • CentovaCast:

CentovaCast es un versatil panel de control de streaming que soporte los populares servidores ShoutCast & IceCast, ofrece un limpio y fácil de usar panel de control en con posibilidad de crear cuentas de resellers y usuarios, ademas se integra con el popular sistema WHMCS, Centova soporta populares formatos como mp3 y acc+ además permite combinar un grupo de servidores en cluster.
Cuando usar CentovaCast: Es ideal para aquellos que desean ofrecer servicios de streaming de audio y reseller de streaming de audio

Cuando NO usar Centovacast: Cuando requiere de soporte para rmtp y cuando desea streaming de envió


  • Cast-Control:

 Este es un excelente sistema de streaming, es un competidor directo de CentovaCast, pero ademas soporte servidores Wowza, Windows Media Server, puede usar Cast-Control para controlar un grupo de servidores de streaming heterogeno (icecast, shoutcast, Windows Media y Wowza) además soporta streaming de audio y video
Cuando usar Cast-Control: Es ideal para proveedores de servicios de streaming que desean ofrecer toda la gama de streaming (Audio/Video, wowza, Windows Media)

Cuando NO usar Cast-Control: No es recomendado si es para radios de uso interno es decir cuando solo planea transmitir sus propios contenidos en lugar de ofrecer un servicio comercial, para estos casos probablemente no necesita un panel de control como Cast-Control.
Wowza Media Server: Es el producto más avanzado de los 4, soporta virtualmente cualquier formato y protocolo incluyendo rmtp, es ideal para transmisiones de audio/video a cualquier tipo de dispositivo, desde móviles a HD, es también el más costoso. la licencia tiene un costo de $55.00/mes, no incluye panel de control y la configuración se realiza vía archivos xml, lo cual puede ser confuso para novatos.


  • Cuando usar Wowza:
Wowza es ideal cuando se requiere la versatilidad de transmitir contenidos a diferentes dispositos, permite transmitir desde HDTV hasta audio/video a dispositivos móviles
Cuando NO usar Wowza: Cuando no requiere de las avanzadas funcionalidades, por ejemplo si su meta es solo transmitir streaming de audio

miércoles, 16 de mayo de 2012

Estructura de los Sistemas Operativos

Máquina Virtual

Se trata de un tipo de sistemas operativos que presentan una interface a cada proceso, mostrando una máquina que parece idéntica a la máquina real subyacente. Estos sistemas operativos separan dos conceptos que suelen estar unidos en el resto de sistemas: la multiprogramación y la máquina extendida. El objetivo de los sistemas operativos de máquina virtual es el de integrar distintos sistemas operativos dando la sensación de ser varias máquinas diferentes. 

El núcleo de estos sistemas operativos se denomina monitor virtual y tiene como misión llevar a cabo la multiprogramación, presentando a los niveles superiores tantas máquinas virtuales como se soliciten. Estas máquinas virtuales no son máquinas extendidas, sino una réplica de la máquina real, de manera que en cada una de ellas se pueda ejecutar un sistema operativo diferente, que será el que ofrezca la máquina extendida al usuario  




Modelo Cliente Servidor

El tipo más reciente de sistemas operativos es el denominado Cliente-servidor, que puede ser ejecutado en la mayoría de las computadoras, ya sean grandes o pequeñas.
Este sistema sirve para toda clase de aplicaciones por tanto, es de propósito general y cumple con las mismas actividades que los sistemas operativos convencionales.

El núcleo tiene como misión establecer la comunicación entre los clientes y los servidores. Los procesos pueden ser tanto servidores como clientes. Por ejemplo, un programa de aplicación normal es un cliente que llama al servidor correspondiente para acceder a un archivo o realizar una operación de entrada/salida sobre un dispositivo concreto. A su vez, un proceso cliente puede actuar como servidor para otro.” 

Este paradigma ofrece gran flexibilidad en cuanto a los servicios posibles en el sistema final, ya que el núcleo provee solamente funciones muy básicas de memoria, entrada/salida, archivos y procesos, dejando a los servidores proveer la mayoría que el usuario final o programador puede usar. Estos servidores deben tener mecanismos de seguridad y protección que, a su vez, serán filtrados por el núcleo que controla el hardware. Actualmente se está trabajando en una versión de UNIX que contempla en su diseño este paradigma.





miércoles, 9 de mayo de 2012

Primera Generación (1945-1955):

Tubos de vacio y tableros enchufables
Después de los esfuerzos frustrados de Babbage, se progresó poco en la construcción de computadoras digitales hasta la segunda guerra mundial, alrededor de la mitad de la década de 1940, Howard Aiken en Hardvard, Jon Von Neumann en el Instituto de Estudios Avanzados en Princeton, J. Presper Ecker y William Mauchley en la Universidad de Pennsylvania y Konrad Zuse en Alemania, entre otros, todos obtuvieron resultados óptimos en la construcción de maquinas de calculo mediante el uso de tubos de vacío.


Los laboratorios de investigación de la General Motors implementaron el primer sistema operativo en los 50's generalmente corría una tarea a la vez y suavizó la transición entre tareas para obtener máxima utilización del sistema de la computadora. Los sistemas operativos de los años cincuenta fueron diseñados para hacer mas fluida la transmisión entre trabajos. Antes de que los sistemas fueran diseñados, se perdía un tiempo considerable entre la terminación de un trabajo y el inicio de siguiente. Este fue el comienzo de los sistemas de procesamiento por lotes, donde los trabajos se reunían por grupo o lotes. Cuando el trabajo estaba en ejecución, esta tenia control total de la maquina. Al terminar cada trabajo (bien normal o anormalmente), el control era envuelto al sistema operativo, el cual "limpiaba" y leía e inicia el trabajo siguiente.





Segunda Generación (1955-1965):

Transistores y sistemas de lote

La introducción del transistor a mediados de la década de 1950 cambio la imagen radicalmente. Las computadoras se volvieron lo suficientemente confiables, en un principio hubo una clara separación entre los diseñadores, armadores, operadores, programadores y personal de mantenimiento.

La característica de la segunda generación de los sistemas operativos fue el desarrollo de los sistemas compartido con multiprogramación, y los principios del multiprocesamiento. En los sistemas de multiprogramación, varios programas de usuarios se encuentran el mismo tiempo en el almacenamiento principal, y el procesador se cambia rápidamente de un trabajo a otro. En los sistemas de multiprocesamiento se utilizan varios procesadores en un solo sistema computacional, con la finalidad de incrementar el poder de procesamiento de la maquina.

En los sistemas de la segunda generación, el programa del usuario especificaba tan solo que un archivo iba a ser escrito en una unidad de cinta con cierto numero de pistas y cierta densidad. El sistema operativo localizaba, entonces, una unidad de cinta disponible con las características deseadas, y le indicaba al operador que montara una cinta en esa unidad.




Tercera Generación (1965-1975):

Se inicia en 1964, con la introducción de la familia de computadores Sistema/360 de IBM. Los computadores de esta generación fueron diseñados como sistemas para usos generales. Casi siempre eran sistemas grandes, voluminosos, con el propósito de serlo todo para toda la gente. Eran sistemas de modos múltiples, algunos de ellos soportaban simultáneamente procesos por lotes, tiempo compartido, procesamiento de tiempo real y multiprocesamiento. Eran grandes y costosos, nunca antes se había construido algo similar, y muchos de los esfuerzos de desarrollo terminaron muy por arriba del presupuesto y mucho después de lo que el planificador marcaba como fecha de terminación.
Estos sistemas introdujeron mayor complejidad a los ambientes computacionales; una complejidad a la cual, en un principio, no estaban acostumbrados los usuarios.

Cuarta Generación (1975 en adelante):

Los sistemas de la cuarta generación constituyen el estado actual de la tecnología. Muchos diseñadores y usuarios se sienten aun incómodos, después de sus experiencias con los sistemas operativos de la tercera generación.
Los sistemas de seguridad se ha mejorado mucho ahora que la información pasa a través de varios tipos vulnerables de líneas de comunicación. La clave de cifrado esta recibiendo mucha atención; han sido necesario codificar los datos personales o de gran intimidad para que; aun si los datos son expuestos, no sean de utilidad a nadie mas que a los receptores adecuados.

Los sistemas de bases de datos han adquirido gran importancia. Nuestro mundo es una sociedad orientada hacia la información, y el trabajo de las bases de datos es hacer que esta información sea conveniente accesible de una manera controlada para aquellos que tienen derechos de acceso.
Los sistemas operativos conocidos en la época actual son los considerados sistemas de cuarta generación. Con la ampliación del uso de redes de computadoras y del procesamiento en línea es posible obtener acceso a computadoras alejadas geográficamente a través de varios tipos de terminales. Con estos sistemas operativos aparece el concepto de máquinas virtuales, en el cual el usuario no se involucra con el hardware de la computadora con la que se quiere conectar y en su lugar el usuario observa una interfaz gráfica creada por el sistema operativo.