jueves, 10 de diciembre de 2015

Virtualizaciòn


Definición
La virtualización es una tecnología probada de software que permite ejecutar múltiples sistemas operativos y aplicaciones simultáneamente en un mismo servidor. Está transformando el panorama de TI y modificando totalmente la manera en que las personas utilizan la tecnología.


Virtualización del servidor.

La virtualización del hardware implica utilizar software para crear máquinas virtuales (VM) que emulan un host físico. Esto crea un entorno de sistema operativo independiente que es, lógicamente, aislado del servidor host. Al ofrecer varias máquinas virtuales a la vez, este enfoque permite que varios sistemas operativos corran simultáneamente en una única máquina física.
En lugar de comprar varios servidores dedicados a funciones específicas que luego estará sub utilizados pagar para muchos sub utilizados máquinas servidor, la virtualización de servidores permite que las cargas de trabajo se consoliden en un número más reducido de servidores plenamente utilizados.



Ventajas de la virtualización
La virtualización puede aumentar la escalabilidad, flexibilidad y agilidad de TI, al mismo tiempo que genera ahorros significantes en los costos. Las cargas de trabajo se implementan con mayor rapidez, el rendimiento y la disponibilidad aumentan, y las operaciones se automatizan. Todo esto hace que la administración de TI sea más simple y que la operación y la propiedad sean menos costosas.
·         Mayor disponibilidad para centros de datos virtualizados a través de las mejoras tales como Live Migration.
·         Mejora de la gestión de los centros de datos virtualizados a través de PowerShell y con la integración System Center.
·         Aumento de rendimiento y soporte de hardware con Hyper-V ahora con soporte de hasta 64 procesadores lógicos y el modo de compatibilidad de procesador.
·         Mejora de rendimiento de red virtual a través de nuevas tecnologías de red.
·         Un método simplificado para las implementaciones en físico y virtual utilizando archivos Vhd.
·         Diseñado para proporcionar una plataforma informática a través de entornos físicos y virtuales de próxima generación, que permite obtener una arquitectura de seguridad.



¿Qué es una máquina virtual?

Las aplicaciones de máquina virtual permiten emular un sistema operativo dentro de otro, se requiere un sistema operativo principal (Win, Mac o linux) para poder ejecutar la máquina virtual. Veamos la lista de los cinco mejores:
·         VirtualBox (Windows/Mac/Linux, libre).
·         VMware (Windows/Linux, básico:libre, premium: $189.00)
·         Parallels (Windows/Mac/Linux, precio $79.99)
·         Windows Virtual PC (Windows, libre)

·         Qemu (Linux, libre)

Administración de memoria.

Segmentación de memoria

Sistema de gestión de memoria en un sistema operativo.
Divide la memoria en segmentos, cada uno de los cuales tiene una longitud variable, que está definida intrínsecamente por el tamaño de ese segmento del programa. Los elementos dentro de un segmento están identificados por su desplazamiento con respecto al inicio del segmento: la primera instrucción del programa, la séptima entrada de la pila, la quinta instrucción de la función Sqrt(), etc.


      


La MMU no sabe nada sobre las distintas regiones de los procesos. Sólo entiende de páginas. El sistema operativo debe guardar para cada proceso una tabla de regiones que especifiquen qué páginas pertenecen a cada región


Unidad De Manejo De Memoria
La unidad de manejo de memoria (MMU) es parte del procesador.  Sus funciones son:

  1. ·         Convertir las direcciones lógicas emitidas por los procesos en direcciones físicas.
  2. ·         Comprobar que la conversión se puede realizar.  La dirección lógica  podría no tener un dirección física asociada. 
Por ejemplo, la página correspondiente a una dirección se puede haber trasladado a una zona de Almacenamiento secundario temporalmente. Comprobar que el proceso que intenta acceder a una cierta dirección de memoria tiene permisos para ello. La MMU se Inicializa para  cada proceso del sistema.  Esto permite que cada proceso pueda usar el rango completo de direcciones lógicas (memoria virtual), ya que las conversiones de estas direcciones serán distintas para cada proceso.
En todos los procesos se configura la MMU para que la zona del núcleo solo se pueda acceder en modo privilegiado del procesador. La configuración correspondiente al espacio de memoria del núcleo es idéntica en todos los procesos.




El objetivo del intercambio es dar cabida a la ejecución de más aplicaciones de las que pueden residir simultáneamente en la memoria del sistema: Consiste en trasladar el código y los datos de un proceso completo de memoria al sistema de almacenamiento secundario, para cargar otro previamente almacenado, no permite a un proceso utilizar más memoria RAM de la que realmente existe en el sistema.  Esta técnica  puede ser ineficiente ya que se tiene que hacer el intercambio completo del proceso, aunque éste solo vaya a ejecutar una pequeña porción del código.

Durante el intercambio un proceso puede ser sacado temporalmente de memoria y llevado a un lugar especial del disco y posteriormente vuelto a memoria y continuada su ejecución. El lugar de almacenamiento temporal suele ser un espacio suficientemente grande como para acomodar copias de las imágenes de memoria de todos los usuarios.


Sistema de gestión de memoria en un sistema operativo.
Divide la memoria en segmentos, cada uno de los cuales tiene una longitud variable, que está definida intrínsecamente por el tamaño de ese segmento del programa. Los elementos dentro de un segmento están identificados por su desplazamiento con respecto al inicio del segmento: la primera instrucción del programa, la séptima entrada de la pila, la quinta instrucción de la función Sqrt(), etc.

La MMU no sabe nada sobre las distintas regiones de los procesos. Sólo entiende de páginas. El sistema operativo debe guardar para cada proceso una tabla de regiones que especifiquen qué páginas pertenecen a cada región

Unidad De Manejo De Memoria
La unidad de manejo de memoria (MMU) es parte del procesador.  Sus funciones son:
·         Convertir las direcciones lógicas emitidas por los procesos en direcciones físicas.
·         Comprobar que la conversión se puede realizar.  La dirección lógica  podría no tener un dirección física
Asociada.  Por ejemplo, la página correspondiente a una dirección se puede haber trasladado a una zona de Almacenamiento secundario temporalmente. Comprobar que el proceso que intenta acceder a una cierta dirección de memoria tiene permisos para ello. La MMU se Inicializa para  cada proceso del sistema.  Esto permite que cada proceso pueda usar el rango completo de direcciones lógicas (memoria virtual), ya que las conversiones de estas direcciones serán distintas para cada proceso.
En todos los procesos se configura la MMU para que la zona del núcleo solo se pueda acceder en modo privilegiado del procesador. La configuración correspondiente al espacio de memoria del núcleo es idéntica en todos los procesos.
El objetivo del intercambio es dar cabida a la ejecución de más aplicaciones de las que pueden residir simultáneamente en la memoria del sistema: Consiste en trasladar el código y los datos de un proceso completo de memoria al sistema de almacenamiento secundario, para cargar otro previamente almacenado, no permite a un proceso utilizar más memoria RAM de la que realmente existe en el sistema.  Esta técnica  puede ser ineficiente ya que se tiene que hacer el intercambio completo del proceso, aunque éste solo vaya a ejecutar una pequeña porción del código.


Espacio De Direcciones

Los espacios de direcciones involucrados en el manejo de la memoria son de tres tipos: Direcciones físicas: son aquellas que referencian alguna posición en la memoria física. Direcciones lógicas: son las direcciones utilizadas por los procesos. 

Sufren una serie de transformaciones, realizadas por el procesador (la MMU), antes de convertirse en direcciones físicas. Direcciones lineales: direcciones lineales se obtienen a partir de direcciones lógicas tras haber aplicado una transformación dependiente de la arquitectura.

Los programas de usuario siempre tratan con direcciones virtuales; nunca ven las direcciones físicas reales Tablas de páginas Cada página tiene un número que se utiliza como índice en la tabla de páginas, lo que da por resultado el  número del marco correspondiente a esa página virtual. Si el bit presente / ausente es 0, se provoca un señalamiento (trap) hacia el sistema operativo. Si el bit es 1, el número de marco que aparece en la tabla de páginas se copia en los bits de mayor orden del registro de salida, junto con el ajuste (offset) de 12 bits, el cual se copia sin modificaciones de la dirección virtual de entrada. Juntos forman una dirección física de 15 bits.

El registro de salida se coloca entonces en el bus de la memoria como la dirección en la memoria física. En teoría, la asociación de las direcciones virtuales con las físicas se efectúa según lo descrito. El número de página virtual se divide en un número de página virtual (los bits superiores)y un ajuste (los bits inferiores).

El número de página virtual se utiliza como un índice en la tabla de páginas para encontrar la entrada de esa página virtual. El número de marco (si existe) se determina a partir de la tabla de páginas. El número de marco se asocia al extremo superior del ajuste y reemplaza al número de página virtual para formar una dirección física que se puede enviar a la memoria.

La finalidad de la tabla de páginas es asociar las páginas virtuales con los marcos. En términos matemáticos, la tabla de páginas es una función, cuyo argumento es el número de página virtual y como resultado el número del marco físico. Mediante el resultado de esta función, se puede reemplazar el campo.

Multiprocesamiento.

Multiprocesador.

es el uso de dos o más procesadores (CPU) en una computadora para la ejecución de uno o varios procesos (programas corriendo). Algunas personas, en el idioma español hacen sinónimo este término con el de multi tareas (del inglés multitasking) el cual consiste en la ejecución de uno o más procesos concurrentes en un sistema. Así como la multitarea permite a múltiples procesos compartir una única CPU, múltiples CPU pueden ser utilizados para ejecutar múltiples procesos o múltiples hilos (threads) dentro de un único proceso.



La tecnología Hyper  Threading (HT), permite que el procesador ,aparezca como un sistema MP (multiprocesador).


El aumento de la velocidad del reloj es uno de los modos principales para brindar más potencia informática. No obstante, la velocidad del reloj es sólo una parte. El otro camino hacia un mayor desempeño es el realizar más trabajo en cada ciclo de reloj y es aquí donde aparece la tecnología Hyper-Threading.

Un solo procesador compatible con la tecnología Hyper-Threading se presenta a sí mismo ante las aplicaciones y los sistemas operativos modernos como dos procesadores virtuales. El procesador puede trabajar en dos conjuntos de tareas a la vez, utilizar los recursos que de otro modo estarían inactivos y realizar más trabajo en la misma cantidad de tiempo
En los PC de desktop y en las estaciones de trabajo de nivel básico, la tecnología HT aprovecha la capacidad de sub procesos múltiples integrada en Windows XP y en muchas aplicaciones avanzadas.



El software con sub procesos múltiples divide su carga de trabajo en procesos y sub procesos que se pueden programar y enviar de forma independiente. En un sistema de multiprocesador, dichos sub procesos se ejecutan en distintos procesadores. La tecnología HT permite que un solo procesador como por ejemplo un pentium 4, funcione como dos procesadores virtuales o lógicos. En realidad sólo hay un procesador Pentium 4 físico en su PC, pero el procesador puede ejecutar dos sub procesos simultáneamente.

procesador de 8 núcleos y cómo funciona.

Un procesador con varios -dos, cuatro, ocho – núcleos es una CPU (Central Processor Unit) con varios núcleos diferentes en una sola base. Con el objetivo de mejorar el rendimiento.
Es como si la CPU del ordenador, una tablet o un Smartphone tuviese varios cerebros que pudiesen trabajar de forma simultánea; en un mismo trabajo – dividiéndose las tareas – o en trabajos diferentes. Y todo ello sin que el rendimiento de uno se vea afectado por el rendimiento de los otros. Es decir, aumenta la velocidad de ejecución de los programas

¿Un procesador con ocho núcleos es ocho veces más rápido que uno con un núcleo?

La respuesta es NO. Ayuda a que el sistema operativo esté más desahogado.
El motivo es que no  todos los programas – aplicaciones – son capaces de usar 8 núcleos de forma simultánea. Y por este motivo muchas aplicaciones han de ser programadas de nuevo para que puedan beneficiarse del trabajo en paralelo.

Por otro lado, disponer de muchos núcleos favorece el rendimiento de sistemas que trabajan en multi-tarea. Un ejemplo es el uso de antivirus. Un antivirus es capaz de consumir el 100% de un núcleo, parando la ejecución de otras aplicaciones hasta que termine su trabajo. En estos casos disponer de más núcleos mejora la respuesta de todo el sistema.

El procesador de 8 núcleos es una única CPU en el que los ocho núcleos tienen recursos compartidos. Un sistema multiprocesador está compuesto por varias CPU que a su vez pueden tener varios núcleos

Comandos del DOS.

¿que es el DOS?

DOS es un sistema operativo modular que consiste de múltiples componentes con funciones especiales cada uno. Cuando DOS se carga a memoria, muchos de estos componentes se mueven, se ajustan o se eliminan. Sin embargo, cuando DOS está en ejecución se puede considerar como una entidad relativamente estática y sus componentes son predecibles y fáciles de estudiar.


Comandos importantes del DOS.

DIR.  muestra la lista de archivos y sub directorios dentro del directorio desde el que es ejecutado.

Doskey  permite recuperar comandos introducidos previamente, edita líneas de comandos y crea macros.
Vol. es un comando que se ejecuta desde intérprete de línea de comandos (shells) como COMMAND.COMcmd.exe. Se utiliza para mostrar la etiqueta de volumen y número de serie de una unidad lógica, como así también una partición del disco duro o un disquete, si es que existen.
Attrib. El comando interno ATTRIB muestra o cambia los atributos de los archivo y/o directorio del sistema operativo Microsoft Windows. 
  • + Establece un atributo.
  •  Borra un atributo.
  • R Atributo de solo lectura del archivo.
  • A Atributo de archivo de almacenamiento.
  • S Atributo de archivos del sistema.
  • H Atributo de archivo oculto.
  • [unidad:][ruta][nombre-archivo] Especifica el archivo o archivos que seran afectados por ATTRIB
  • /S Procesa archivos que coinciden en la carpeta actual y todas las carpetas.
  • /D Procesa carpetas.
IpConfig.  muestra los valores de configuración de red de TCP/IP actuales y actualiza la configuración del protocolo DHCP y el sistema de nombres de dominio (DNS).




miércoles, 2 de diciembre de 2015

Kernel definición y tipos de kernel.

¿que es un kernel?


El kernel representa la pieza de software principal del los sistemas operativos, es el encargado de manejar las peticiones de entrada y salida de los aplicativos pues se encarga de traducir las instrucciones o comandos que solicitan a la CPU y otros dispositivos.



El Kernel se encarga de administrar los procesos, la memoria, los dispositivos y todas las llamadas al propio sistema, siendo el responsable de ejecutar los programas y decidir cuando van a ser procesados, asignarles los espacios en memoria que requieren (aunque también debe decir cuando no haya suficiente).

También está dentro de las competencias del Kernel recibir y atender las peticiones que los dispositivos envíen, como es el caso del teclado o el mouse y por de igual manera si un programa especifico requiere el acceso a un determinado dispositivo, por ejemplo la impresora.

algunos ejemplos de kernel.

Sistemas monolíticos
Dentro de este modelo se puede encontrar al popular Linux. Consiste en escribir una serie de procedimientos enlazados entre si, lo cual crea un único programa de gran tamaño que se ejecuta completamente en modo kernel. 

Para construir este tipo de Kernel se procede a compilar cada procedimiento de forma inividual y luego se vinculan entre si, todo esto lo que permite es que todos los procedimientos sean visibles lo cual hace que sea un diseño rápido en ejecución pero en términos de ocultamiento de información, no hay nada. 

Sin embargo, apesar de que todos los procedimientos están mesclados y visibles entre sí, aun se maneja un cierto orden o estructura. PAra realizar las llamadas al sistema se colocan en un sitio claramente definido para tal uso (como la pila).


En forma básica la estructura puede ser la siguiente :

  1. Un programa principal que invoca el procedimiento de servicio solicitado. 
  2. Un conjunto de procedimientos de servicio que llevan a cabo las llamadas al sistema. 
  3. Un conjunto de procedimientos utilitarios que ayudan a los procedimientos de servicio.

Microkernels

Un ejemplo de este tipo de kernel es MINIX, el cual es un sistema operativo que ha llevado el concepto de microkernel a los límites de tener solo 3200 líneas en C. 

Es similar a modelo de capas, pero a diferencia de que en el modelo anterior donde todas las capas iban en el kernel, en el modelo de microkernel solo algunas partes indispensables van en el kernel, esto permite evitar que en caso de fallos se pueda paralizar todo el sistema, adicionalmente al ejecutar las demás partes en modo usuario un error no sería tan fatal. 

Sistemas de capas

Un ejemplo de este tipo de sistema es MULTICS un proyecto del MIT que sirvió de influencia en avances posteriores. Este modelo ya presenta un diseño más jerárquico que el anterior, se basa en ir creando capas de procedimientos donde cada capa inferior tiene mayores privilegios que las siguientes. El primer sistema operativo de este tipo fue construido por el reconocido investigador W. Dijkstra y sus estudiantes. 

El sistema consistía de 6 capas, cada una de las cuales cumplía una funcionalidad especifica de tal manera que las capas superiores no se tuvieran que preocupar por las funcionalidades de las capas inferiores, por ejemplo la capa de nivel cero se encarga de la asignación del procesador, cambiar entre procesos cuando ocurrían interrupciones, de esta manera las capas superiores ya no se preocupan por la programación de varios tareas ya que simplemente relegaban esa tarea a la capa cero. 

 Sistemas cliente-servidor

Un ejemplo de Sistema Operativo que usa este diseño de Kernel es el reconocidoWindows

Es en cierta forma y un modelo similar a microkernel donde existe una serie de componentes encargados cada uno de funciones específicas responsables de ejecutarlas y proveer una funcionalidad a otros procesos en forma de servicios, es decir que un proceso solo puede acceder a su espacio de memoria y se comunica con los demás procesos por medio de paso d mensajes como un servicio. En este sentido es indiferente si la petición se ejecuta localmente o en otra máquina siendo ideal para la implementación de sistemas distribuidos.

Máquinas virtuales

En la actualidad se encuentran varios sistemas de reconocida trayectoria: vmware,vitual boxvirtual server
Con el aumento de la capacidad de cálculo, memoria y almacenamiento este tipo de diseño se ha venido popularizando al punto que se ha trasladado su uso incluso para equipos domésticos.

Multiprocesamiento.


Un sistema de multiprocesamiento consiste en una computadora que tiene más de un procesador, o también podemos referirnos a una serie de computadoras con CPU'S o procesadores independientes. la mayoría de computadoras supervisoras son diseñadas especialmente para dar soporte a múltiples procesadores. incluyen un bus de altas prestaciones, decenas de MB para memoria con corrección de errores, sistema de disco redundantes, y arquitecturas avanzadas de sistemas.


Existen dos tipos de diseños de sistemas multiprocesador:
  • Simétrico: Los microprocesadores del sistema comparten los recursos del sistema, como la entrada salida de memoria y disco. Se distribuye uniformemente la carga de trabajo a los procesadores disponibles, de modo que uno no esté inactivo mientras otro tiene un exceso de trabajo con una tarea específica. Las prestaciones se incrementan para todas las tareas al añadir microprocesadores, su desventaja es que los sistemas operativos que soportan este tipo de multiprocesamiento son más difíciles de diseñar.
  • Asimétrico: Diferentes microprocesadores gobiernan las distintas tareas y recursos del sistema. El enfoque principal que adoptan es el incremento de rendimiento del sistema para múltiples usuarios de red en múltiples segmentos de red de área local. Los sistemas supervisores dan soporte a múltiples tarjetas de red, lo que incrementa el número de posibles segmentos. El bus de alta velocidad del servidor proporciona transferencia rápida de información entre los segmentos de red. Cada CPU se dedica a una función específica tal como entrada / salida de la tarjeta de interfaz de red u operaciones con archivos.


Clasificación.
Las cuatro categorías definidas por Flynn (1972)

se basan en el número de instrucciones concurrentes y en los flujos de datos disponibles en la arquitectura: 
  1. Una secuencia de instrucciones y una secuencia de datos (SISD: Single Instruetion, Single Data): Un único procesador interpreta una única secuencia de instrucciones para procesar los datos almacenados en una única memoria. No explota el paralelismo a nivel de instrucción. Máquinas mono procesador. 
  2. Una secuencia de instrucciones y múltiples secuencias de datos (SIMD: Single Instruction, Múltiple Data): Una única instrucción controla de forma simultánea y sincronizada un cierto número de elementos de proceso. Cada elemento tiene una memoria asociada, de forma que cada elemento ejecuta la misma instrucción con diferentes datos. Los procesadores vectoriales y matriciales pertenecen a esta categoría.
  3. Múltiples secuencias de instrucciones y una secuencia de datos (MISD: Multiple Instruction, Single Data): Se transmite una secuencia de datos a varios procesadores, cada uno de los cuales ejecuta una instrucción diferente sobre los mismos. Esta estructura nunca se ha implementado. 
  4. Múltiples secuencias de instrucciones y múltiples secuencias de datos (MIMD: Multiple Instructions, Multiple data): Un conjunto de procesadores ejecuta simultáneamente instrucciones diferentes sobre conjuntos de datos diferentes. Es el caso de los sistemas distribuidos, bien explotando un único espacio compartido de memoria, o bien uno distribuido. 




Tipos de multiprocesamiento.

1 Multiprocesamiento simentrico.

El Multiprocesamiento simétrico (symmetric multiprocessing / SMP) tiene un diseño simple pero aún así efectivo. En SMP, multiples procesadores comparten la memoria RAM y el bus del sistema. Este diseño es también conocido como estrechamente acoplado (tightly coupled), o compartiendo todo (shared everything).

Debido a que SMP comparte global mente la memoria RAM, tiene solamente un espacio de memoria, lo que simplifica tanto el sistema físico como la programación de aplicaciones. Este espacio de memoria único permite que un Sistema Operativo con Multiconexión (multithreaded operating system) distribuya las tareas entre varios procesadores, o permite que una aplicación obtenga la memoria que necesita para una simulación compleja. La memoria global mente compartida también vuelve fácil la sincronización de los datos.


2  Procesamiento Masiva mente Paralelo

El Procesamiento masivamente paralelo (Massively parallel processing / MPP) es otro diseño de procesamiento paralelo. Para evitar los cuellos de botella en el bus de memoria, MPP no utiliza memoria compartida. En su lugar, distribuye la memoria RAM entre los procesadores de modo que se semeja a una red (cada procesador con su memoria distribuida asociada es similar a un computador dentro de una red de procesamiento distribuido). Debido a la distribución dispersa de los recursos RAM, esta arquitectura es también conocida como dispersamente acoplada (loosely coupled), o compartiendo nada(shared nothing).



Para tener acceso a la memoria fuera de su propia RAM, los procesadores utilizan un esquema de paso de mensajes análogo a los paquetes de datos en redes. Este sistema reduce el tráfico del bus, debido a que cada sección de memoria observa únicamente aquellos accesos que le están destinados, en lugar de observar todos los accesos, como ocurre en un sistema SMP. Únicamente cuando un procesador no dispone de la memoria RAM suficiente, utiliza la memoria RAM sobrante de los otros procesadores. Esto permite sistemas MPP de gran tamaño con cientos y aún miles de procesadores. MPP es una tecnología escalable.


Multiprocesamiento Híbrido  o paralelo escalable.

La última arquitectura paralela, el Procesamiento paralelo escalable (Scalable parallel processing / SPP), es un híbrido de SMP y MPP, que utiliza una memoria jerárquica de dos niveles para alcanzar la escalabilidad. La primera capa de memoria consiste de un nodo que es esencialmente un sistema SMP completo, con múltiples procesadores y su memoria globalmente compartida.
Se construyen sistemas SPP grandes interconectando dos o mas nodos a través de la segunda capa de memoria, de modo que esta capa aparece lógicamente, ante los nodos, como una memoria global compartida.




El procesamiento paralelo ofrece una gran ventaja en cuanto a costos. Sin embargo, su principal beneficio, la escalabilidad (crecer hacia arquitecturas de mayor capacidad), puede ser difícil de alcanzar aún. Esto se debe a que conforme se añaden procesadores, las disputas por los recursos compartidos se intesifican.