lunes, 1 de junio de 2015

[Conceptos] Tipos de dispositivos.

Dispositivos Dedicados.

Un dispositivo dedicado es aquel que se asigna un proceso durante todo el tiempo que permanezca ejecutandose, indenpendiente de si lo ultiliza constantemente o solo durante determinados periodos. Logicamente hay dispositivos que admiten este tipo de asignacion  y otros que no.

Dispositivos compartidos.

Los discos se suelen compartir en todos los procesos para alamacenar informacion en ellos de manera simultanea. Esta es la estrategia adecuada para administrar los dispositivos de almacenamiento de acceso directo.

Aunque este tipo de asignacion es muy flexible, si se desea alcanzar mayor eficacia posible, puede ser muy dificil llevarlo a la practica, debiendo establecer una gestion de la cola de peticiones de e/s sobre el dispositivo.

Dispositivos Virtuales.

Son dispositivos que deberian ser dedicados, pero que de una u otra forma pueden ser compartidos, como por ejemplo una impresora manejada por spooling, ella tiene una tarea asignada que realizara hasta que termine, pero varias tareas pueden hacer uso de ella.

sábado, 23 de mayo de 2015

[Concepto] Spooling.

Spooling (Simultaneous Peripheral Operations On-Line) 

se refiere al proceso mediante el cual la computadora introduce trabajos en un buffer (un área especial en memoria o en un disco), de manera que un dispositivo pueda acceder a ellos cuando esté listo.

viernes, 1 de mayo de 2015

[Conceptos][Exposicion] Semaforos

Un semáforo es una variable especial (o tipo abstracto de datos) que constituye el método clásico para restringir o permitir el acceso a recursos compartidos (por ejemplo, un recurso de almacenamiento del sistema o variables del código fuente) en un entorno de multiprocesamiento.

Los semáforos se emplean para permitir el acceso a diferentes partes de programas  donde se manipulan variables o recursos que deben ser accedidos de forma especial. Según el valor con que son inicializados se permiten a más o menos procesos utilizar el recurso de forma simultánea.
Un tipo simple de semáforo es el binario, que puede tomar solamente los valores 0 y 1. Se inicializan en 1 y son usados cuando sólo un proceso puede acceder a un recurso a la vez. Son esencialmente lo mismo que los mutex. Cuando el recurso está disponible, un proceso accede y decrementa el valor del semáforo con la operación P. El valor queda entonces en 0, lo que hace que si otro proceso intenta decrementarlo tenga que esperar. Cuando el proceso que decrementó el semáforo realiza una operación V, algún proceso que estaba esperando comienza a utilizar el recurso.



Para hacer que dos procesos se ejecuten en una secuencia predeterminada puede usarse un semáforo inicializado en 0. El proceso que debe ejecutar primero en la secuencia realiza la operación V sobre el semáforo antes del código que debe ser ejecutado después del otro proceso. Éste ejecuta la operación P. Si el segundo proceso en la secuencia es programado para ejecutar antes que el otro, al hacer P dormirá hasta que el primer proceso de la secuencia pase por su operación V. Este modo de uso se denomina señalación (signaling), y se usa para que un proceso o hilo de ejecución le haga saber a otro que algo ha sucedido.
 

[Conceto][Exposicion] Problema del banquero/babero.

Algoritmo del banquero

En sistemas operativos es una forma de evitar el interbloqueo, propuesta por primera vez por Edsger Dijkstra. Es un acercamiento teórico para evitar los interbloqueos en la planificación de recursos. Requiere conocer con anticipación los recursos que serán utilizados por todos los procesos. Esto último generalmente no puede ser satisfecho en la práctica.
Este algoritmo usualmente es explicado usando la analogía con el funcionamiento de un banco. Los clientes representan a los procesos, que tienen un crédito límite, y el dinero representa a los recursos. El banquero es el sistema operativo.
El banco confía en que no tendrá que permitir a todos sus clientes la utilización de todo su crédito a la vez. El banco también asume que si un cliente maximiza su crédito será capaz de terminar sus negocios y devolver el dinero a la entidad, permitiendo servir a otros clientes.
El algoritmo mantiene al sistema en un estado seguro. Un sistema se encuentra en un estado seguro si existe un orden en que pueden concederse las peticiones de recursos a todos los procesos, previniendo el interbloqueo. El algoritmo del banquero funciona encontrando estados de este tipo.
Los procesos piden recursos, y son complacidos siempre y cuando el sistema se mantenga en un estado seguro después de la concesión. De lo contrario, el proceso es suspendido hasta que otro proceso libere recursos suficientes.




En términos más formales, un sistema se encuentra en un estado seguro si existe una secuencia segura. Una secuencia segura es una sucesión de procesos, <P_1,..., P_n>, donde para un proceso P_i, el pedido de recursos puede ser satisfecho con los recursos disponibles sumados los recursos que están siendo utilizados por P_j, donde j < i. Si no hay suficientes recursos para el proceso P_i, debe esperar hasta que algún proceso P_j termine su ejecución y libere sus recursos. Recién entonces podrá P_i tomar los recursos necesarios, utilizarlos y terminar su ejecución. Al suceder esto, el proceso Pi+1 puede tomar los recursos que necesite, y así sucesivamente. Si una secuencia de este tipo no existe, el sistema se dice que está en un estado inseguro, aunque esto no implica que esté bloqueado.
Así, el uso de este tipo de algoritmo permite impedir el interbloqueo, pero supone una serie de restricciones:
  • Se debe conocer la máxima demanda de recursos por anticipado.
  • Los procesos deben ser independientes, es decir que puedan ser ejecutados en cualquier orden. Por lo tanto su ejecución no debe estar forzada por condiciones de sincronización.
  • Debe haber un número fijo de recursos a utilizar y un número fijo de procesos.
  • Los procesos no pueden finalizar mientras retengan recursos.
  •  
Algoritmo del barbero.

el problema del barbero durmiente es un problema de sincronización. El problema consiste en una barbería en la que trabaja un barbero que tiene un único sillón de barbero y varias sillas para esperar. Cuando no hay clientes, el barbero se sienta en una silla y se duerme. Cuando llega un nuevo cliente, éste o bien despierta al barbero o —si el barbero está afeitando a otro cliente— se sienta en una silla (o se va si todas las sillas están ocupadas por clientes esperando). El problema consiste en realizar la actividad del barbero sin que ocurran condiciones de carrera. La solución implica el uso de semáforos y objetos de exclusión mutua para proteger la sección crítica.

Un semáforo es una variable protegida (o tipo abstracto de datos) que constituye el método clásico para restringir o permitir el acceso a recursos compartidos (por ejemplo, un recurso de almacenamiento) en un entorno de multiprocesamiento. Fueron inventados por Edsger Dijkstra y se usaron por primera vez en el sistema operativo THEOS.
En electrónica y en programación concurrente, se conoce como condición de carrera al error que se produce en programas o circuitos lógicos que no se han construido adecuadamente para su ejecución simultánea con otros procesos.


Adicionalmente se encuentra la exposicion de ese dia.

Problema Banquero

martes, 28 de abril de 2015

[Video][Concepto] Arreglo de Discos RAID

Video referido en clase para la temática de discos RAID.
 

[Conceptos][Exposicion] Discos Opticos

El disco óptico es un medio de almacenamiento de datos de tipo óptico, que consiste en un disco circular en el cual la información se codifica, guarda y almacena haciendo unos surcos microscópicos con un láser sobre una de las caras planas que lo componen.
Como todas las formas de los medios de almacenamiento, los discos ópticos se basan en la tecnología digital. Cualquier tipo o morfología de la información (texto, imagen, audio, vídeo, etc.) puede ser codificada en formato digital y almacenada en este tipo de soportes.
Una unidad de disco óptico usa rayos láser en lugar de imanes para leer y escribir la información en la superficie del disco. 

Aunque no son tan rápidos como los discos duros, los discos ópticos tienen mucho espacio para almacenar datos, son menos sensibles a las fluctuaciones ambientales y proporcionan mayor almacenamiento a un costo menor. Su primera aplicación comercial masiva fue el CD de música. Los discos ópticos varían su capacidad de almacenamiento, aunque hay de muchos tipos, los más habituales son: CD de 700 MB, DVD de 4,7 GB y Blu-ray de 30 GB en una sola cara. Tanto los discos ópticos como las unidades de discos ópticos, pueden ser de sólo lectura o de lectura y escritura.


Los discos PD (Phase change/Dual) se basan en la tecnología de cambio de fase tratada, pero las pistas generadas son concéntricas, como en los discos magnéticos (en los CD-WR se tiene una sola pista en espiral) Las unidades PD también pueden leer discos con espiral (CD-ROM, CD-R, CD-RW), de donde proviene la denominación "dual". Por tal motivo aparecen con la denominación PD/CD-ROM
Otras Tecnologías DVD-ROM
Los DVD-ROM (Digital Versatil Disk) de "simple capa" tienen el mismo tamaño que un CD-ROM de 680 MB, y se basan en la misma tecnología de grabación y lectura que éstos, pero pueden almacenar 4,7 GB de datos (7 veces más), video o audio. Típicamente pueden transferir unos 1,3 MB/seg para computación (como un CDx1O). Esto se ha logrado:

  • Disminuyendo a la mitad la longitud de los "pits" en relación a un CD-ROM
  • Llevando al doble que un CD-ROM el número de vueltas por pulgada radial de la espiral(un CD-ROM presenta 16000 vueltas por pulgada radial).
  • Usando un haz láser de color azul, de menor longitud de onda que el rojo, a- fin de poder sensar "pits" de menor longitud.
 

 
El DVD estándar que se comercializará en el mercado es fruto del acuerdo entre Phillips - Sony y Toshiba. Este DVD puede almacenar 2 hs de video de calidad, con títulos y sonido. Asimismo, los 4,7 GB permiten guardar 135 minutos de films (duración típica de una película de cine) en reemplazo de una cinta de video. Esto es así, dado que con compresión MPEG2 se requiere, para transferir imagen, sonido y títulos, cerca de 0,5 MB/seg. Si efectuamos: 135 min x 60 seg/min x 0,5 MB/seg., resulta un valor cercano a 4,7 GB.
Los DVD-ROM de "doble capa" presentan (figura 3) una capa semi-transparente reflectiva con oro (que puede guardar 3,8 GB), la cual se encuentra debajo de la capa reflectora (4,7 GB) metalizada con plata. Sumando ambas capacidades resultan en total 8,5 GB.
Para leer la capa semi-transparente el haz láser es enfocado en ella con baja potencia, mientras que la lectura de la capa reflectiva se realiza enfocando en ésta el haz, ahora con mayor potencia, para que atraviese la capa semi-transparente al incidir, y cuando se refleja.
También se están fabricando DVD-ROM de "simple capa" y "doble cara", para ser leídos en ambas caras, con lo cual se logra 4,7 GB x 2 = 9,4 GB; y DVD-ROM de "doble capa" y "doble cara", de 8,5 x 2 = 17 GB. Estos CD están muy expuestos a las rayaduras, por ser más finas las capas protectoras transparentes( Ver figura debajo)

La presente es la exposicion del tema en clase.

[Conceptos][Exposicion] Paralelismo

El paralelismo es una forma de computación en la cual varios cálculos pueden realizarse simultáneamente, basado en el principio de dividir los problemas grandes para obtener varios problemas pequeños, que son posteriormente solucionados en paralelo. Hay varios tipos diferentes de paralelismo: nivel de bit, nivel de instrucción, de datos y de tarea. El paralelismo ha sido empleado durante muchos años, sobre todo para la Computación de alto rendimiento




Las computadoras paralelas pueden clasificarse según el nivel de paralelismo que admite su hardware: equipos con procesadores multinúcleo y multi-procesador que tienen múltiples elementos de procesamiento dentro de una sola máquina y los clústeres, MPPS y grids que utilizan varios equipos para trabajar en la misma tarea. Muchas veces, para acelerar tareas específicas, se utilizan arquitecturas especializadas de computación en paralelo junto a procesadores tradicionales.
Los programas informáticos paralelos son más difíciles de escribir que los secuenciales,5 porque la concurrencia introduce nuevos tipos de errores de software, siendo las condiciones de carrera los más comunes. La comunicación y sincronización entre diferentes sub tareas son algunos de los mayores obstáculos para obtener un buen rendimiento del programa paralelo.

Para má información consultar la exposicion de ese dia.

Paralelismo
.

[Concepto][Exposicion] Multi-Procesamiento.


Multiprocesamiento, también llamado Multiproceso, en el cual tenemos la acción de dos o más Unidades de Procesamiento en las cuales están abocados, en cada una de ellas, una cantidad determinada de procesos, realizando cada una de ellas una parte o un todo del mismo. Conocemos entonces al Multiproceso, tal como su nombre lo indica, a la aptitud para hacer uso de dos o más procesos que concurren en un mismo sistema, diferenciándose lógicamente de aquellos sistemas en los que solamente pueden realizar un proceso único en un instante específico. 

La capacidad de Multitarea permite entonces hacer que una Unidad Central de Procesamiento pueda ser compartida por una gran cantidad de procesos que estén corriendo al mismo tiempo, mientras que en las últimas tecnologías propuestas, donde tenemos Múltiples CPU, podemos contar con la realización de distintas etapas del mismo proceso dividiéndose estas tareas en cada uno de los núcleos que se posean. La tarea de Multiproceso raramente sea aplicada a los usos generales del sistema, ya que existen una gran variedad de aplicaciones que realizan un manejo de Estado o Contexto (es decir, Datos Internos) en una variable cantidad al mismo tiempo, considerándose que cada uno de estos datos son incorruptibles y no pueden ser duplicados o alterados durante el proceso. 



Sin embargo, es posible que esta alteración ocurra en caso de realizarse dos o más copias de un mismo Proceso, en el caso de que los núcleos del Procesador intenten escribir o leer su Contexto al mismo tiempo. Para evitar esta corrupción de datos es necesario que en el momento de la Programación (es decir, el diseño del Software que ordenará la ejecución de los Procesos) existan herramientas de comprobación y bloqueo, de modo tal que solamente se admita a una copia del Procedimiento con la aptitud de poder modificar sus valores.

 Para mas información consultar la exposicion de ese dia.

Multiprocesamiento 
Un concepto que está estrechamente ligado a esta funcionalidad es justamente el de Multiprocesamiento, también llamado Multiproceso, en el cual tenemos la acción de dos o más Unidades de Procesamiento en las cuales están abocados, en cada una de ellas, una cantidad determinada de procesos, realizando cada una de ellas una parte o un todo del mismo.

... Fuente http://www.mastermagazine.info/termino/6037.php
Un concepto que está estrechamente ligado a esta funcionalidad es justamente el de Multiprocesamiento, también llamado Multiproceso, en el cual tenemos la acción de dos o más Unidades de Procesamiento en las cuales están abocados, en cada una de ellas, una cantidad determinada de procesos, realizando cada una de ellas una parte o un todo del mismo.

... Fuente http://www.mastermagazine.info/termino/6037.php
Multiprocesamiento, también llamado Multiproceso, en el cual tenemos la acción de dos o más Unidades de Procesamiento en las cuales están abocados, en cada una de ellas, una cantidad determinada de procesos, realizando cada una de ellas una parte o un todo del mismo. Conocemos entonces al Multiproceso, tal como su nombre lo indica, a la aptitud para hacer uso de dos o más procesos que concurren en un mismo sistema, diferenciándose lógicamente de aquellos sistemas en los que solamente pueden realizar un proceso único en un instante específico. La capacidad de Multitarea permite entonces hacer que una Unidad Central de Procesamiento pueda ser compartida por una gran cantidad de procesos que estén corriendo al mismo tiempo, mientras que en las últimas tecnologías propuestas, donde tenemos Múltiples CPU, podemos contar con la realización de distintas etapas del mismo proceso dividiéndose estas tareas en cada uno de los núcleos que se posean. La tarea de Multiproceso raramente sea aplicada a los usos generales del sistema, ya que existen una gran variedad de aplicaciones que realizan un manejo de Estado o Contexto (es decir, Datos Internos) en una variable cantidad al mismo tiempo, considerándose que cada uno de estos datos son incorruptibles y no pueden ser duplicados o alterados durante el proceso. Sin embargo, es posible que esta alteración ocurra en caso de realizarse dos o más copias de un mismo Proceso, en el caso de que los núcleos del Procesador intenten escribir o leer su Contexto al mismo tiempo. Para evitar esta corrupción de datos es necesario que en el momento de la Programación (es decir, el diseño del Software que ordenará la ejecución de los Procesos) existan herramientas de comprobación y bloqueo, de modo tal que solamente se admita a una copia del Procedimiento con la aptitud de poder modificar sus valores.

... Fuente http://www.mastermagazine.info/termino/6037.php
Multiprocesamiento, también llamado Multiproceso, en el cual tenemos la acción de dos o más Unidades de Procesamiento en las cuales están abocados, en cada una de ellas, una cantidad determinada de procesos, realizando cada una de ellas una parte o un todo del mismo. Conocemos entonces al Multiproceso, tal como su nombre lo indica, a la aptitud para hacer uso de dos o más procesos que concurren en un mismo sistema, diferenciándose lógicamente de aquellos sistemas en los que solamente pueden realizar un proceso único en un instante específico. La capacidad de Multitarea permite entonces hacer que una Unidad Central de Procesamiento pueda ser compartida por una gran cantidad de procesos que estén corriendo al mismo tiempo, mientras que en las últimas tecnologías propuestas, donde tenemos Múltiples CPU, podemos contar con la realización de distintas etapas del mismo proceso dividiéndose estas tareas en cada uno de los núcleos que se posean. La tarea de Multiproceso raramente sea aplicada a los usos generales del sistema, ya que existen una gran variedad de aplicaciones que realizan un manejo de Estado o Contexto (es decir, Datos Internos) en una variable cantidad al mismo tiempo, considerándose que cada uno de estos datos son incorruptibles y no pueden ser duplicados o alterados durante el proceso. Sin embargo, es posible que esta alteración ocurra en caso de realizarse dos o más copias de un mismo Proceso, en el caso de que los núcleos del Procesador intenten escribir o leer su Contexto al mismo tiempo. Para evitar esta corrupción de datos es necesario que en el momento de la Programación (es decir, el diseño del Software que ordenará la ejecución de los Procesos) existan herramientas de comprobación y bloqueo, de modo tal que solamente se admita a una copia del Procedimiento con la aptitud de poder modificar sus valores.

... Fuente http://www.mastermagazine.info/termino/6037.php
Multiprocesamiento, también llamado Multiproceso, en el cual tenemos la acción de dos o más Unidades de Procesamiento en las cuales están abocados, en cada una de ellas, una cantidad determinada de procesos, realizando cada una de ellas una parte o un todo del mismo. Conocemos entonces al Multiproceso, tal como su nombre lo indica, a la aptitud para hacer uso de dos o más procesos que concurren en un mismo sistema, diferenciándose lógicamente de aquellos sistemas en los que solamente pueden realizar un proceso único en un instante específico. La capacidad de Multitarea permite entonces hacer que una Unidad Central de Procesamiento pueda ser compartida por una gran cantidad de procesos que estén corriendo al mismo tiempo, mientras que en las últimas tecnologías propuestas, donde tenemos Múltiples CPU, podemos contar con la realización de distintas etapas del mismo proceso dividiéndose estas tareas en cada uno de los núcleos que se posean. La tarea de Multiproceso raramente sea aplicada a los usos generales del sistema, ya que existen una gran variedad de aplicaciones que realizan un manejo de Estado o Contexto (es decir, Datos Internos) en una variable cantidad al mismo tiempo, considerándose que cada uno de estos datos son incorruptibles y no pueden ser duplicados o alterados durante el proceso. Sin embargo, es posible que esta alteración ocurra en caso de realizarse dos o más copias de un mismo Proceso, en el caso de que los núcleos del Procesador intenten escribir o leer su Contexto al mismo tiempo. Para evitar esta corrupción de datos es necesario que en el momento de la Programación (es decir, el diseño del Software que ordenará la ejecución de los Procesos) existan herramientas de comprobación y bloqueo, de modo tal que solamente se admita a una copia del Procedimiento con la aptitud de poder modificar sus valores.

... Fuente http://www.mastermagazine.info/termino/6037.php
Multiprocesamiento, también llamado Multiproceso, en el cual tenemos la acción de dos o más Unidades de Procesamiento en las cuales están abocados, en cada una de ellas, una cantidad determinada de procesos, realizando cada una de ellas una parte o un todo del mismo. Conocemos entonces al Multiproceso, tal como su nombre lo indica, a la aptitud para hacer uso de dos o más procesos que concurren en un mismo sistema, diferenciándose lógicamente de aquellos sistemas en los que solamente pueden realizar un proceso único en un instante específico. La capacidad de Multitarea permite entonces hacer que una Unidad Central de Procesamiento pueda ser compartida por una gran cantidad de procesos que estén corriendo al mismo tiempo, mientras que en las últimas tecnologías propuestas, donde tenemos Múltiples CPU, podemos contar con la realización de distintas etapas del mismo proceso dividiéndose estas tareas en cada uno de los núcleos que se posean. La tarea de Multiproceso raramente sea aplicada a los usos generales del sistema, ya que existen una gran variedad de aplicaciones que realizan un manejo de Estado o Contexto (es decir, Datos Internos) en una variable cantidad al mismo tiempo, considerándose que cada uno de estos datos son incorruptibles y no pueden ser duplicados o alterados durante el proceso.

... Fuente http://www.mastermagazine.info/termino/6037.php
Multiprocesamiento, también llamado Multiproceso, en el cual tenemos la acción de dos o más Unidades de Procesamiento en las cuales están abocados, en cada una de ellas, una cantidad determinada de procesos, realizando cada una de ellas una parte o un todo del mismo. Conocemos entonces al Multiproceso, tal como su nombre lo indica, a la aptitud para hacer uso de dos o más procesos que concurren en un mismo sistema, diferenciándose lógicamente de aquellos sistemas en los que solamente pueden realizar un proceso único en un instante específico. La capacidad de Multitarea permite entonces hacer que una Unidad Central de Procesamiento pueda ser compartida por una gran cantidad de procesos que estén corriendo al mismo tiempo, mientras que en las últimas tecnologías propuestas, donde tenemos Múltiples CPU, podemos contar con la realización de distintas etapas del mismo proceso dividiéndose estas tareas en cada uno de los núcleos que se posean. La tarea de Multiproceso raramente sea aplicada a los usos generales del sistema, ya que existen una gran variedad de aplicaciones que realizan un manejo de Estado o Contexto (es decir, Datos Internos) en una variable cantidad al mismo tiempo, considerándose que cada uno de estos datos son incorruptibles y no pueden ser duplicados o alterados durante el proceso.

... Fuente http://www.mastermagazine.info/termino/6037.php

lunes, 27 de abril de 2015

[Concepto][Exposicion] Inanicion de un sistema.

La inanición (starvation en inglés) es un problema relacionado con los sistemas multi-tarea, donde a un proceso o un hilo de ejecución se le deniega siempre el acceso a un recurso compartido. Sin este recurso, la tarea a ejecutar no puede ser nunca finalizada.
La inanición es una situación similar al interbloqueo, pero las causas son diferentes. 

En el inter bloqueo, dos procesos o dos hilos de ejecución llegan a un punto muerto cuando cada uno de ellos necesita un recurso que es ocupado por el otro. En cambio, en este caso, uno o más procesos están esperando recursos ocupados por otros procesos que no se encuentran necesariamente en ningún punto muerto.
Un caso de inanición la ilustra perfectamente la paradoja conocida como la cena de los filósofos de Edsger Dijkstra cuando se da el caso de que todos los filósofos cogen el tenedor a la vez.



La utilización de prioridades en muchos sistemas operativos multitarea podría causar que procesos de alta prioridad estuvieran ejecutándose siempre y no permitieran la ejecución de procesos de baja prioridad, causando inanición en estos. Es más, si un proceso de alta prioridad está pendiente del resultado de un proceso de baja prioridad que no se ejecuta nunca, entonces este proceso de alta prioridad también experimenta inanición (esta situación se conoce como inversión de prioridades). Para evitar estas situaciones los planificadores modernos incorporan algoritmos para asegurar que todos los procesos reciben un mínimo de tiempo de CPU para ejecutarse.

Para ampliar la informacion, se dispone de la exposicion de ese dia.

Inanicion de los sistemas 

martes, 21 de abril de 2015

[Concepto][Exposicion] Bloqueo Mutuo.

En sistemas operativos, el bloqueo mutuo es el bloqueo permanente de un conjunto de procesos o hilos de ejecución en un sistema concurrente que compiten por recursos del sistema o bien se comunican entre ellos. A diferencia de otros problemas de concurrencia de procesos, no existe una solución general para los inter bloqueos. Todos los interbloqueos surgen de necesidades que no pueden ser satisfechas, por parte de dos o más procesos.

Condiciones necesarias.

Estas condiciones deben cumplirse simultáneamente y no son totalmente independientes entre ellas.
Sean los procesos P0, P1, ..., Pn y los recursos R0, R1, ..., Rm:
  • Condición de exclusión mutua: existencia de al menos de un recurso compartido por los procesos, al cual sólo puede acceder uno simultáneamente.
  • Condición de retención y espera: al menos un proceso Pi ha adquirido un recurso Ri, y lo retiene mientras espera al menos un recurso Rj que ya ha sido asignado a otro proceso.
  • Condición de no expropiación: los recursos no pueden ser expropiados por los procesos, es decir, los recursos sólo podrán ser liberados voluntariamente por sus propietarios.
  • Condición de espera circular: dado el conjunto de procesos P0...Pm(subconjunto del total de procesos original),P0 está esperando un recurso adquirido por P1, que está esperando un recurso adquirido por P2,... ,que está esperando un recurso adquirido por Pm, que está esperando un recurso adquirido por P0. Esta condición implica la condición de retención y espera.
  •  
Para informacion adcional sobre Bloqueo Mutuo, consultar la exposicion de ese dia.

Bloqueo Mutuo 

[Concepto][Exposicion] RISC Y CISC

RISC

En arquitectura computacional, RISC (del inglés Reduced Instruction Set Computer, en español Computador con Conjunto de Instrucciones Reducidas) es un tipo de diseño de CPU generalmente utilizado en microprocesadores o micro controladores con las siguientes características fundamentales:
  1. Instrucciones de tamaño fijo y presentadas en un reducido número de formatos.
  2. Sólo las instrucciones de carga y almacenamiento acceden a la memoria de datos.
Además estos procesadores suelen disponer de muchos registros de propósito general.
El objetivo de diseñar máquinas con esta arquitectura es posibilitar la segmentación y el paralelismo en la ejecución de instrucciones y reducir los accesos a memoria. Las máquinas RISC protagonizan la tendencia actual de construcción de microprocesadores. PowerPC, DEC Alpha, MIPS, ARM, SPARC son ejemplos de algunos de ellos.
RISC es una filosofía de diseño de CPU para computadora que está a favor de conjuntos de instrucciones pequeñas y simples que toman menor tiempo para ejecutarse. El tipo de procesador más comúnmente utilizado en equipos de escritorio, el x86, está basado en CISC en lugar de RISC, aunque las versiones más nuevas traducen instrucciones basadas en CISC x86 a instrucciones más simples basadas en RISC para uso interno antes de su ejecución.


SISC

(Simple Instruction Set Computing) es un tipo de arquitectura de microprocesadores orientada al procesamiento de tareas en paralelo. Esto se implementa mediante el uso de la tecnología VLSI, que permite a múltiples dispositivos de bajo costo que se utilicen conjuntamente para resolver un problema particular dividido en partes disjuntas. La arquitectura RISC es un subconjunto del SISC, centrada en la velocidad de procesamiento debido a un conjunto de instrucciones reducido. Microprocesadores SISC (o RISC) nunca han logrado amenazar el amplio dominio de los procesadores CISC en los ordenadores personales, debido a su popularidad y al aumento constante en la capacidad de procesamiento de los mismos. Por lo tanto, el uso de RISC y SISC sigue limitado a necesidades muy específicas de procesamiento, como en los procesadores DSP.





Adicionalmente encontraremos información profundizada en la presentación realizada ese dia. 

[Concepto] Procesos



Un proceso puede informalmente entenderse como un programa en ejecución. Formalmente un proceso es "Una unidad de actividad que se caracteriza por la ejecución de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociados".

Cada proceso tiene su contador de programa, registros y variables, aislados de otros procesos, incluso siendo el mismo programa en ejecución 2 veces. Cuando este último caso sucede, el sistema operativo usa la misma región de memoria de código, debido a que dicho código no cambiará, a menos que se ejecute una versión distinta del programa.
Los procesos son gestionados por el sistema operativo y están formados por:
  • Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador.
  • Su estado de ejecución en un momento dado, esto es, los valores de los registros de la unidad central de procesamiento para dicho programa.
  • Su memoria de trabajo (memoria crítica), es decir, la memoria que ha reservado y sus contenidos.
  • Otra información que permite al sistema operativo su planificación.
Un proceso se rige en pequeñas porciones, conocidas como páginas, y cada proceso tiene su propia tabla de paginación, fungiendo como una optimización del sistema operativo ante los fallos de página.

lunes, 16 de marzo de 2015

[Concepto] Particiones fijas y Particiones dinamicas.

Existen 2 modos en las que se particionan las unidades de memoria, unas son las particiones fijas y otras son las particiones dinamicas, cada una tiene sus propias ventajas y desventajas, aunque actualmente el modo de particiones fijas se considera obsoleto.

PARTICIONES FIJAS.

 Las particiones fijas como su nombre lo indica son espacios de memoria con un tamaño previamente dispuesto, las tareas deben buscar entre los espacios en cual pueden ejecutarse completamente, existen 4 tipos de ajustes que ayudan a las tareas a buscar un espacio de memoria.

Primer ajuste: Con este criterio se asigna la tarea al primer espacio de memoria que la soporte.

Mejor ajuste: Se revisan todos los espacios de memoria y se asigna la tarea al espacio que proporciona la menor cantidad de fragmentación (o ningna de ser posible).

Peor ajuste: Se asigna cada nuevo proceso al espacio de memoria más grande que se encuentre libre en ese momento.

Siguiente ajuste: Los espacios de memoria a tener en cuenta para asignar la proxima tarea se empiezan a contar tras el ultimo espacio de memoria utilizado y no desde el principio.

PARTICIONES DINAMICAS.

 Las particiones dinamicas solo poseen una pequeña diferencia con las fijas, y es que la memoria se inicializa sin particiones y estas se crean al maximo de las tareas que entran, sin embargo cuando una tarea se finaliza, su particion queda alli y las siguientes tareas deberan ajustarse a las particiones que hayan creado las tareas anteriores, por q las particiones una vez establecidas se vuelven fijas.

martes, 10 de marzo de 2015

[Concepto] Fragmentación.

La fragmentación son pequeños espacios de memoria residuales que no son usados por una tarea, si una tarea tiene un tamaño menor que el espacio de memoria asignado a ella, el espacio libre se "fragmenta" quedando vacio pero sin poder ser aprovechado por otra tarea.

La desfragmentacion es el proceso en el cual se acomodan las tareas quedan en un area continua entre ellos, sin embargo esto solo aplica a determinados modos de administración de las tareas cuando estas han finalizado y el espacio de memoria nuevamente queda libre para otra tarea.

Aqui un pequeño ejemplo, se puede apreciar en esta memoria con particiones fijas de 30 unidades cada una, que los procesos que ocupan menos de 30 unidades como la tarea C y la tarea G tienen un espacio no usado de 10 y 15 unidades respectivamente, este espacio no utilizado se fragmenta y no se puede usar hasta que la tarea se termine.

lunes, 9 de marzo de 2015

[Concepto] Memoria.

En sistemas, la memoria es el dispositivo que retiene información, las hay de diferentes tipos, dependiendo del tiempo que retienen sus datos, como la RAM (Random Acces Memory) o la memoria virutal que almacena de datos de manera temporal, tambien se pueden clasificar si son de solo lectura como la memoria ROM (Read Only Memory) u otros tipos de dispositivos de almacenamiento como los CD, y aquellos que pueden ser escritos y leidos cuantas veces quieran.

Además, se refleja una diferencia técnica importante y significativa entre "memoria" y "dispositivos de almacenamiento masivo", que se ha ido diluyendo por el uso histórico de los términos "almacenamiento primario", para memorias de acceso aleatorio, y "almacenamiento secundario", para dispositivos de almacenamiento masivo. 





Jerarquia de Memoria.

La jerarquía de memoria es la organización piramidal de la memoria en niveles que tienen las computadoras. El objetivo es conseguir el rendimiento de una memoria de gran velocidad al coste de una memoria de baja velocidad.

«Jerarquia memoria» de ComputerMemoryHierarchy.png: User:Danlash at en.wikipedia.

Principalmente la jerarquia de memoria se basa en 3 puntos basicos.
  • Capacidad
  • Velocidad
  • Coste por bit.
La cuestión de la capacidad es simple, cuanto más memoria haya disponible, más podrá utilizarse.

La velocidad óptima para la memoria es la velocidad a la que el microprocesador puede trabajar, de modo que no haya tiempos de espera entre cálculo y cálculo, utilizados para traer instrucciones o guardar resultados.

El coste de la memoria no debe ser excesivo, para que sea posible construir un equipo accesible.

Los tres factores compiten entre sí, por lo que hay que encontrar un equilibrio.

  • A menor tiempo de acceso, mayor coste.
  • A mayor capacidad, menor coste por bit.
  • A mayor capacidad, menor velocidad.
En conclución se busca entonces contar con capacidad suficiente de memoria, con una velocidad que sirva para satisfacer la demanda de rendimiento y con un coste que no sea excesivo.

[Concepto] Sistema Operativo

Un sistema operativo, es un conjunto de programas de un sistema informatico que gestiona los recursos de hardware y provee servicios a los programas.

[Imagen]

Uno de los propositos del sistema operativo es gestionar el nucleo intermedio, administrando los recursos de localizacion y proteccion de los recursos de hardware. Actualmente la mayoria de los aparatos electronicos utilizan microprocesadores para funcionar, estos llevan su propia sistema operativo, a veces usando su propia interfaz grafica de usuario, con gestor de ventanas o un entorno de escritorio.

Clasificación de los sistemas operativos.

Los sistemas operativos pueden ser clasificados de la siguiente forma:

  • Multiusuario: Permite que dos o más usuarios utilicen sus programas al mismo tiempo. Algunos sistemas operativos permiten a centenares o millares de usuarios al mismo tiempo.  
  • Multiprocesador: soporta el abrir un mismo programa en más de una CPU.
  • Multitarea: Permite que varios programas se ejecuten al mismo tiempo. 
  • Multitramo: Permite que diversas partes de un solo programa funcionen al mismo tiempo.  
  • Tiempo Real: Responde a las entradas inmediatamente. Los sistemas operativos como DOS y UNIX, no funcionan en tiempo real.

Interacción entre el SO con el resto de las partes.