sábado, 30 de julio de 2016

CRIPTOGRAFIA


CRIPTOGRAFIA


PARA EMPEZAR TENDREMOS UN VÍDEO DE INTRODUCCIÓN




Definiciones básicas:


La criptografía proviene de las palabras, "cripto" ocultar y "graphos" escritura, entonces el significado es "el arte de ocultar mensajes". La criptografía ha sido usada a lo largo de toda la historia de la humanidad. Por su naturaleza, había sido usada principalmente en guerras, o en medios de comunicación en agencias de seguridad nacional de países influyentes en el ámbito mundial. Sin embargo en la actualidad es usada ampliamente en muchas aplicaciones de uso común, como: Internet, teléfono, radio, televisión, comunicación satelital, etc. 
El objetivo principal de la criptografía en mandar un mensaje de de manera "oculta", llamado "cifrado" o "encriptado", y que sólo el receptor con una llave ó clave secreta pueda "descifrarlo" y leer su contenido. 

Básicamente hay que partir de los elementos básicos de cualquier comunicación, como lo son: un emisor, un receptor, un mensaje, y un canal de transmisión del mensaje. 




Entonces podemos definir como elementos básicos que intervienen en la criptografía a: El mensaje "original", el método de cifrado, la llave de cifrado, el mensaje cifrado, el método de descifrado, la llave de descifrado, y el mensaje descifrado. En criptografía se supone siempre la existencia de un "agente" malicioso que tiene la capacidad de interceptar el mensaje enviado y quiere saber el contenido del mensaje. El objetivo principal de la criptografía es evitar que el interceptor conozca el contenido del mensaje. 





Hoy día la criptografía tiene un significado moderno, y la podemos definir como la ciencia que estudia los problemas de seguridad en la transmisión de la información por medio de un canal que se supone siempre inseguro. Los principales problemas que existen en la transmisión de la información son: la confidencialidad, laautenticidad, la integridad, la disponibilidad y el no rechazo

  • Confidencialidad: la información es confidencial, sí solo las personas autorizadas tienen acceso al contenido de la información.
  • Integridad: la información es integra, sí existe un método con el cual se puede verificar si la información transmitida ha sido alterada o borrada. Ya que es "imposible" impedir que sea interceptada, y por lo tanto alterada o eliminada.
  • Autenticidad: se dice que un lado de la comunicación (emisor o receptor) puede verificar la autenticidad del otro lado, si existe un método de verificación que determina que el otro lado es realmente quien dice ser.
  • No-rechazo:
    se dice que un acto no puede ser rechazado por el lado A de la comunicación, si existe un método que le comprueba al otro lado, el lado B, que ese acto lo realizó realmente el lado A.
  • Disponibilidad:
    se dice que la información es disponible si está accesible a toda entidad que la requiera, ya sea una persona o un dispositivo y que cumpla los objetivos que la misma entidad le provee .
Algunas aplicaciones de la criptografía: 

  • En Internet, en el comercio electrónico, el protocolo se llama SSL (Secure Sockets Layer ).
  • En teléfonos celulares, el protocolo se llama GSM (Global System for Mobile communications ).
  • Para conectar dos servidores a largas distancias de manera segura, VPN (Virtual Private Network)
  • Para conectar computadoras manera segura, con el protocolo IPsec (Internet Protocol Secure)
  • Para conectar un cliente con un servidor de manera segura con el protocolo SSH (Open Secure Shell)
  • Para usar teléfono por Internet de manera segura, VoIP (Voice over Internet Protocol )
  • Para mandar e-mail de manera segura, S-MIME (Secure / Multipurpose Internet Mail Extensions)
  • Para usar un PDA(Personal Digital Assistant) de manera segura, WTLS (Wireless Transport Layer Security)
  • Para conectar una portátil a internet de manera segura, con el protocolo WEP (Wired Equivalent Privacy ).
  • Para ver videos, televisión por Internet, por ejemplo, con el protocolo BitTorrent
  • Para etiquetas electrónicas, Radio Frequency Identification (RFID), con el protocolo TI-RFid .
  • Para comunicación satelital con el protocolo GMPCS (Global Mobile Personal Communications by Satellite).
  • Para las "Facturas Electrónicas", con la firma digital.
  • Para comprar, vender o mandar dinero por Internet con Paypal.
  • En los cajeros automáticos ATM (Automatic Teller Machine).
  • En la política con las elecciones electrónicas (electronic voting).
  • En el derecho con los notarios electrónicos (electronic notary).
  • En casinos electrónicos por Internet.
  • En tarjetas inteligentes electrónicas (Smart Cards).


La criptografía también ha sido estrella de cine en varias películas. Algunas de ellas si bien la promueven, se alejan un poco de la realidad. Algunas películas que tiene el tema de la criptografía: 


  1. Midway, Jack Smight (Dirección), Charlton Heston, Henry Fonda, 1976.
  2. Sneakers, Phil Alden Robinson (Dirección), Jo Marr, Gary Hershberger, 1992.
  3. Breaking the code, Herbert Wise (Dirección), Derek, Alun Armstrong, 1996.
  4. U-571, Jonathan Mostow (Dirección), Matthew McConaughey, Bill Paxton, 2000.
  5. Enigma, Michael Apted (Dirección), Dougray Scott, Kate Winslet, 2001
  6. Pearl Harbor, Michael Bay (Dirección), Ben Affleck, Josh Hartnett, 2001
  7. The Sum of All Fears (La suma de todos los miedos), Phil Alden Robinson (Dirección), Ben Affleck, Morgan Freeman, 2002.
  8. Windtalkers (Códigos de Guerra), John Woo (Dirección), Nicolas Cage, Adam Beach, 2002.
  9. Da Vinci Code, Ron Howard (Dirección), Tom Hanks, Audrey Tautou, 2006.
  10. The Bletchley Circle, Rachael Stirling, Julie Graham, Sophie Rundle, 2012 TV serie.
  11. the Imitation Game, Morten Tyldum (Dirección), Benedict Cumberbatch, Keira Knightley, 2014.




En contraparte a poder dar seguridad a la transmisión de la información esta el Criptoanálisis, que es la ciencia dedicada a obtener información de una transmisión interceptada sin el conocimiento de la clave.

Se conoce entonces a la criptología, al conjunto de la criptografía y el criptoanálisis. 

De hecho, es muy posible que en la actualidad se haya especializado no solo la criptografía y el criptoanálisis puro, sino también la intercepción en las comunicaciones. Esto, está muy ligado al espionaje. De la misma manera que la criptografía existen algunas películas que recrean sus argumentos con interceptar información. 

  1. Echelon Conspiracy, Greg Marcks (dirección), Shane West, Edward Burns, 2009.
  2. The Bourne Ultimatum, Paul Greengrass (Dirección), Matt Damon, Julia Stiles, 2007.
  3. The Listening, Giacomo Martelli (Dirección), Michael Parks, Maya Sansa, 2006
  4. Enemigo público, Tony Scott (Dirección), Will Smith, Gene Hackman, 1998
  5. Eagle Eye , D.J. Caruso (Dirección), Shia LaBeouf, Michelle Monaghan, 2008.



Las funciones de hash de una vía (one-way) son una construcción criptográfica empleada en muchas aplicaciones. Son usadas junto con los algoritmos de clave pública paraencripción y firma digital.
Son usadas en la verificación de integridad, en autenticación. Conforman aplicaciones de muchos protocolos diferentes. Mucho más que los algoritmos de encripción, las funciones de hashing de una vía son los verdaderos caballos de trabajo de la criptografía moderna.
En 1990, Ron Rivest (la R de RSA) inventó la función hash MD4. En 1992, mejoró el MD4 y desarrolló otra función hash: MD5. En 1993, la Agencia Nacional de Seguridad (NSA) (organismo dependiente del gobierno de EE.UU.) publicó una función hash muy similar al MD5, llamada SHA (Secure Hash Algorithm). Cuando, en 1995, se descubrieron debilidades, la NSA hizo cambios al SHA. El nuevo algoritmo fue llamado SHA-1. Hoy la función más popular de hash es SHA-1.
Las funciones de hash de una vía deben tener dos propiedades:
  1. Ser de una sola vía. Esto significa que es fácil tomar un mensaje y computarlo en el valor del hash, pero es imposible tomar el valor del hash y recrear el mensaje original. (Por imposible se debe entender no puede ser hecho en una razonable cantidad de tiempo).
  2. Estar libres de colisiones. Quiere decir que es imposible encontrar dos mensajes que generen un digesto del mismo valor.
Quebrar una función hash significa mostrar que cada una o ambas de estas propiedades no son ciertas.
En febrero del 2005, tres criptógrafos chinos mostraron que el SHA-1 no está libre de colisiones. Esto es: desarrollaron un algoritmo para encontrar las colisiones más rápido que la fuerza bruta.
SHA-1 produce un digesto de 160-bit. Cada mensaje “hasheado” genera un número de 160-bit. Teniendo que hay infinito número de mensajes que se resumen en cada valor posible, hay infinito número de posibles colisiones. Pero debido a que el número de posibles digestos es también muy grande, la posibilidad de encontrar uno por azar es increíblemente pequeña (uno en 2**80, para ser exactos). Si se hace hashing de 2**80 mensajes aleatorios, podrá encontrar un par cuyo digesto es el mismo valor. Esta es la forma en que por “fuerza bruta” se encuentran las colisiones, y dependen únicamente de la longitud del valor del hash. "Quebrar" la función hash significa contar con la posibilidad de encontrar colisiones más rápido que eso. Y esto es lo que los chinos hicieron.
Ellos encontraron colisiones en el SHA-1 en 2**69 cálculos, cerca de 2.000 veces más rápido que la fuerza bruta. Ahora, esto es justo en el lejano borde de las facilidades de la actual teccnología. Dos cálculos masivos comprables ilustrarán este punto.
En 1999, un grupo de criptógrafos construyeron un DES cracker. Tenía la posibilidad de ejecutar 2**56 operaciones DES en 56 horas. El costo para construir la máquina fue de $ 250.000(dólares estadounidenses), los duplicados podrían haber sido hechos por 50 -75 mil dólares. Extrapolando esta máquina empleando la ley de Moore, una máquina similar construida hoy podría ejecutar 2**60 cálculos en 56 horas, y 2**69 cálculos en 3,25 años. O una máquina que cueste $25 millones - $38 millones podría ejecutar 2**69 cálculos en las mismas 56 horas.
Del lado del software, la comparación es una búsqueda de una clave de 2**64. Un artículo lo puso de esta forma en el 2002: "En el curso de la competencia, alrededor de 331.252 usuarios participantes permitieron que sus ciclos de procesador sin uso fuese empleados para descubrir la llave. Después de 1.757 días (4,81 años), un participante en Japón descubrió la llave ganadora." La ley de Moore indica que hoy este cálculo debería llevar un cuarto de su tiempo -- o habría requerido un cuarto del número de computadoras – es decir hoy un cálculo de 2**69 debería tomar ocho veces más tiempo o requerir ocho veces más computadoras.

Firma Digital

Es un medio para que los creadores de un mensaje, archivo u otra información codificada, vinculen digitalmente su identidad a la información. Se utilizan cuando los datos se distribuyen como texto no cifrado.
Lo que se busca al utilizar una firma digital, es que:
  • El receptor pueda verificar la identidad del transmisor.
  • El transmisor no pueda repudiar después el contenido del mensaje.
  • El receptor no haya podido confeccionar el mensaje él mismo.
  • Ninguna parte del mensaje que se ha recibido ha sido modificada.

Creación y Envío de Firmas Digitales

El proceso para crear una firma digital implica la transformación de información y algunos datos confidenciales del remitente en una etiqueta o firma. Se crean combinando la tecnología de claves públicas con algoritmos Hash.
Firmas digitales
Figura 3.4 Firmas Digitales
Los pasos que deben seguirse para su creación, envío y comprobación son:
  1. El remitente aplica un algoritmo Hash a los datos para generar un valor resumen.
  2. El remitente transforma el valor en una firma digital aplicando cifrado de clave privada.
  3. El remitente envía al destinatario los datos originales, la firma y su certificado de autenticidad.
  4. El destinatario aplica el algoritmo Hash a los datos y genera su propio valor resumen.
  5. El destinatario compara la firma digital (la obtiene utilizando la clave pública del remitente) y el valor que generó en el paso anterior y sí no coinciden (cuando el valor del remitente es diferente al del destinatario), el mensaje o la huella enviada han sido modificados y por lo tanto la firma no es correcta.
Certificado Digital
Es una declaración firmada digitalmente que proporciona un mecanismo para establecer una relación entre una clave pública y la entidad que posee la clave privada que le corresponde. Se utiliza para autenticar y asegurar el intercambio de información en Internet, Extranet e Intranets.
Los certificados pueden emitirse con objetivos diferentes como:
  • Autenticación de servidores Web
  • Seguridad del correo electrónico
  • Seguridad IP (IPSec)
  • Nivel de sockets seguros (SSL/TLS)
  • Firma de código e información enviada
Este certificado es firmado por una CA (Certificate Authoritym / Autoridad Certificadora), y se rige por los estándares definidos por ITU-T X.509.
Certificados digitales
Figura 3.5 Certificados Digitales

jueves, 21 de julio de 2016

SISTEMAS MULTIPROCESADOR



Definición y clasificación de sistemas multiprocesadores



multiprocesador1
Básicamente hay dos formas de incrementar el rendimiento del hardware, la primera es incrementando la velocidad del procesador, lo cual con lleva a la disminución del tamaño de los componentes, pero esta solución se ve limitada por las leyes de la física, ya que al hacer los componentes mas pequeños con la finalidad de incrementar su velocidad, comienzan a aparecer corrientes de fuga, corrientes que deberían detenerse en una compuerta lógica determinada, pero que debido a la proximidad saltan de una compuerta a otra, produciendo errores inesperados. La otra forma es tomar los componentes, replicarlos y duplicar sus estructuras para hacer un efecto de “la unión hace la fuerza”.

Como podemos ver los avances tecnológicos en los microprocesadores actuales nos han llevado a esta ultima opción, en la cual podemos ver que los procesadores multinucleo actuales son fruto de esta estrategia, esta solución no es realmente nueva pues se ha implementado desde hace mucho tiempo atrás en los sistemas multiprocesadores, en los cuales se operan varios procesadores de alta velocidad en paralelo.
La idea principal de los sistemas de multiprocesadores es lograr la unión de los procesadores de forma tal que trabajen como si se tratase de una única computadora, en la cual se encuentran reunidas las capacidades de procesamiento de todos los procesadores y claro esta del resto de los recursos asociados a estos, como lo es la RAM, la memoria secundaria y los dispositivos de entrada y salida.
Uno de los ejemplos mas básicos que podemos encontrar de un sistema multiprocesador, son los cluster. Los cluster se forman de un conjunto de computadoras que se unen via red  y que mediante un sistema operativo y software especial funcionan como si fuera una sola, un ejemplo de esto , es el cluster Olintlali de la Universidad Nacional Autónoma de México o el cluster Aitzaloa de la Universidad Autonoma Metropolitan, el cual vemos en la imagen siguiente.
aitzaloa
Los equipos de multiprocesadores son empleados generalmente para la realización de cálculos complejos en investigación científica o para simular modelos de diferentes ciencias y que serian imposibles de procesador por un equipo convencional debido a la  gran cantidad de variables a analizar.
El multiprocesamiento ofrece un aumento en la productividad al permitir la ejecución de diferentes procesos sobre diferentes procesadores, al mismo tiempo que ofrece un aumento en la velocidad con la que se ejecutan los procesos al poder ejecutar diferentes parte de un proceso sobre procesadores diferentes, pero estas mejoras no están libres de ciertas complicaciones, al realizar una ejecución paralela de un programa, las diferentes partes del programa deben de sincronizarse e intercambiar datos para poder completar los cálculos, lo cual necesita hacerse con protección, detección y corrección de errores.
Los motivos para usar un sistema multiprocesador son variados, pero podemos mencionar:
  • Rendimiento y potencia de calculo. Al ejecutar los programas de forma paralela 
  • Tolerancia a fallos. La redundancia natural de un sistema multiprocesador permite transferir un proceso a otros procesadores en caso de fallo.
  • Flexibilidad. Los sistemas multiprocesador pueden reconfigurarse dinámicamente para adaptarse a las cargas de trabajo.
  • Escalabilidad. Se pueden añadir nuevos módulos para incrementar la potencia de calculo.
  • Especialización funcional. Se pueden agregar procesadores de diseño especifico para dedicarse a una determinada tarea
Los multiprocesadores se clasifican de acuerdo a la clasificación de arquitecturas  paralelas propuesto por Flynn, en el cual se toman como componentes el flujo de instrucciones y la cantidad de datos, creando los siguientes elementos:
  • SI.- Flujo de instrucciones simple
  • MI.- Flujo de instrucciones multiple
  • SD.- Un dato simple
  • MD.- Datos multiples
Con lo cual se produce la siguiente clasificación:
  • SISD: Sistemas monoprocesador.
  • SIMD: Sistemas vectoriales en los que una instrucción puede operar sobre diferentes datos en diferentes procesadores.
  • MISD.- En este esquema multiples instrucciones operan sobre un mismo dato.
  • MIMD.- Estos incluyen a la mayoría de los multiprocesadores
Los multiprocesadores del modelo MIMD pueden ser clasificados a su vez en:
  • Fuertemente acoplados.- Cuando existe memoria global
  • Débilmente acoplados.- Cuando en lugar de memoria global se usa memoria privada
Una memoria global indica que todos los procesadores acceden a una misma memoria común, mientras que la memoria privada indica que cada procesador posee su propia memoria y que ninguno de los procesadores  tiene acceso a la memoria de otro procesador.

Y AHORA TENEMOS LO QUE ES UNA DEFINICIÓN MAS COMPLETA
Los sistemas multiprocesador son la alternativa arquitectónica que la tecnología actual ha tomado para incrementar el rendimiento de los equipos de computo y mobil mediante la unión de un cierto numero de procesadores,esto derivado de las dificultades técnicas que se presentan al tratar de incrementar la velocidad de equipos de tamaños reducidos, entre estas podemos mencionar, las corrientes de fuga.
Aunque esta alternativa en un principio suponía un costo demasiado elevado, hoy en dia, gracias a la popularización de la esta tecnología sus costos se han reducido y es común encontrar diseños de procesadores trabajando en paralelo con 2 y 4 nucleos de procesamiento.

Los sistemas de multiprocesadores suponen varias ventajas
Rendimiento y potencia de calculo
Dedicando múltiples procesadores a la ejecución de una aplicación es posible incrementar la velocidad de ejecución, la interacción entre procesadores se pueden resolver rápidamente.

Toleranecia a fallos
La redundancia es una característica natural de los sistemas con múltiples procesadores, esta característica puede usarse para aumentar la disponibilidad de los recursos o hacer labores de verificación.

Flexibilidad
Un sistema multiprocesador es capaz de redistribuir de forma dinámica la carga de trabajo de los procesadores en caso de un aumento de procesos e incluso reasignar de forma dinámica los recursos de memoria y dispositivos para aumentar la eficiencia.

Especialización funcional
Sabemos que los procesadores están compuestos por una serie de unidades funcionales que se han ido especializando en distintas labores a lo largo del tiempo, tales como la ALU (unidad aritmético lógica), PFU (unidad de punto flotante), MMX (unidad multimedia), de la misma forma los sistemas multiprocesadores aprovechan para dedicar algunos procesadores a labores complejas para así adelantar tiempo en otros procesos de forma paralela.

Costo / rendimiento
Los procesador diseñados para servidores resultan algo costosos, razón por la que unir varios procesadores para aumentar el rendimiento y la capacidad de calculo resulta en una alternativa económica para obtener un rendimiento elevado.

Clasificación

Los multiprocesadores pueden clasificarse en;
  • Fuertemente acoplados: Cuando poseen una memoria global compartida por todos los procesadores
  • débilmente acoplados: Cuando tienen memorias individuales y no existe la compartición de memoria.
Esta clasificación sabemos que no es restrictiva, dado que los procesadores multinucleos actuales usan memorias individuales privadas y al mismo tiempo usan una memoria global compartida, esto implementado desde la cache interna de los procesadores.

Interconexión en los multiprocesadores

Las arquitecturas básicas a través de las cuales se interconectan los procesadores son:
Sistemas orientados a bus
Este es el modo mas sencillo de interconexión y consiste en utilizar un bus o canal único para conectar todos los procesadores a una memoria compartida. Esta arquitectura posee la ventaja de ser simple y productiva, pero el tamaño del bus determinara en gran medida la eficiencia del sistema, esto puede solucionarse ampliando el tamaño del bus o implementando memoria cache en los procesadores para descargar el trafico de datos dentro del bus.
Sistemas conectados por barras cruzadas
En este modelo los procesadores se conectan a las memorias a través de una rejilla en donde cada nodo o intersección de la rejilla es un conmutador, produciendo que cada procesador acceda a una memoria diferente cada vez.
Este modelo aunque parece eficiente, presenta  un problema cuando los procesadores tratan de acceder a un mismo dato en la memoria, ya que solo uno puede acceder y los demás quedaran esperando.
Hipercubos
Los hipercubos abordan la problemática con una estructura en forma de cubo que permite un crecimeinto modular y una reasignación de recursos, así como una subagrupación de los procesadores dado que cada procesador esta conectado con al menos tres procesadores de forma directa estos pueden agruparse para ejecutar de forma paralela un programa que requiera gran cantidad de computo  y el resto de los procesadores se ocupara de otros procesos.

Basado en conmutadores multiples

En esta clasificación los procesadores y las memorias de un sistema se conectan pasando por una serie de conmutadores divididos en etapas, la ventaja de este diseño es que asegura el acceso a la información de diferentes memorias al mismo tiempo, pero la preparación en los conmutadores con lleva un gasto de tiempo

domingo, 10 de julio de 2016

INTERBLOQUEOS

BUENO PRIMERO UNA PEQUEÑA INTRODUCCION MEDIANTE VIDEOS PARA ADENTRARNOS AL TEMA

 
aqui otro video como apoyo y referencias sobre nuestro tema
y empezamos con nuestro desarollo

sábado, 9 de julio de 2016

PROCESOS




Procesos


  

Todos los programas cuya ejecucion solicitan los usuarios, se ejecutan en forma de procesos, de ahi la importancia para le informatico de conocerlos en detalle. El proceso se puede definir como un programa de gestion por el sistema operativo. Durante su eleccion el proceso va modificando en ejecucion y, de una forma un poco mas precisa, como la unidad de procesamiento los registro del modelo de programacion de la computadora, de acuerdo a las intrusiones de maquina involucradas.
El sistema operativo mantiene por cada proceso una serie de estructuras de informacion que permiten identificar las caracteristicas de este, asi como los recursos que tiene asignados. En esta ultima categoria entran los descriptores de los segmentos de memoria asignados, los descriptores de los archivos abiertos, los descriptores de los puertos de comunicaciones, etc.
Una parte muy importante de esta informacion se encuentra normalmente como en el llamado bloque de control de procesos (BCP). El sistema operativo mantiene una tabla de procesos con todos los BCP de los procesos. Por razones de eficiencia, la tabla de procesos se construyen normalmente como una estructura estatica, que tiene un determinado numero de BCP, todos ellos del mismo tamano. La informacion que compone un proceso es la siguiente:
  • Contenido de los segmentos de memoria en los que residen el codigo y los datos del proceso. A esta informacion se le denomina imagen de memoria o core image.
  • Contenido de los registros del modelo de programacion
  • Contenido del BCP.


Dentro de las operaciones más básicas y la vez más complejas de nuestra PC encontramos los procesos. Estos nos permitirán entrar al mundo que se "DESPERTARA" en nuestra computadora, o por lo menos seria nuestra manera de decirlo. Siempre que le pidamos a nuestra computadora que haga algo, los procesos asumirán el trabajo y de esta manera el microprocesador dará ejecución al plan que realice el sistema operativo a través de los procesos…
Proceso.
Un proceso es un concepto manejado por el sistema operativo que consiste en el conjunto formado 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 CPU para dicho programa.
  • Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos.
  • Otra información que permite al sistema operativo su planificación.
Esta definición varía ligeramente en el caso de sistemas operativos multihilo, donde un proceso consta de uno o más hilos, la memoria de trabajo (compartida por todos los hilos) y la información de planificación. Cada hilo consta de instrucciones y estado de ejecución.
Los procesos son creados y destruidos por el sistema operativo, así como también este se debe hacer cargo de la comunicación entre procesos, pero lo hace a petición de otros procesos. El mecanismo por el cual un proceso crea otro proceso se denomina bifurcación (fork). Los nuevos procesos son independientes y no comparten memoria (es decir, información) con el proceso que los ha creado.
En los sistemas operativos multihilo es posible crear tanto hilos como procesos. La diferencia estriba en que un proceso solamente puede crear hilos para sí mismo y en que dichos hilos comparten toda la memoria reservada para el proceso.


Estados de un proceso.

El principal trabajo del procesador es ejecutar las instrucciones de máquina que se encuentran en memoria principal. Estas instrucciones se encuentran en forma de programas. Para que un programa pueda ser ejecutado, el sistema operativo crea un nuevo proceso, y el procesador ejecuta una tras otra las instrucciones del mismo.
En un entorno de multiprogramación, el procesador intercalará la ejecución de instrucciones de varios programas que se encuentran en memoria. El sistema operativo es el responsable de determinar las pautas de intercalado y asignación de recursos a cada proceso.
Modelo de dos estados.

El modelo de estados más simple es el de dos estados. En este modelo, un proceso puede estar ejecutándose o no. Cuando se crea un nuevo proceso, se pone en estado de No ejecución. En algún momento el proceso que se está ejecutando pasará al estado No ejecución y otro proceso se elegirá de la lista de procesos listos para ejecutar para ponerlo en estado Ejecución.
De esta explicación se desprende que es necesario que el sistema operativo pueda seguirle la pista a los procesos, conociendo su estado y el lugar que ocupa en memoria. Además los procesos que no se están ejecutando deben guardarse en algún tipo de cola mientras esperan su turno para ejecutar.
Modelo de cinco estados
El modelo anterior de dos estados funcionaría bien con una cola FIFO y planificación por turno rotatorio para los procesos que no están en ejecución, si los procesos estuvieran siempre listos para ejecutar. En la realidad, los procesos utilizan datos para operar con ellos, y puede suceder que no se encuentren listos, o que se deba esperar algún suceso antes de continuar, como una operación de Entrada/Salida. Es por esto que se necesita un estado donde los procesos permanezcan bloqueados esperando hasta que puedan proseguir. Se divide entonces al estado No ejecución en dos estados: Listo y Bloqueado. Se agregan además un estado Nuevo y otro Terminado.
Los cinco estados de este diagrama son los siguientes:

  • Ejecución: el proceso está actualmente en ejecución.
  • Listo: el proceso está listo para ser ejecutado, sólo está esperando que el planificador así lo disponga.
  • Bloqueado: el proceso no puede ejecutar hasta que no se produzca cierto suceso, como una operación de Entrada/Salida.
  • Nuevo: El proceso recién fue creado y todavía no fue admitido por el sistema operativo. En general los procesos que se encuentran en este estado todavía no fueron cargados en la memoria principal.
  • Terminado: El proceso fue expulsado del grupo de procesos ejecutables, ya sea porque terminó o por algún fallo, como un error de protección, aritmético, etc.
Los nuevos estados Nuevo y Terminado son útiles para la gestión de procesos. En este modelo los estados Bloqueado y Listo tienen ambos una cola de espera. Cuando un nuevo proceso es admitido por el sistema operativo, se sitúa en la cola de listos. A falta de un esquema de prioridades ésta puede ser una cola FIFO. Los procesos suspendidos son mantenidos en una cola de bloqueados. Cuando se da un suceso se pasan a la cola de listos los procesos que esperaban por ese suceso.
Si existe un esquema con diferentes niveles de prioridad de procesos es conveniente mantener varias colas de procesos listos, una para cada nivel de prioridad, lo que ayuda a determinar cuál es el proceso que más conviene ejecutar a continuación.
Procesos suspendidos
Una de las razones para implementar el estado Bloqueado era poder hacer que los procesos se puedan mantener esperando algún suceso, por ejemplo una Entrada/Salida. Sin embargo, al ser mucho más lentas estas operaciones, puede suceder en nuestro modelo de cinco estados todos los procesos en memoria estén esperando en el estado Bloqueado y que no haya más memoria disponible para nuevos procesos. Podría conseguirse más memoria, aunque es probable que esto sólo permita procesos más grandes y no necesariamente nuevos procesos. Además hay un costo asociado a la memoria y de cualquier forma es probable que se llegaría al mismo estado con el tiempo.
Otra solución es el intercambio. El intercambio se lleva a cabo moviendo una parte de un proceso o un proceso completo desde la memoria principal al disco, quedando en el estado Suspendido. Después del intercambio, se puede aceptar un nuevo proceso o traer a memoria un proceso suspendido anteriormente.
El problema que se presenta ahora es que puede ser que si se decide traer a memoria un proceso que está en el estado Suspendido, el mismo todavía se encuentre bloqueado. Sólo convendría traerlo cuando ya está listo para ejecutar, esto implica que ya aconteció el suceso que estaba esperando cuando se bloqueó. Para tener esta diferenciación entre procesos suspendidos, ya sean listos como bloqueados, se utilizan cuatro estados: Listo, Bloqueado, Bloqueado y suspendido y Listo y suspendido.

Procesos en espera
Dos o más procesos pueden cooperar mediante señales de forma que uno obliga a detenerse a los otros hasta que reciban una señal para continuar.
  • Se usa una variable llamada semáforo para intercambiar señales.
  • Si un proceso esta esperando una señal, se suspende (WAIT) hasta que la señal se envíe (SIGNAL).
  • Se mantiene una cola de procesos en ESPERA en el semáforo.
  • La forma de elegir los procesos de la cola en ESPERA es mediante una política FIFO.
La sincronización explícita entre procesos es un caso particular del estado "bloqueado". En este caso, el suceso que permite desbloquear un proceso no es una operación de entrada/salida, sino una señal generada a propósito por el programador desde otro proceso.
Ya conocimos que es un proceso, ya sabemos quien controla los procesos de nuestro computador pero también podemos decir que:
  • Loprocesos son creados y destruidos por el sistema operativo, así como también este se debe hacer cargo de la comunicación entre procesos.
  • El mecanismo por el cual un proceso crea otro proceso se denomina bifurcación.
  • El sistema operativo es el responsable de determinar las pautas de intercalado y asignación de recursos a cada proceso.
  • Si existe un esquema con diferentes niveles de prioridad de procesos es conveniente mantener varias colas de procesos listos, una para cada nivel de prioridad, lo que ayuda a determinar cuál es el proceso que más conviene ejecutar a continuación.
  • La sincronización explícita entre procesos es un caso particular del estado "bloqueado". En este caso, el suceso que permite desbloquear un proceso no es una operación de entrada/salida, sino una señal generada a propósito por el programador desde otro proceso.
  •  
 y aqui mas imagenes de procesos




  •