miércoles, 31 de agosto de 2016

MAQUINAS VIRTUALES

Las Máquinas Virtuales. Descripción y funciones. Ejemplo de funcionamiento de VirtualBox.

¿Que es una Máquina Virtual?
Explicándolo de una forma sencilla una Máquina Virtual de Sistema es un programa que nos permite albergar un Ordenador Ficticio dentro de un Ordenador existente, es decir, un software que simula por completo el comportamiento de un Ordenador real sin que este exista, albergado virtualmente en un ordenador físico.
Este tipo de programas nos permitirán con un solo PC disponer de múltiples Sistemas Operativos funcionando simultáneamente usando tan solo una única máquina física.
Utilidades y generalidades de las Maquinas Virtuales.
Las Máquinas virtuales tienen multitud de aplicaciones, nos permiten disponer de un ordenador con el que podemos funcionar sin miedo a estropear la configuración del ordenador anfitrión, podemos probar Sistemas Operativos nuevos en versión beta, instalar otros que no conocemos para familiarizarnos con los mismos y hacer experimentos de todo tipo sin correr ningún riesgo.
En una sola máquina Virtual podemos por ejemplo instalar varios PCS virtuales con distintos sistemas operativos y estudiar la forma de conectarlos en una red a través también de routers virtuales.
Otra utilidad primordial consiste en poder trabajar con aplicaciones que funcionan sobre distintos sistemas operativos al que posee el ordenador anfitrión, disponiendo de un solo Ordenador físico, esto a veces, resulta prácticamente imprescindible, cuando un ordenador con un sistema Operativo Servidor necesita trabajar con un programa que no corre sobre ese sistema servidor.
Las máquinas virtuales se usan, por lo tanto, de forma muy frecuente en el ámbito profesional y en la enseñanza, podremos, usándolas, probar y estudiar cómodamente distintos sistemas operativos, plataformas de programación, comportamiento de programas inestables etc.
Los Emuladores son un tipo de máquinas virtuales cuya única diferencia es que solo soportan un sistema, por ejemplo existen emuladores de videoconsolas, de sistemas Operativos móviles, como Android o Symbian etc. esto también puede resultar de gran utilidad.
Aunque en este articulo nos referimos principalmente a las Maquinas Virtuales de Sistema debemos saber que existe otro tipo de Máquinas Virtuales, llamadas de proceso, la diferencia entre ellas es que las segundas solo pueden ejecutar un proceso simultáneamente y su comportamiento no se distingue en la práctica de un programa convencional, aunque si que son máquinas virtuales puesto que a diferencia de una aplicación convencional trabajan aisladas del sistema anfitrión a pesar de estar alojadas en el, además su misión no es emular un sistema operativo si no funcionar como una plataforma independiente, un ejemplo de este tipo es la Máquina Virtual de Java.
Como principal inconveniente, las Maquinas Virtuales incrementan notablemente el trabajo que soporta el Equipo Físico anfitrión, cada Sistema Operativo en funcionamiento añade una carga de procesos enorme y ante todo ocupa una gran cantidad de memoria RAM, es imprescindible, por lo tanto, disponer de un Ordenador potente y con gran cantidad de memoria si queremos hacer correr a varios SO simultáneamente.
Algunas máquinas virtuales.
Algunas de las máquinas virtuales más conocidas y usadas del mundo son: VMware Workstation, VirtualPC, Hiper-V, VirtualBox…
• VMware Workstation: Software desarrollado por EMC Corporation, empresa especializada en entornos de virtualización, es un programa completísimo y muy usado a nivel profesional, dispone de varias aplicaciones adicionales algunas de ellas gratuitas, nos permite incluso virtualizar un sistema físico real completo y transportarlo a cualquier ordenador anfitrión, es multiplataforma pudiendo instalarse sobre sistemas anfitriones Windows, Linux y Mac, evidentemente es una aplicación que en su versión completa es de pago, aunque algunas de sus aplicaciones son gratuitas.
• Virtual PC: Software propiedad de Microsoft, gratuito para instalar Windows XP sobre un Equipo Anfitrión con SO Windows 7, siempre y cuando la licencia de este sea legal. Solo funciona correctamente con Sistemas Windows tanto como Anfitrión o como Sistema invitado.
• Hiper-V: Es un Sistema de Máquina Virtual implementado en el Sistema Operativo Servidor Windows Server 2008, por lo tanto, está diseñado para funcionar exclusivamente sobre este Sistema Operativo quedando por lo tanto su uso relegado en la práctica al uso profesional.
• VirtualBox: Software desarrollado y propiedad de Oracle, completamente gratuito para uso no comercial, muy completo e indicado para el uso privado dada su gratuidad y eficacia, es además multiplataforma, siendo totalmente compatible con Sistemas Linux, Windows y Mac, muy recomendable para iniciarse en el mundo de la virtualización.
VirtualBox. Instalación y uso.
Vamos a explicar la instalación de VirtualBox, en primer lugar debemos descargar la aplicación, cuyo uso, repito, es gratuito para uso no comercial, desde el vínculo:
http://virtualbox.softonic.com/descargar
Una vez descargada procedemos a su instalación:
myegoo_1

Dejamos las opciones por defecto y pulsamos en “next” (siguiente):myegoo_2myegoo_3
 Aceptamos e instalamosmyegoo_4myegoo_5myegoo_6
 Hasta aquí la instalación de VirtualBox, vamos ahora a crear un ordenador virtual desde cero.
Para empezar abrimos VirtualBox, pinchando en el icono que se nos ha creado en el escritorio, si la hemos instalado sobre Windows 7 automáticamente el idioma de la aplicación será el mismo que el del SO, en este caso el español, veremos la siguiente pantalla:myegoo_7

Para crear una nueva máquina virtual (un ordenador Virtual) debemos en primer lugar disponer del sistema operativo a instalar, bien en una unidad óptica, CD o DVD o una imagen de disco .ISO cuya extensión es compatible con VirtualBox. Se nos abrirá el asistente y pulsamos en Next (siguiente), en esta pantalla daremos nombre a la nueva máquina virtal, en este caso “NuevoXP”, es bueno escoger en las dos pestañas inferiores el SO que vamos a instalar y su versión, aunque no resulta imprescindible si que es aconsejable, de esta manera el asistente sabrá automáticamente que características mínimas necesitará el nuevo Ordenador.myegoo_8

Lo siguiente será asignar la memoria Ram que dedicaremos a la máquina virtual, podremos ver la cantidad disponible total en el sistema anfitrión, debemos tener en cuenta que cuando la nuestra máquina virtual este en funcionamiento la memoria RAM asignada a esta no podrá ser usada por el sistema anfitrión, en este caso asignaremos a la máquina 1 GB (1024 MB), y pulsaremos Next.myegoo_9

En la siguiente pantalla podremos escoger entre crear un disco duro virtual robando el espacio al equipo anfitrión o usar un disco duro existente completo, las siguiente opción nos permitirá elegir una extensión para el disco duro virtual distinta a la nativa de VirtuaBox que sea compatible con otros softwares de virtualización si es que pensamos exportar nuestro PC virtual a otro programa, en este caso dejaremos la extensión por defecto.
 myegoo_10
 myegoo_11
En esta opción si escogemos reservado dinámicamente el espacio del Disco duro Virtual aumentará automáticamente de ser necesario, en caso contrario el espacio será fijo, después escogeremos el tamaño de este.myegoo_12
 myegoo_13

Nos aparecerá una pantalla con las especificaciones del disco duro virtual que crearemos.
 myegoo_14
Pulsamos en crear y habremos creado el nuevo ordenador, veremos una pantalla con las características de este:
 myegoo_15
Al pulsar crear, podremos ver en unos segundos nuestro nuevo ordenador ya listo.
Nos falta instalar el sistema Operativo, el proceso es el mismo que si lo lleváramos a cabo en un equipo real, aunque en vez de escoger instalar el SO (en este caso WindowsXP), desde un CD, podremos hacerlo también usado una imagen ISO del disco de Instalación, para ello pulsamos en el botón verde “iniciar”, y veremos el asistente de instalación del nuevo SO para la máquina virtual:
 myegoo_16
Escogemos la unidad que contiene el CD de instalación del Sistema Operativo, podremos escoger una unidad Óptica del equipo anfitrión o también como previamente he comentado una imagen ISO del disco de instalación, en este caso haré uso de una imagen de DVD ISO en la que previamente he preparado una versión de Windows XP con el Service Pack 3 y un montón de Drivers ya incorporados.
 myegoo_17
 myegoo_18
Una vez asegurados de que todo esta correcto pulsamos en “Iniciar” y la instalación comenzará de la misma manera que si se tratase de un ordenador físico, por lo tanto el proceso a seguir será exactamente el mismo que en ese caso, como podemos ver en la siguiente Imagen.

 

myegoo_19

miércoles, 10 de agosto de 2016

SYMBIAN OS

HISTORIA GENERALIDADES PROCESOS E HILOS Y ADMINISTRACION DE LA MEMORIA DE SYMBIAN OS

 
Symbian
 Descripción
Apareció en el año 2001 junto con el dispositivo Nokia 9210 comunicator, es la primera versión symbian dedicada a móviles. Este sistema operativo fue la alianza de varias empresas de teléfono, dentro de las que se encuentran Nokia, Sony Ericsson, Samsung y Siemens.  Sus orígenes provienen del EPOC32, otro sistema operático para dispositivos móviles, el cual pertenece a una familia de sistemas operativos que tiene sus orígenes a finales de 1980 y principios de 1990con el EPOC16.
Symbian os es un sistema operativo diseñado específicamente para dispositivos móviles con el objetivo de funcionar en un espacio pequeño, con escasos recursos de memoria y preparado para administrar de manera eficiente la energía.
Versiones
           
EPOC32 1.0-5.1: El nombre de las versiones 1.0 a la 5.1 permaneció como EPOC32, la primera versión apareció en 1997 con el handled Psion Series 5, EPOC está escrito completamente en c++ y más tarde cambiaria al nombre de Symbian.
Symbian OS 6.0: Apareció en el año 2001 junto con el dispositivo Nokia 9210 comunicator, es la primera versión symbian dedicada a móviles.
Symbian OS 6.1: Apareció en el 2002 junto con el Nokia 7650 se añadió soporte bluetoth en esta versión.
Symbian OS 7.0: Apareció en el 2003 en el Nokia 6600 no presenta grandes cambios en comparación a su versión anterior.
Symbian OS 8.0: Hizo su aparición en el año 2004 junto con el Nokia 6630 cambios en la interfaz gráfica en relación a las versiones anteriores.
Symbian OS 9.1: Hizo su aparición en el año 2006 con el Nokia 3250 en esta versión se añade soporte para los nuevos teléfonos con pantallas a color.
Symbian OS 9.3: Apareció en el 2008 con el Nokia 5320 grandes cambios en esta versión como el poder asociar imágenes con contactos, transición de pantallas entre otros.
Symbian OS 9.5: Revelado en el 2010 junto con el Nokia N8 es considerada la nueva generación de Symbian ya que se empiezan a utilizar en smarthphones, se agregan entradas USB, soporte HDMI y algunas mejoras estéticas.
Symbian Belle 10.1: Apareció el 7 de febrero del 2012 en forma de actualización en el Nokia 603,700 y 701, cambia el nombre a belle mejoras graficas interfaz, navegación y notificaciones.
Symbian Belle Feature Pack 1: Aparece el 14 de abrir del 2012 en forma de actualización del belle agrega características como la navegación en html 5 y compatibilidad con dolby surround.
VENTAJAS
  • Instalación de programas y juegos

DESVENTAJAS

  • El precio de los móviles que incluyen Symbian suele ser más caro que el de los modelos que no lo llevan.

  • El equipo tarda en responder.

Conclusiones

  • Actualmente existe una gran gama de sistemas operativos, robustos y eficaces, que garantizan que siempre tendremos una opción que se ajuste a nuestras necesidades.
  • Apple ha demostrado a través de la historia que sus sistemas operativos se han caracterizado por su seguridad, sencillez y elegancia, además de ser uno de los sistemas operativos más sofisticados del mercado.
  • NetWare está desarrollado con un conjunto de aplicaciones diseñadas, para conectar gestionar y mantener una red y sus servicios, además utiliza el software para habilitar la comunicación entre dispositivos y el compartimiento de recursos.
  •  
EN RESUMEN
Symbian
Symbian  fue un sistema operativo diseñado específicamente para dispositivos móviles con el objetivo de funcionar en un espacio pequeño, con escasos recursos de memoria y preparado para administrar de manera eficiente la energía.
Está compuesto por módulos que realizan tareas específicas e interactúan entre sí, de acuerdo a las necesidades de la aplicación y usuarios, las cuales son: Módulo base, marco de aplicación, módulo de seguridad, módulo multimedia, módulo de infraestructura de comunicación, red personal de área local, modulo de motores de uso, módulo de mensajería, módulo telefonía java.
Trabajo sobre las plataformas ARM y x86
Symbian es un sistema operativo multitarea ya que permite ejecutar más de un proceso a la vez, lo que posibilita maximizar el uso de los recursos del sistema.La multitarea facilita, además, el intercambio deinformación entre procesos. La multitarea es especialmente ventajosa en un entorno en el que gran parte de las aplicaciones están orientadas a las comunicaciones.
En los teléfonos en los que se ejecutó Symbian el almacenamiento permanente se implementa mediante memoria flash y tarjetas de expansión, mientras que la RAM se usa como memoria principal. En general, la memoria disponible suele ser de varios megabytes, y es compartida entre el sistema operativo y las aplicaciones en ejecución. Para utilizar de forma eficiente la memoria disponible, Symbian utiliza, una técnica denominada execute-in-place.
Symbian  soporta varios tipos de sistemas de archivos incluyendo FAT32 y el sistema específico de Symbian de archivamiento relámpago (flash) llamado NOR. Los sistemas de archivos no son expuestos generalmente al usuario a través de la interfaz de usuario de teléfono.
La estructura de entrada/salida de Symbian OS refleja la de otros diseños de sistemas operativos. Se resaltan algunas de las características únicas que Symbian OS utiliza para enfocarse en su plataforma de destino.
  • Drivers de dispositivos
  • Extensiones del kernel
  • Acceso directo a la memoria
  • Medios de almacenamiento
  • Bloqueo de E/S

En 2006 Symbian llego a obtener el 67% del mercado de los teléfonos inteligentes, superando a microsoft y RIM. En 2011 es terminado finalmente el desarrollo de Symbian a causa de que ya no podía hacerle competencia a nuevos sistemas operativos emergentes como Android, iOS o Windows Phone
  
Y AQUI UN REPASO DE UN VIDEO EN YOUTUBE EXPLICADO POR ALUMNOS



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




  •