Descargar

Sistemas operativos (página 2)

Enviado por Ernesto Pineda


Partes: 1, 2, 3, 4, 5, 6

Típicamente muchas máquinas virtuales son simuladas en una máquina física dada. Para que el sistema operativo "huésped" funcione, la simulación debe ser lo suficientemente grande como para soportar todas las interfaces externas de los sistemas huéspedes, las cuales pueden incluir (dependiendo del tipo de virtualización) los drivers de hardware.

Tipos de Virtualización de plataforma

Virtualización completa

Esta es en donde la máquina virtual simula un hardware suficiente para permitir un sistema operativo "huésped" sin modificar (uno diseñado para la misma CPU) para ejecutar de forma aislada. Típicamente, muchas instancias pueden ejecutarse al mismo tiempo. Este enfoque fue el pionero en 1966 con CP-40 y CP[-67]/CMS, predecesores de la familia de máquinas virtuales de IBM.

Ejemplos

  • VMware Workstation

  • VMware Server

  • VMware vSphere

  • Windows Server 2008 R2 Hyper-V

  • Microsoft Enterprise Desktop Virtualization (MED-V)

  • Oracle VM VirtualBox

  • Parallels Desktop

  • Virtual Iron

  • Adeos

  • Mac-on-Linux

  • Win4BSD

  • Win4Lin Pro

  • y z/VM

  • openvz

  • Oracle VM

  • XenServer

  • Microsoft Virtual PC

Virtualización parcial

"Address Space Virtualization". La máquina virtual simula múltiples instancias de gran parte (pero no de todo) del entorno subyacente del hardware, particularmente los espacios de direcciones. Tal entorno acepta compartir recursos y alojar procesos, pero no permite instancias separadas de sistemas operativos "huésped". Aunque no es vista como dentro de la categoría de máquina virtual, históricamente éste fue un importante acercamiento, y lo usaron en sistemas como CTSS, el experimental IBM M44/44X, y podría mencionarse que en sistemas como OS/VS1, OS/VS2 y MVS.

Virtualización por S.O

Virtualizar significa instalar un sistema operativo dentro de otro al que se le llama anfitrión (HOST), mediante el uso de una máquina virtual. Frecuentemente denominada virtualización compartida del Sistema Operativo o virtualización del SO, la virtualización del Sistema Operativo virtualiza servidores en la capa del sistema operativo (kernel). Este método de virtualización crea particiones aisladas o entornos virtuales (VEs) en un único servidor físico e instancia de SO para así maximizar los esfuerzos de administración del hardware, software y centro de datos.

La Virtualización de Hypervisor tiene una capa base (generalmente un kernel, Linux que se muestra aquí como un hypervisor o SO estándar, lo mismo que Windows Server 2008 R2 Hyper-V) que se carga directamente en el servidor base. Para asignar hardware y recursos a las máquinas virtuales (VMs), es recomendable que todo el hardware del servidor esté virtualizado. La siguiente capa superior muestra cada chip, placa, etc. que debe virtualizarse para que así pueda ser asignado a las VMs. Una vez en la VM, hay un copia completa de un sistema operativo y finalmente la aplicación o carga de trabajo.

La Virtualización de SO mejora el rendimiento, gestión y eficiencia. En la base reside un sistema operativo anfitrión estándar, como en el caso de Parallels Virtuozzo que incluye Windows y un sistema con núcleo Linux. A continuación encontramos la capa de virtualización, con un sistema de archivos propietario y una capa de abstracción de servicio de kernel que garantiza el aislamiento y seguridad de los recursos entre distintos contenedores. La capa de virtualización hace que cada uno de los contenedores aparezca como servidor autónomo. Finalmente, el contenedor aloja la aplicación o carga de trabajo.

Diferencias entre virtualizar un Sistema operativo e instalarlo

Virtualizar el sistema operativo es una opción interesante si no queremos instalar dos sistemas operativos en el mismo ordenador, pero si por el contrario lo que hacemos es instalarlo, todos los sistemas operativos que tengamos instalados funcionaran de la misma manera que si estuvieran instalados en distintos ordenadores.

El único y pequeño inconveniente es que necesitamos un gestor de arranque que al encender nuestro ordenador nos dé la opción de elegir qué sistema operativo queremos utilizar, lo que conlleva que si por ejemplo estamos en Windows y queremos cambiar a GNU/Linux deberíamos reiniciar nuestro ordenador. La virtualización por el contrario permite cambiar de sistema operativo como si se tratase de cualquier otro programa, sin embargo, esta agilidad tiene la desventaja de que un sistema operativo virtualizado no es tan potente como uno que ya estuviera instalado.

Retos de la Virtualización

  • Índices de utilización más altos — Antes de la virtualización, los índices de utilización del servidor y almacenamiento en los centros de datos de la empresa rondaban menos del 50% (de hecho, del 10% al 15% de los índices de utilización fueron los más comunes). A través de la virtualización, las cargas de trabajo pueden ser encapsuladas y transferidas a los sistemas inactivos o sin uso — lo cual significa que los sistemas existentes pueden ser consolidados, así que las compras de capacidad adicional del servidor pueden ser retrasadas o evitadas.

  • Consolidación de Recursos — La virtualización permite la consolidación de múltiples recursos de TI. Más allá de la consolidación de almacenamiento, la virtualización proporciona una oportunidad para consolidar la arquitectura de sistemas, infraestructura de aplicación, datos y base de datos, interfaces, redes, escritorios, e incluso procesos de negocios, resultando en ahorros de costo y mayor eficiencia.

  • Uso/costo menor energía — La electricidad requerida para que funcionen los centros de datos de clase empresarial ya no está disponible en suministros ilimitados, y el costo está en una espiral ascendente. Por cada dólar gastado en un servidor hardware, un dólar adicional es gastado en energía (incluyendo el costo de los servidores en función y los enfriadores). Utilizando virtualización para consolidar hace posible cortar el consumo total de energía y ahorrar dinero de una manera significativa.

  • Ahorros de espacio — La extensión del servidor permanece como un serio problema en la mayoría de los centros de datos empresariales, pero la expansión del centro de datos no es siempre una opción, con los costos de construcción promediando miles de dólares por pie cuadrado. La virtualización puede aliviar la tensión mediante la consolidación de muchos sistemas virtuales en menos sistemas físicos.

  • Recuperación de desastre/continuidad del negocio — La virtualización puede incrementar la disponibilidad de los índices del nivel de servicio en general y proporcionar nuevas opciones de soluciones para la recuperación de desastre.

  • Costos de operación reducidos — La empresa promedio gasta $8 dólares en mantenimiento por cada $1 dólar invertido en nueva infraestructura. La virtualización puede cambiar el radio de servicio-a administración reducir la carga total de trabajo administrativo, y cortar el total de costos de operación.

Ventajas de la Virtualización

  • Reutilización de hardware existente (para utilizar software más moderno) y optimizar el aprovechamiento de todos los recursos de hardware.

  • Rápida incorporación de nuevos recursos para los servidores virtualizados.

  • Reducción de los costes de espacio y consumo necesario de forma proporcional al índice de consolidación logrado (Estimación media 10:1).

  • Administración global centralizada y simplificada.

  • Nos permite gestionar nuestro CPD como un pool de recursos o agrupación de toda la capacidad de procesamiento, memoria, red y almacenamiento disponible en nuestra infraestructura

  • Mejora en los procesos de clonación y copia de sistemas: Mayor facilidad para la creación de entornos de test que permiten poner en marcha nuevas aplicaciones sin impactar a la producción, agilizando el proceso de las pruebas.

  • Aislamiento: un fallo general de sistema de una máquina virtual no afecta al resto de máquinas virtuales.

  • Mejora de TCO y ROI.

  • No sólo aporta el beneficio directo en la reducción del hardware necesario, sino también los costes asociados.

  • Reduce los tiempos de parada.

  • Migración en caliente de máquinas virtuales (sin pérdida de servicio) de un servidor físico a otro, eliminando la necesidad de paradas planificadas por mantenimiento de los servidores físicos.

  • Balanceo dinámico de máquinas virtuales entre los servidores físicos que componen el pool de recursos, garantizando que cada máquina virtual ejecute en el servidor físico más adecuado y proporcionando un consumo de recursos homogéneo y óptimo en toda la infraestructura.

  • Contribución al medio ambiente -Green IT- por menor consumo de energía en servidores físicos.

Programas útiles para virtualizar sistemas operativos

Como todos conocemos existen dos tipos de programas: los que son de pago y los que no. Dentro de los programas de pago encontramos el VMware, que es uno de los referentes en el mercado, como así también Windows Server 2008 R2 Hyper-V [1]cuya función de virtualización está incluida sin cargo en la licencia del servidor. Existe una versión más básica de VMWare que es gratuita, VMware Player, que permite virtualizar a través de una máquina virtual ya configurada. También existen webs que nos permiten rellenar un formulario y descargarnos nuestra máquina virtual a nuestro gusto como EasyVMX! Parallels Virtuozzo Containers, es otro de los programas de pago más famosos, que permite la virtualización a nivel de sistema operativo o hardware Parallels Bare Metal. Típicamente suele emplearse para virtualizar Windows y, en menor medida, GNU/Linux. Dentro de los programas gratuitos tenemos el Virtual PC de Microsoft, que es un producto de Windows, compatible con versiones avanzadas de XP, Vista y Windows 7.

Dentro de los programas de código libre están el Xen, OpenVZ y VirtualBox, que funcionan tanto en Mac OS, en Windows como en GNU/Linux y todos permiten virtualizar los tres sistemas operativos más famosos.

Tipos de virtualización

La virtualización se puede hacer desde un sistema operativo Windows, ya sea XP, Vista u otra versión que sea compatible con el programa que utilicemos, en el que virtualizamos otro sistema operativo como Linux o viceversa, que tengamos instalado Linux y queramos virtualizar una versión de Windows.

Virtualización por (Hardware)

Virtualización asistida por Hardware son extensiones introducidas en la arquitectura de procesador x86 para facilitar las tareas de virtualización al software ejecutándose sobre el sistema. Si cuatro son los niveles de privilegio o anillos de ejecución en esta arquitectura, desde el cero o de mayor privilegio, que se destina a las operaciones del kernel de SO, al tres, con privilegios menores que es el utilizado por los procesos de usuario, en esta nueva arquitectura se introduce un anillo interior o ring -1 que será el que un hypervisor o Virtual Machine Monitor usará para aislar todas las capas superiores de software de las operaciones de virtualización.

La virtualización de almacenamiento

Se refiere al proceso de abstraer el almacenamiento lógico del almacenamiento físico, y es comúnmente usado en SANs ("Storage Area Network" Red de área de almacenamiento). Los recursos de almacenamiento físicos son agregados al "storage pool" (almacén de almacenamiento), del cual es creado el almacenamiento lógico.

Particionamiento

Es la división de un solo recurso (casi siempre grande), como el espacio de disco o el ancho de banda de la red, en un número más pequeño y con recursos del mismo tipo que son más fáciles de utilizar. Esto es muchas veces llamado "zoning", especialmente en almacenamiento de red.

Máquina virtual

La entenderemos básicamente como un sistema de virtualización, denominado "virtualización de servidores", que dependiendo de la función que esta deba de desempeñar en la organización, todas ellas dependen del hardware y dispositivos físicos, pero casi siempre trabajan como modelos totalmente independientes de este. Cada una de ellas con sus propias CPUs virtuales, tarjetas de red, discos etc. Lo cual podría especificarse como una compartición de recursos locales físicos entre varios dispositivos virtuales.

Hypervisor de almacenamiento

Es un pack portátil de gestión centralizada, utilizado para mejorar el valor combinado de los sistemas de disco de almacenamiento múltiples, incluyendo los modelos diferentes e incompatibles, complementando sus capacidades individuales con el aprovisionamiento extendido, la réplica y la aceleración del rendimiento del servicio. Su completo conjunto de funciones de control y monitorización del almacenamiento, operan como una capa virtual trasparente entre los pools de disco consolidados para mejorar su disponibilidad, velocidad y utilización.

Virtualización relacionada con el Green IT

En estudios realizados se han basado sobre el ahorro de energía que genera la empresa para sus clientes, muestra que las soluciones de virtualización reducen los costos económicos y emisiones de CO2.

Esto se puede llevar a cabo fusionando varias máquinas en un solo servidor, con lo que disminuyendo el consumo energético y los costos; ahorrando 7.000 kilovatios hora o cuatro toneladas de emisiones de CO2 al año. Los PCs virtualizados pueden reducir el consumo de energía y los costos en un 35 por ciento.

Hoy en día, la mayor parte consumen entre un 70 y un 80% de su energía estimada. Otra medida es la desconexión de los servidores y desktops durante los períodos de inactividad, como por la noche o los fines de semana, con lo que se puede ahorrar aproximadamente un 25 por ciento en su consumo energético. Las empresas hoy en día son las más interesadas en el tema de la virtualización, ya que para ellas es muy importante reducir costos y energía principalmente.

Infraestructura Virtual

Una infraestructura virtual consiste en el mapping dinámico de recursos físicos en función de las necesidades de la empresa. Una máquina virtual representa los recursos físicos de un único ordenador, mientras que una infraestructura virtual representa los recursos físicos de la totalidad del entorno de TI, aglutinando ordenadores x86, así como su red y almacenamiento asociados, en un pool unificado de recursos de TI.

Estructuralmente, una infraestructura virtual consta de los siguientes componentes:

  • Hipervisor de un solo nodo para hacer posible la virtualización de todos los ordenadores x86.

  • Un conjunto de servicios de infraestructura de sistemas distribuida basada en la virtualización, como gestión de recursos, para optimizar los recursos disponibles entre las máquinas virtuales.

  • Soluciones de automatización que proporcionen capacidades especiales para optimizar un proceso de TI concreto, como provisioning o recuperación ante desastres. Mediante la separación de la totalidad del entorno de software de su infraestructura de hardware subyacente, la virtualización hace posible la reunión de varios servidores, estructuras de almacenamiento y redes en pools compartidos de recursos que se pueden asignar de forma dinámica, segura y fiable a las aplicaciones según sea necesario. Este enfoque innovador permite a las organizaciones crear una infraestructura informática con altos niveles de utilización, disponibilidad, automatización y flexibilidad utilizando componentes básicos de servidores económicos y estándar del sector.

Ventajas de la Infraestructura Virtual

Las soluciones de infraestructura virtual son ideales para entornos de producción en parte debido a que se ejecutan en servidores y escritorios estándar de la industria y son compatibles con una amplia gama de sistemas operativos y entornos de aplicación, así como de infraestructuras de red y almacenamiento. Se han diseñado las soluciones para que funcionen de manera independiente del hardware y del sistema operativo y poder brindar a los clientes amplias posibilidades de elección de plataforma.

Como resultado, son soluciones que proporcionan un punto de integración clave para los proveedores de hardware y gestión de infraestructuras de cara a ofrecer un valor único y aplicable por igual en todos los entornos de aplicación y sistemas operativos.

Las empresas que han adoptado estas soluciones de infraestructura virtual nos han comunicado unos clarísimos resultados positivos, entre ellos:

  • Índices de utilización del 60 al 80% para servidores x86 (frente al 5 a 15% en hardware no virtualizado)

  • Capacidad para el provisioning de nuevas aplicaciones en cuestión de minutos, en lugar de días o semanas

  • 85% de mejora en tiempo de recuperación de paradas imprevistas

Virtualización x86

La virtualización es el método por el cual se virtualiza la arquitectura de procesador x86. La arquitectura x86 no cumplía originalmente los requerimientos de virtualización de Popek y Goldberg, así que era difícil implementar una máquina virtual general en un procesador x86. En 2005 y 2006 Intel añadió extensiones a la arquitectura x86 que resolvían estas y otras dificultades de virtualización.

Técnicas software

La virtualización en arquitecturas x86 es compleja, y necesita técnicas complejas para ser resuelta.

Uno de los pioneros en virtualización fue la Universidad de Stanford. El 9 de febrero de 1999 VMware introdujo el primer producto de virtualización x86, llamado "Mware Virtual Plataform", basado en una investigación anterior realizada por sus fundadores en la Universidad de Stanford.

VMware pidió una patente para su técnica en octubre de 1997, que fue concedida con el número 6.397.242 el 28 de mayo de 2002. VMware y otros programas de virtualización similares crean un entorno interpretado para las instrucciones del kernel del sistema operativo; con lo que, vía emulación, podían ejecutar cualquier sistema operativo virtualizado para x86 a costa de rendimiento.

Kevin Lawton paralelamente desarrolló el proyecto bochs, con funcionalidad similar, que comenzó siendo software privativo pero pasó a ser software libre cuando Mandriva compró el proyecto.

Oracle provee de un software de virtualización llamado VirtualBox que es software libre bajo licencia GPL.

Microsoft ofrece dos productos de virtualización basados en Windows, Microsoft Virtual PC y Microsoft Virtual Server, basados en tecnología que adquirieron de Connectix.

Los esfuerzos de investigación recientes buscan proporcionar virtualización de alto rendimiento en la arquitectura x86 presentando una interfaz que difiere de la del hardware en crudo. Los sistemas operativos son portados para ser ejecutados en esta interfaz, que no emplea las partes difícilmente virtualizables del conjunto de instrucciones x86. Esta técnica se conoce como paravirtualización. Los sistemas Denali, L4 y Xen emplean esta técnica para ejecutar versiones modificadas de varios sistemas operativos.

Soporte hardware

Intel y AMD han desarrollado independientemente extensiones de virtualización a la arquitectura x86. No son directamente compatibles entre sí, pero proporcionan las mismas funciones. Ambos permiten que una máquina virtual se ejecute en un huésped no modificado sin incurrir en penalizaciones de emulación.

VT Intel (IVT)

La extensión de Intel para virtualización de la arquitectura de 32 y 64 bits se llama IVT (Intel Virtualization Technology: Tecnología de Virtualización de Intel) y se la referencia a veces por el nombre "Vanderpool". Intel ha publicado las especificaciones del Vanderpool para el IA-64 (procesadores Itanium). Anteriormente, la virtualización IA-64 tenía el nombre en clave de "Silvervale".

Intel VT se publicó oficialmente en el Intel Developer Forum la primavera de 2005. Está disponible para todos los procesadores Pentium 4 6×2, Pentium D 9×0, Xeon 3xxx/5xxx/7xx, Intel Core e Intel Core 2. En algunas implementaciones, Vanderpool puede ser desactivado desde la BIOS.

Intel Core T2700,T2600,T2500,T2400,T2300

Intel Celeron Procesadores de escritorio: E3200, E3300.

Intel Pentium Procesadores de escritorio: E5300 (no todas las SPEC) E5400, E5500, E5700 y todas las series E6000.

Intel Core 2 Procesadores de escritorio: E8600,E8500,E8400,E8300,E8200 E7600 E6850,E6750,E6700,E6600,E6550,E6540,E6420,E6400,E6320,E6300, Series Q6000, Q8000 (no en todos los modelos) y Q9000, además de otros Core 2 Quad (ver en sitio oficial de Intel).

Procesadores moviles: SP9400,SP9300,SL9400,SL9300,SU9400,SU9300 T9500,T9300,T8300,T8100,T7800,T7700,T7600,T7500,T7400,T7300,T7200,T7100,T5600 L7500,L7400,L7300,L7200 U7700,U7600 x dsd

Virtualización AMD (AMD-V)

La extensión de virtualización AMD para la arquitectura de 64 bits x86 se llama AMD Virtualization (abreviada AMD-V), y a menudo se la referencia por el nombre en clave "Pacífica".

Los procesadores AMD que usan Socket AM3, Socket AM2, Socket S1 y Socket F incluyen AMD-V.

En mayo de 2006, AMD introdujo estas versiones en el procesador Athlon 64 y el Turion 64.

Descargue las herramientas indicadas, haciendo uso de los link que están al final del libro.

TAREA #17

  • Hacer un cuestionario sobre VIRTUALIZACION no menor a 30 preguntas.

  • Que ventajas encuentra en hacer virtualización?

  • Que desventajas encuentra en hacer virtualización?

  • Que es lo que tecnológicamente empuja hacer virtualización?

  • Mencione 10 software para virtualización?

  • Instale VirtualBox e instale Puppy Linux.

  • Instale Vmware Workstation e instale Tiny Core Linux.

Video Virtualizacion:

SO UNIX

Unix (registrado oficialmente como UNIXes un sistema operativo portable, multitarea y multiusuario; desarrollado, en principio, en 1969, por un grupo de empleados de los laboratorios Bell de AT&T, entre los que figuran Ken Thompson, Dennis Ritchie y Douglas McIlroy.

El sistema, junto con todos los derechos fueron vendidos por AT&T a Novell, Inc. Esta vendió posteriormente el software a Santa Cruz Operation en 1995 y esta, a su vez, lo revendió a Caldera Software en 2001, empresa que después se convirtió en el grupo SCO.

Sin embargo, Novell siempre argumentó que solo vendió los derechos de uso del software, pero que retuvo el copyright sobre "UNIXuot;. En 2010, y tras una larga batalla legal, ésta ha pasado nuevamente a ser propiedad de Novell.

Solo los sistemas totalmente compatibles y que se encuentran certificados por la especificación Single UNIX Specification pueden ser denominados "UNIXuot; (otros reciben la denominación "similar a un sistema Unix" o "similar a Unix"). En ocasiones, suele usarse el término "Unix tradicional" para referirse a Unix o a un sistema operativo que cuenta con las características de UNIX Versión 7 o UNIX System V.

edu.red

Ken Thompson y Dennis Ritchie, creadores de Unix.

A finales de 1960, el Instituto Tecnológico de Massachusetts, los Laboratorios Bell de AT&T y General Electric trabajaban en un sistema operativo experimental llamado Multics (Multiplexed Information and Computing Service), desarrollado para ejecutarse en una computadora central (mainframe) modelo GE-645. El objetivo del proyecto era desarrollar un gran sistema operativo interactivo que contase con muchas innovaciones, entre ellas mejoras en las políticas de seguridad.

El proyecto consiguió dar a luz versiones para producción, pero las primeras versiones contaban con un pobre rendimiento. Los laboratorios Bell de AT&T decidieron desvincularse y dedicar sus recursos a otros proyectos.

Uno de los programadores de los laboratorios Bell, Ken Thompson, siguió trabajando para la computadora GE-635 y escribió un juego llamado Space Travel. Sin embargo, descubrió que el juego era lento en la máquina de General Electric y resultaba realmente caro, algo así como 75 dólares de EE.UU. por cada partida.

De este modo, Thompson escribió nuevamente el programa, con ayuda de Dennis Ritchie, en lenguaje ensamblador, para que se ejecutase en una computadora DEC PDP-7.

Esta experiencia, junto al trabajo que desarrolló para el proyecto Multics, condujo a Thompson a iniciar la creación de un nuevo sistema operativo para la DEC PDP-7. Thompson y Ritchie lideraron un grupo de programadores, entre ellos a Rudd Canaday, en los laboratorios Bell, para desarrollar tanto el sistema de ficheros como el sistema operativo multitarea en sí.

A lo anterior, agregaron un intérprete de órdenes o intérprete de comandos y un pequeño conjunto de programas, el proyecto fue bautizado UNICS, como acrónimo Uniplexed Information and Computing System, pues solo prestaba servicios a dos usuarios (de acuerdo con Andrew Tanenbaum, era solo a un usuario). La autoría de esta sigla se le atribuye a Brian Kernighan, ya que era un hack de Multics, dada la popularidad que tuvo un juego de palabras que consideraba a UNICS un sistema MULTICS (pues eunuchs, en inglés, suena igual que UNICS), se cambió el nombre a UNIX, dando origen al legado que llega hasta nuestros días.

edu.red

edu.red

Hasta ese instante, no había existido apoyo económico por parte de los laboratorios Bell, pero eso cambió cuando el Grupo de Investigación en Ciencias de la Computación decidió utilizar UNIX en una máquina superior a la PDP-7. Thompson y Ritchie lograron cumplir con la solicitud de agregar herramientas que permitieran el procesamiento de textos a UNIX en una máquina PDP-11/20, y como consecuencia de ello consiguieron el apoyo económico de los laboratorios Bell. Fue así como por vez primera, en 1970, se habla oficialmente del sistema operativo UNIX ejecutado en una PDP-11/20. Se incluía en él un programa para dar formato a textos (runoff) y un editor de texto, tanto el sistema operativo como los programas fueron escritos en el lenguaje ensamblador de la PDP-11/20.

edu.red

Este "sistema de procesamiento de texto" inicial, compuesto tanto por el sistema operativo como de runoff y el editor de texto, fue utilizado en los laboratorios Bell para procesar las solicitudes de patentes que ellos recibían. Pronto, runoff evolucionó hasta convertirse en troff, el primer programa de edición electrónica que permitía realizar composición tipográfica.

El 3 de noviembre de 1971 Thomson y Ritchie publicaron un manual de programación de UNIX (título original en inglés: "UNIX Programmer's Manual".

Descargue el Manual.

http://www.mediafire.com/download/3qpntsbt6jg3xq5/MANUAL_UNIX.pdf

En 1972 se tomó la decisión de escribir nuevamente UNIX, pero esta vez en el lenguaje de programación C. Este cambio significaba que UNIX podría ser fácilmente modificado para funcionar en otras computadoras (de esta manera, se volvía portable) y así otras variaciones podían ser desarrolladas por otros programadores. Ahora, el código era más conciso y compacto, lo que se tradujo en un aumento en la velocidad de desarrollo de UNIX.

AT&T puso a UNIX a disposición de universidades y compañías, también al gobierno de los Estados Unidos, a través de licencias. Una de estas licencias fue otorgada al Departamento de Computación de la Universidad de California, con sede en Berkeley.

En 1975 esta institución desarrolló y publicó su propia versión de UNIX, conocida como Berkeley Software Distribution (BSD), que se convirtió en una fuerte competencia para la familia UNIX de AT&T.

Mientras tanto, AT&T creó una división comercial denominada Unix Systems Laboratories para la explotación comercial del sistema operativo. El desarrollo prosiguió, con la entrega de las versiones 4, 5 y 6 en el transcurso de 1975. Estas versiones incluían los pipes o tuberías, lo que permitió dar al desarrollo una orientación modular respecto a la base del código, consiguiendo aumentar aún más la velocidad de desarrollo. Ya en 1978, cerca de 600 o más máquinas estaban ejecutándose con alguna de las distintas encarnaciones de UNIX.

La versión 7, la última versión del UNIX original con amplia distribución, entró en circulación en 1979. Las versiones 8, 9 y 10 se desarrollaron durante la década de 1980, pero su circulación se limitó a unas cuantas universidades, a pesar de que se publicaron los informes que describían el nuevo trabajo.

Los resultados de esta investigación sirvieron de base para la creación de Plan 9 from Bell Labs, un nuevo sistema operativo portable y distribuido, diseñado para ser el sucesor de UNIX en investigación por los Laboratorios Bell.

AT&T entonces inició el desarrollo de UNIX System III, basado en la versión 7, como una variante de tinte comercial y así vendía el producto de manera directa. La primera versión se lanzó en 1981. A pesar de lo anterior, la empresa subsidiaria Western Electric seguía vendiendo versiones antiguas de Unix basadas en las distintas versiones hasta la séptima. Para finalizar con la confusión con todas las versiones divergentes, AT&T decidió combinar varias versiones desarrolladas en distintas universidades y empresas, dando origen en 1983 al Unix System V Release 1. Esta versión presentó características tales como el editor Vi y la biblioteca curses, desarrolladas por Berkeley Software Distribution en la Universidad de California, Berkeley. También contaba con compatibilidad con las máquinas VAX de la compañía DEC.

Hacia 1991, un estudiante de ciencias de la computación de la Universidad de Helsinki, llamado Linus Torvalds desarrolló un núcleo para computadoras con arquitectura x86 de Intel que emulaba muchas de las funcionalidades de UNIX y lo lanzó en forma de código abierto en 1991, bajo el nombre de Linux. En 1992, el Proyecto GNU comenzó a utilizar el núcleo Linux junto a sus programas.

En 1993, la compañía Novell adquirió la división Unix Systems Laboratories de AT&T junto con su propiedad intelectual. Esto ocurrió en un momento delicado en el que Unix Systems Laboratories disputaba una demanda en los tribunales contra BSD por infracción de los derechos de copyright, revelación de secretos y violación de marca de mercado.

Aunque BSD ganó el juicio, Novell descubrió que gran parte del código de BSD fue copiada ilegalmente en UNIX System V. En realidad, la propiedad intelectual de Novell se reducía a unos cuantos archivos fuente. La correspondiente contra-demanda acabó en un acuerdo extrajudicial cuyos términos permanecen bajo secreto a petición de Novell.

En 1995, Novell vendió su división UNIX comercial (es decir, la antigua Unix Systems Laboratories) a Santa Cruz Operation (SCO) reservándose, aparentemente, algunos derechos de propiedad intelectual sobre el software. SCO continúa la comercialización de System V en su producto UnixWare, que durante cierto tiempo pasó a denominarse OpenUnix, aunque ha retomado de nuevo el nombre de UnixWare.

Familias

Como se puede deducir de esta breve reseña histórica, existen varias familias del sistema operativo UNIX, que han evolucionado de manera independiente a lo largo de los años. Cada familia se distingue no tanto por sus diferencias técnicas como por sus diferencias en propiedad intelectual. Se observa que todas las familias se han visto contaminadas, directa o indirectamente, por otras familias.

edu.red

Familias UNIX .

  • AT&T: la familia que tuvo su origen en el UNIX de AT&T. Considerada la familia UNIX "pura" y original. Sus sistemas operativos más significativos son UNIX System III y UNIX System V.

  • BSD: familia originada por el licenciamiento de UNIX a Berkely. BSD se reescribió para no incorporar propiedad intelectual originaria de AT&T en la versión 4. La primera implementación de los protocolos TCP/IP que dieron origen a Internet son la pila (stack) TCP/IP BSD.

  • AIX: Esta familia surge por el licenciamiento de UNIX System III a IBM.

  • Xenix: familia derivada de la adquisición de los derechos originales de AT&T primero por parte de Microsoft y de esta los vendió a SCO.

  • GNU: En 1983, Richard Stallman anunció el Proyecto GNU, un ambicioso esfuerzo para crear un sistema similar a Unix, que pudiese ser distribuido libremente. El software desarrollado por este proyecto -por ejemplo, GNU Emacs y GCC – también han sido parte fundamental de otros sistemas UNIX.

  • Linux: En 1991, cuando Linus Torvalds empezó a proponer el núcleo Linux y a reunir colaboradores, las herramientas GNU eran la elección perfecta. Al combinarse ambos elementos, conformaron la base del sistema operativo (basado en POSIX) que hoy se conoce como GNU/Linux. Las distribuciones basadas en el núcleo, el software GNU y otros agregados entre las que se pueden mencionar a Slackware Linux, Red Hat Linux y Debian GNU/Linux se han hecho populares tanto entre los aficionados a la computación como en el mundo empresarial. Obsérvese que Linux tiene un origen independiente, por lo que se considera un 'clónico' de UNIX y no un UNIX en el sentido histórico.

Las interrelaciones entre estas familias son las siguientes, aproximadamente en orden cronológico:

  • La familia BSD surge del licenciamiento del UNIX original de AT&T.

  • Xenix también surge por licenciamiento del UNIX original de AT&T, aunque aún no era propiedad de SCO.

  • AIX surge por licenciamiento de UNIX System III, pero también incorpora propiedad intelectual de BSD.

  • La familia original AT&T incorpora ilegalmente propiedad intelectual de BSD en UNIX System III r3.

  • La familia AIX vuelve a incorporar propiedad intelectual de la familia AT&T, esta vez procedente de UNIX System V.

  • Linux incorpora propiedad intelectual de BSD, gracias a que éste también se libera con una licencia de código abierto denominada Open-source BSD.

  • Según SCO Group, Linux incorpora propiedad intelectual procedente de AIX, gracias a la colaboración de IBM en la versión 2.4, mas aún no está demostrado, hay un proceso judicial al respecto: Disputas de SCO sobre Linux.

La marca

UNIX es una marca registrada de Novell, después de una disputa con The Open Group en Estados Unidos y otros países. Esta marca solo se puede aplicar a los sistemas operativos que cumplen la "Single Unix Specification" de esta organización y han pagado las regalías establecidas.

En la práctica, el término UNIX se utiliza en su acepción de familia. Se aplica también a sistemas multiusuario basados en POSIX (tales como GNU/Linux, Mac OS X [el cual, en su versión 10.5 ya ha alcanzado la certificación UNIX], FreeBSD, NetBSD, OpenBSD), los cuales no buscan la certificación UNIX por resultar cara para productos destinados al consumidor final o que se distribuyen libremente en Internet. En estos casos, el término se suele escribir como "UN*X", "UNIX*", "*NIX", o "*N?X". Para referirse a ellos (tanto a Unix, como al sistema basado en Unix/POSIX) también se utiliza "Unixes", pero "Unices" (que trata la palabra Unix como un nombre latino de la tercera declinación) es asimismo popular.

Implementaciones más importantes

A lo largo de la historia ha surgido una gran multitud de implementaciones comerciales de UNIX. Sin embargo, un conjunto reducido de productos han consolidado el mercado y prevalecen gracias a un continuo esfuerzo de desarrollo por parte de sus fabricantes.

Los más importantes son:

  • Solaris de Sun Microsystems. Uno de los sistemas operativos Unix más difundidos en el entorno empresarial y conocido por su gran estabilidad. Parte del código fuente de Solaris se ha liberado con licencia de fuentes abiertas (OpenSolaris).

  • AIX de IBM. El UNIX "propietario" de IBM cumplió 20 años de vida en el 2006 y continúa en pleno desarrollo, con una perceptible herencia del mainframe en campos como la virtualización o la RAS de los servicios, heredada de sus "hermanos mayores".

  • HP-UX de Hewlett-Packard. Este sistema operativo también nació ligado a las computadoras departamentales de este fabricante. También es un sistema operativo estable que continua en desarrollo.

  • Mac OS X. Se trata de un UNIX completo, aprobado por The Open Group. Su diferencia marcada es que posee una interfaz gráfica propietaria llamada Aqua, y es principalmente desarrollada en Objective-C en lugar de C o C++.

Existen sistemas operativos basados en el núcleo Linux, y el conjunto de aplicaciones GNU (también denominado GNU/Linux), entre las más utilizadas encontramos:

  • Debian GNU/Linux. Con una de las comunidades más grandes y antiguas del movimiento de software libre, es base para distribuciones como Xandros, Mepis, Linspire y Ubuntu.

  • Red Hat Enterprise Linux. Cuyo fabricante Red Hat es conocido por su amplia gama de soluciones y aportes al desarrollo de software libre. Apoya el proyecto Fedora del cual se beneficia y de ella se derivan distribuciones compatibles como Oracle Enterprise Linux y CentOS, también distribuciones como Mandriva Linux, se basó en una de sus primeras versiones.

  • SUSE Linux de Novell. Originalmente liberado por la compañía alemana SuSE. Es popular por sus herramientas de administración centralizada. De manera análoga a RedHat con Fedora, apoya el proyecto openSUSE.

También son populares los sistemas operativos descendientes del 4.4 BSD:

  • FreeBSD. Quizá el sistema operativo más popular de la familia, de propósito múltiple. Con una implementación SMP muy elaborada, es el sistema operativo utilizado por los servidores de Yahoo. Y base de muchos sistemas operativos entre ellos Mac OS X de Apple.

  • OpenBSD. Ampliamente reconocida por su seguridad proactiva y auditoría permanente del código fuente. Es utilizada en ambientes donde la seguridad prima sobre todo, es usual encontrarlo instalado en servidores que actúan como Firewall, VPN o Proxy.

  • NetBSD. Se le conoce por su portabilidad, a octubre de 2008: 53 arquitecturas soportadas. La NASA lo ha utilizado para la investigación en redes TCP/IP satelitales, al igual que para reciclar computadoras viejas con software moderno.

Las siguientes implementaciones de UNIX tienen importancia desde el punto de vista histórico, no obstante, actualmente están en desuso:

  • Tru64 UNIX actualmente de Hewlett-Packard (antes de Compaq y originalmente de Digital Equipment Corporation).

  • UnixWare y SCO OpenServer anteriormente de Santa Cruz Operation y ahora de SCO Group.

  • UX/4800 de NEC.

  • IRIX de Silicon Graphics Inc..

== Órdenes clásicas de UNIX ==

Algunos comandos básicos de UNIX son:

  • Navegación/creación de directorios/archivos: ls cd pwd mkdir rm rmdir cp

  • Edición/visión de archivos: touch more ed vi nano

  • Procesamiento de textos: echo cat grep sort uniq sed awk tail head

  • Comparación de archivos: comm cmp diff patch

  • Administración del sistema: chmod chown ps find xargs sd w who

  • Comunicación: mail telnet ssh ftp finger rlogin

  • Shells: sh csh ksh

  • Documentación: man.

Esta es una lista de los sesenta comandos de usuario de la sección 1 de la Primera Edición:

ar as b bas bcd boot cat chdir check chmod chown cmp cp date db (Unix) dbppt dc df dsw dtf du ed find for form hup lbppt ld ln ls mail mesg mkdir mkfs mount mv nm od pr rew (Unix) rkd rkf rkl rm rmdir roff sdate sh stat strip (Unix) su sum tap (Unix) tm tty type un wc who write

edu.red

edu.red

TAREA #18

  • Hacer un cuestionario sobre UNIX no menor a 40 preguntas.

  • Instale Unix Bsd, virtualizado.

Núcleo UNIX

En informática, un núcleo o kernel (de la raíz germánica Kern, núcleo, hueso) es un software que constituye la parte más importante del sistema operativo. Es el principal responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma básica, es el encargado de gestionar recursos, a través de servicios de llamada al sistema. Como hay muchos programas y el acceso al hardware es limitado, también se encarga de decidir qué programa podrá hacer uso de un dispositivo de hardware y durante cuánto tiempo, lo que se conoce como multiplexado. Acceder al hardware directamente puede ser realmente complejo, por lo que los núcleos suelen implementar una serie de abstracciones del hardware. Esto permite esconder la complejidad, y proporciona una interfaz limpia y uniforme al hardware subyacente, lo que facilita su uso al programador.

Técnica

Cuando se aplica voltaje al procesador de un dispositivo electrónico, éste ejecuta un reducido código en lenguaje ensamblador localizado en una dirección concreta en la memoria ROM (dirección de reset) y conocido como reset code, que a su vez ejecuta una rutina con la que se inicializa el hardware que acompaña al procesador. También en esta fase suele inicializarse el controlador de las interrupciones. Finalizada esta fase se ejecuta el código de arranque (startup code), también código en lenguaje ensamblador, cuya tarea más importante es ejecutar el programa principal (main()) del software de la aplicación.

Generalidades

edu.red

Una visión típica de la arquitectura de computadores como una serie de capas de abstracción: hardware, firmware, lenguaje de máquina, núcleo, software de sistema y aplicaciones.

En informática, los ordenadores son el núcleo del programa informático que se asegura de:

  • La comunicación entre los programas que solicitan recursos y el hardware.

  • Gestión de los distintos programas informáticos (tareas) de una máquina.

  • Gestión del hardware (memoria, procesador, periférico, forma de almacenamiento, etc.)

La mayoría de las interfaces de usuario se construyen en torno al concepto de núcleo. La existencia de un núcleo, es decir, de un único programa responsable de la comunicación entre el hardware y el programa informático, resulta de compromisos complejos referentes a cuestiones de resultados, seguridad y arquitectura de los procesadores. El núcleo tiene grandes poderes sobre la utilización de los recursos materiales (hardware), en particular, de la memoria.

Funciones generalmente ejercidas por un núcleo

Los núcleos tienen como funciones básicas garantizar la carga y la ejecución de los procesos, las entradas/salidas y proponer una interfaz entre el espacio núcleo y los programas del espacio del usuario.

Aparte de las funcionalidades básicas, el conjunto de las funciones de los puntos siguientes (incluidos los pilotos materiales, las funciones de redes y sistemas de ficheros o los servicios) necesariamente no son proporcionadas por un núcleo de sistema de explotación. Pueden establecerse estas funciones del sistema de explotación tanto en el espacio usuario como en el propio núcleo. Su implantación en el núcleo se hace en el único objetivo de mejorar los resultados. En efecto, según la concepción del núcleo, la misma función llamada desde el espacio usuario o el espacio núcleo tiene un coste temporal obviamente diferente. Si esta llamada de función es frecuente, puede resultar útil integrar estas funciones al núcleo para mejorar los resultados.

Unix

Un núcleo Unix es un programa escrito casi en su totalidad en lenguaje C, con excepción de una parte del manejo de interrupciones, expresada en el lenguaje ensamblador del procesador en el que opera. Las funciones del núcleo son permitir la existencia de un ambiente en el que sea posible atender a varios usuarios y múltiples tareas en forma concurrente, repartiendo al procesador entre todos ellos, e intentando mantener en grado óptimo la atención individual.

El núcleo opera como asignador de recursos para cualquier proceso que necesite hacer uso de las facilidades de cómputo.

  • Creación de procesos, asignación de tiempos de atención y sincronización.

  • Asignación de la atención del procesador a los procesos que lo requieren.

  • Administración de espacio en el sistema de archivos, que incluye: acceso, protección y administración de usuarios; comunicación entre usuarios y entre procesos, y manipulación de E/S y administración de periféricos.

  • Supervisión de la transmisión de datos entre la memoria principal y los dispositivos periféricos.

Reside siempre en la memoria principal y tiene el control sobre la computadora, por lo que ningún otro proceso puede interrumpirlo; sólo pueden llamarlo para que proporcione algún servicio de los ya mencionados. Un proceso llama al núcleo mediante módulos especiales conocidos como llamadas al sistema.

Consta de dos partes principales: la sección de control de procesos y la de control de dispositivos. La primera asigna recursos, programas, procesos y atiende sus requerimientos de servicio; la segunda, supervisa la transferencia de datos entre la memoria principal y los dispositivos del ordenador. En términos generales, cada vez que algún usuario oprime una tecla de una terminal, o que se debe leer o escribir información del disco magnético, se interrumpe al procesador central y el núcleo se encarga de efectuar la operación de transferencia.

Cuando se inicia la operación de la computadora, debe cargarse en la memoria una copia del núcleo, que reside en el disco magnético (operación denominada bootstrap). Para ello, se deben inicializar algunas interfaces básicas de hardware; entre ellas, el reloj que proporciona interrupciones periódicas. El núcleo también prepara algunas estructuras de datos que abarcan una sección de almacenamiento temporal para transferencia de información entre terminales y procesos, una sección para almacenamiento de descriptores de archivos y una variable que indica la cantidad de memoria principal.

A continuación, el núcleo inicializa un proceso especial, llamado proceso 0. En Unix, los procesos se crean mediante una llamada a una rutina del sistema (fork), que funciona por un mecanismo de duplicación de procesos. Sin embargo, esto no es suficiente para crear el primero de ellos, por lo que el núcleo asigna una estructura de datos y establece apuntadores a una sección especial de la memoria, llamada tabla de procesos, que contendrá los descriptores de cada uno de los procesos existentes en el sistema.

Después de haber creado el proceso 0, se hace una copia del mismo, con lo que se crea el proceso 1; éste muy pronto se encargará de "dar vida" al sistema completo, mediante la activación de otros procesos que también forman parte del núcleo. Es decir, se inicia una cadena de activaciones de procesos, entre los cuales destaca el conocido como despachador, o planificador, que es el responsable de decidir cuál proceso se ejecutará y cuáles van a entrar o salir de la memoria central. A partir de ese momento se conoce el número 1 como proceso de inicialización del sistema, init.

El proceso init es el responsable de establecer la estructura de procesos en Unix. Normalmente, es capaz de crear al menos dos estructuras distintas de procesos: el modo monousuario y el multiusuario. Comienza activando el intérprete del lenguaje de control Shell de Unix en la terminal principal, o consola del sistema, proporcionándole privilegios de "superusuario". En la modalidad de un solo usuario la consola permite iniciar una primera sesión, con privilegios especiales, e impide que las otras líneas de comunicación acepten iniciar sesiones nuevas. Esta modalidad se usa con frecuencia para revisar y reparar sistemas de archivos, realizar pruebas de funciones básicas del sistema y para otras actividades que requieren uso exclusivo de la computadora.

Init crea otro proceso, que espera a que alguien entre en sesión en alguna línea de comunicación. Cuando esto sucede, realiza ajustes en el protocolo de la línea y ejecuta el programa login, que se encarga de atender inicialmente a los nuevos usuarios. Si el nombre de usuario y la contraseña proporcionadas son correctos, entonces entra en operación el programa Shell, que en lo sucesivo se encargará de la atención normal del usuario que se dio de alta en esa terminal.

A partir de ese momento el responsable de atender al usuario en esa terminal es el intérprete Shell. Cuando se desea terminar la sesión hay que desconectarse de Shell (y, por lo tanto, de Unix), mediante una secuencia especial de teclas (usualmente. < CTL > – D). A partir de ese momento la terminal queda disponible para atender a un nuevo usuario.

Tipos de sistemas

No necesariamente se necesita un núcleo para usar una computadora. Los programas pueden cargarse y ejecutarse directamente en una computadora 붡cía묠siempre que sus autores quieran desarrollarlos sin usar ninguna abstracción del hardware ni ninguna ayuda del sistema operativo. Ésta era la forma normal de usar muchas de las primeras computadoras: para usar distintos programas se tenía que reiniciar y reconfigurar la computadora cada vez. Con el tiempo, se empezó a dejar en memoria (aún entre distintas ejecuciones) pequeños programas auxiliares, como el cargador y el depurador, o se cargaban desde memoria de sólo lectura. A medida que se fueron desarrollando, se convirtieron en los fundamentos de lo que llegarían a ser los primeros núcleos de sistema operativo.

Hay cuatro grandes tipos de núcleos:

  • Los núcleos monolíticos facilitan abstracciones del hardware subyacente realmente potentes y variadas.

  • Los micronúcleos (en inglés microkernel) proporcionan un pequeño conjunto de abstracciones simples del hardware, y usan las aplicaciones llamadas servidores para ofrecer mayor funcionalidad.

  • Los núcleos híbridos (micronúcleos modificados) son muy parecidos a los micronúcleos puros, excepto porque incluyen código adicional en el espacio de núcleo para que se ejecute más rápidamente.

  • Los exonúcleos no facilitan ninguna abstracción, pero permiten el uso de bibliotecas que proporcionan mayor funcionalidad gracias al acceso directo o casi directo al hardware.

Micronúcleos

edu.red

Esquema del funcionamiento de un micronúcleo.

El enfoque micronúcleo consiste en definir una abstracción muy simple sobre el hardware, con un conjunto de primitivas o llamadas al sistema que implementan servicios del sistema operativo mínimos, como la gestión de hilos, el espacio de direccionamiento y la comunicación entre procesos.

El objetivo principal es la separación de la implementación de los servicios básicos y de la política de funcionamiento del sistema. Por ejemplo, el proceso de bloqueo de E/S se puede implementar con un servidor en espacio de usuario ejecutándose encima del micronúcleo. Estos servidores de usuario, utilizados para gestionar las partes de alto nivel del sistema, son muy modulares y simplifican la estructura y diseño del núcleo.

Si falla uno de estos servidores, no se colgará el sistema entero, y se podrá reiniciar este módulo independientemente del resto. Sin embargo, la existencia de diferentes módulos independientes origina retardos en la comunicación debido a la copia de variables que se realiza en la comunicación entre módulos.

Algunos ejemplos de micronúcleos:

  • AIX

  • La familia de micronúcleos L4

  • El micronúcleo Mach, usado en GNU Hurd y en Mac OS X

  • BeOS

  • Minix

  • MorphOS

  • QNX

  • RadiOS

  • VSTa

  • Hurd

Núcleos monolíticos en contraposición a micronúcleos

Frecuentemente se prefieren los núcleos monolíticos frente a los micronúcleos debido al menor nivel de complejidad que comporta el tratar con todo el código de control del sistema en un solo espacio de direccionamiento. Por ejemplo, XNU, el núcleo de Mac OS X, está basado en el núcleo Mach 3.0 y en FreeBSD, en el mismo espacio de direccionamiento para disminuir la latencia que comporta el diseño de micronúcleo convencional.

A principios de los años 90, los núcleos monolíticos se consideraban obsoletos. El diseño de Linux como un núcleo monolítico en lugar de como un micronúcleo fue el tema de una famosa disputa entre Linus Torvalds y Andrew Tanenbaum. Los argumentos de ambas partes en esta discusión presentan algunas motivaciones interesantes.

Los núcleos monolíticos suelen ser más fáciles de diseñar correctamente, y por lo tanto pueden crecer más rápidamente que un sistema basado en micronúcleo, pero hay casos de éxito en ambos bandos. Los micronúcleos suelen usarse en robótica embebida o computadoras médicas, ya que la mayoría de los componentes del sistema operativo residen en su propio espacio de memoria privado y protegido. Esto no sería posible con los núcleos monolíticos, ni siquiera con los modernos que permiten cargar módulos del núcleo.

Aunque Mach es el micronúcleo generalista más conocido, se han desarrollado otros micronúcleos con propósitos más específicos. L3 fue creado para demostrar que los micronúcleos no son necesariamente lentos. La familia de micronúcleos L4 es la descendiente de L3, y una de sus últimas implementaciones, llamada Pistachio, permite ejecutar Linux simultáneamente con otros procesos, en espacios de direccionamiento separados.

QNX es un sistema operativo que ha estado disponible desde principios de los años 80, y tiene un diseño de micronúcleo muy minimalista. Este sistema ha conseguido llegar a las metas del paradigma del micronúcleo con mucho más éxito que Mach. Se usa en situaciones en que no se puede permitir que haya fallos de software, lo que incluye desde brazos robóticos en naves espaciales, hasta máquinas que pulen cristal donde un pequeño error podría costar mucho dinero.

Mucha gente cree que como Mach básicamente falló en el intento de resolver el conjunto de problemas que los micronúcleos intentaban subsanar, toda la tecnología de micronúcleos es inútil. Los partidarios de Mach afirman que ésta es una actitud estrecha de miras que ha llegado a ser lo suficientemente popular para que mucha gente la acepte como verdad.

Núcleos híbridos (micronúcleos modificados)

Los núcleos híbridos fundamentalmente son micronúcleos que tienen algo de código 뮯 esencial력n espacio de núcleo para que éste se ejecute más rápido de lo que lo haría si estuviera en espacio de usuario. Éste fue un compromiso que muchos desarrolladores de los primeros sistemas operativos con arquitectura basada en micronúcleo adoptaron antes que se demostrara que los micronúcleos pueden tener muy buen rendimiento. La mayoría de sistemas operativos modernos pertenecen a esta categoría, siendo el más popular Microsoft Windows. XNU, el núcleo de Mac OS X, también es un micronúcleo modificado, debido a la inclusión de código del núcleo de FreeBSD en el núcleo basado en Mach. DragonFlyBSD es el primer sistema BSD que adopta una arquitectura de núcleo híbrido sin basarse en Mach.

Algunos ejemplos de núcleos híbridos:

  • Microsoft Windows NT, usado en todos los sistemas que usan el código base de Windows NT

  • XNU (usado en Mac OS X)

  • DragonFlyBSD

  • ReactOS

Hay gente que confunde el término 뮦uacute;cleo híbrido렣on los núcleos monolíticos que pueden cargar módulos después del arranque, lo que es un error. 눦iacute;brido렩mplica que el núcleo en cuestión usa conceptos de arquitectura o mecanismos tanto del diseño monolítico como del micronúcleo, específicamente el paso de mensajes y la migración de código 뮯 esencial련acia el espacio de usuario, pero manteniendo cierto código 뮯 esencial력n el propio núcleo por razones de rendimiento.

Exonúcleos

edu.red

Esquema básico de la interacción entre un Exonúcleo (Exokernel) con el Software a través de bibliotecas.

Los exonúcleos, también conocidos como sistemas operativos verticalmente estructurados, representan una aproximación radicalmente nueva al diseño de sistemas operativos.

La idea subyacente es permitir que el desarrollador tome todas las decisiones relativas al rendimiento del hardware. Los exonúcleos son extremadamente pequeños, ya que limitan expresamente su funcionalidad a la protección y el multiplexado de los recursos. Se llaman así porque toda la funcionalidad deja de estar residente en memoria y pasa a estar fuera, en bibliotecas dinámicas.

Los diseños de núcleos clásicos (tanto el monolítico como el micronúcleo) abstraen el hardware, escondiendo los recursos bajo una capa de abstracción del hardware, o detrás de los controladores de dispositivo. En los sistemas clásicos, si se asigna memoria física, nadie puede estar seguro de cuál es su localización real, por ejemplo.

La finalidad de un exonúcleo es permitir a una aplicación que solicite una región específica de la memoria, un bloque de disco concreto, etc., y simplemente asegurarse que los recursos pedidos están disponibles, y que el programa tiene derecho a acceder a ellos.

Debido a que el exonúcleo sólo proporciona una interfaz al hardware de muy bajo nivel, careciendo de todas las funcionalidades de alto nivel de otros sistemas operativos, éste es complementado por una 뢩blioteca de sistema operativo뮠Esta biblioteca se comunica con el exonúcleo subyacente, y facilita a los programadores de aplicaciones las funcionalidades que son comunes en otros sistemas operativos.

Algunas de las implicaciones teóricas de un sistema exonúcleo son que es posible tener distintos tipos de sistemas operativos (p.e. Windows, Unix) ejecutándose en un solo exonúcleo, y que los desarrolladores pueden elegir prescindir ó incrementar funcionalidades por motivos de rendimiento.

Actualmente, los diseños exonúcleo están fundamentalmente en fase de estudio y no se usan en ningún sistema popular. Un concepto de sistema operativo es Nemesis, creado por la Universidad de Cambridge, la Universidad de Glasgow, Citrix Systems y el Instituto Sueco de Informática. El MIT también ha diseñado algunos sistemas basados en exonúcleos. Los exonúcleos se manejan en diferente estructura dado que también cumplen funciones distintas

Otros nucleos:

  • Micronúcleo

  • Núcleo monolítico

  • Núcleo híbrido

  • Exonúcleo

Como ya se ha explicado la primera descripción del sistema operativo UNIX data del año 1969, y corresponde a la formulación de Thomson y Dennis Ritchie, trabajadores entonces de la compañía americana AT&T. En 1973 apareció la primera versión de UNIX totalmente programada en C.

El sistema operativo UNIX era en principio gratuito pero, en 1982, Bell Laboratories lanzó al mercado la versión comercial UNIX System III. Poco después aparece el UNIX System IV, que representa la base del actual sistema standard de UNIX, que es el UNIX System V. Existen varias distribuciones del UNIX System V:

  • UNIX SVR1, que incorpora el editor VI y la primera edición de la librería Curses;

  • UNIX SVR2 presenta el sistema de archivo;

  • SVR2.1 incluye la paginación bajo demanda;

  • SVR3 sale al mercado en 1987, y presenta como novedad más destacable el manejo de redes.

  • Por último, el UNIX SVR4 unifica los criterios de implementación de los sistemas anteriores.

Existen otras variantes de UNIX, entre las que destaca el UNIX BSD (Berkeley Software Distribution), diseñado en Berkeley, que incluye el editor de comandos C-Shell, algunos editores de texto nuevos y un compilador de Pascal.

Jay y Halley Pusictes incorporaron al sistema UNIX soporte para redes en el año 1984. Jay es fundador de Sun Microsystems, compañía que añade a los estándares UNIX el NFS (Network File System).

Otros sistemas UNIX son el UnixWare (Novell), SunOS y Solaris (Sun MicroSystems), Aix (IBM), Digital UNIX (Digital), HP-UX (Hewlett Packard), Xenix (Microsoft), SCO-UNIX (Santa Cruz Operations) y, por último, Linux, versión de UNIX de libre distribución creada gracias al esfuerzo de multitud d usuarios y programadores sin ánimo de lucro.

TAREA #19

  • Hacer un cuestionario sobre NUCLEO UNIX no menor a 20 preguntas.

Arquitectura general de UNIX

El sistema UNIX está basado en tres niveles:

  • Nivel USUARIO

  • Nivel KERNEL

  • Nivel HARDWARE

edu.red

Nivel KERNEL

edu.red

El kernel tiene una interfaz con los programas de usuario, teniendo las llamadas al sistema apariencia de funciones C, distinguiéndose dos tipos:

  • Llamadas al sistema de ficheros

  • Llamadas al control de procesos

Funciones del kernel

El kernel:

? Controla la ejecución de procesos;

? Planifica la CPU en tiempo compartido;

? Asigna memoria a los procesos;

? Asigna memoria en disco;

? Permite a los procesos el acceso a dispositivos.

La ejecución de un proceso en UNIX se divide en dos niveles: nivel usuario y nivel kernel. Cuando se produce una llamada al sistema se pasa del modo usuario al modo kernel. Éste analiza la llamada, la ejecuta y devuelve el control a modo usuario. Esta diferenciación de modo se produce porque los procesos en modo usuario pueden acceder a sus instrucciones y datos, pero no a instrucciones y datos del kernel o de otros usuarios; mientras que el modo kernel puede acceder a todos los datos e instrucciones del sistema. Hay instrucciones privilegiadas a las que sólo se puede acceder en modo kernel, el cual reside permanentemente en memoria.

El buffer cache

El buffer cache consiste en un conjunto de buffers internos de datos manejados por el kernel con el objetivo de minimizar la frecuencia de acceso a disco.

Estos buffers contienen bloques de datos de disco utilizados recientemente. Cuando el kernel quiere leer el disco, se comprueba primeramente si los datos requeridos están en el buffer cache: si están, no es necesario el acceso a disco; si no es así no hay más remedio que acudir al disco.

Si la operación a realizar es de escritura en disco, el kernel no la realiza directamente, sino que lo hace sobre el buffer, quedando los datos almacenados allí para posteriores lecturas.

El espacio ocupado por el buffer cache es configurable en la inicialización del sistema, reservándose un cierto número de buffers. Cada buffer contiene los datos que se corresponden con un bloque de disco: es una copia en memoria del bloque de disco. Asimismo, ningún bloque puede estar en más de un buffer; es decir, un bloque de disco no podrá tener más de un bloque de memoria.

Estructura

El buffer cache está formado por una serie de buffers organizados. Hay una lista de buffers libres (`free list'), y una serie de colas (hash) para facilitar el acceso a los buffers sin recorrerlos todos.

Cada buffer está constituido por una cabecera y un área de datos, que es un array de memoria donde se almacenan los datos de disco contenidos en el buffer.

La distribución del buffer queda como sigue:

# dispositivo

# bloque

Status

Puntero al área de datos

Puntero siguiente en la cola Hash

Puntero anterior en la cola Hash

Puntero siguiente en la free list

Puntero anterior en la free list

  • Los dos primeros campos (número de dispositivo y de bloque) se utilizan como identificativo del buffer.

  • El campo status incluye varios campos que indican el estado actual del buffer:

  • Si está libre u ocupado (utilizado por un proceso);

  • Si los contenidos son válidos o no,

  • Si el buffer es de escritura retardada;

  • Si se produce una lectura o escritura;

  • Si hay procesos en espera para utilizar el buffer.

La asignación de estos campos se hace con un LRU de bloques de disco al buffer.

  • El primer puntero señala el área de datos, que es la zona de memoria donde están los datos del bloque del disco.

  • Los punteros 2º y 3º apuntan al buffer posterior y anterior en la cola hash.

  • Los punteros 4º y 5º indican los buffers posterior y anterior en la free list.

En el buffer cache se distinguen dos estructuras de datos:

  • Free List (única): es una lista circular doblemente enlazada, siendo los elementos de esta lista buffer headers. Tiene un buffer especial al principio de la lista, usado para marcar el principio y el final de la lista.

edu.red

Mediante el uso de la lista con un LRU se realiza la asignación de los buffers a los bloques. Cuando se asigna un buffer a un bloque de disco no se puede volver a asignar sin que se hayan asignado todos los componentes de la lista antes.

Si se realiza la asignación de un buffer de disco se asignará aquel que encabece la lista. Si se libera un buffer asignado a bloque, el buffer liberado se colocará al final de la free list. Con este sistema se mantiene el algoritmo LRU automáticamente.

  • Colas Hash (múltiples). Son una serie de colas circulares doblemente enlazadas, con un buffer especial que indica principio y final de la cola. La diferencia con la free list radica en que la cola hash está organizada en una tabla hash según el número de bloque y el número de dispositivo lógico, siendo así más rápida la búsqueda.

edu.red

Los datos que se corresponden con los datos de disco estan en las colas hash.

Un buffer puede estar a la vez en una de las colas hash y en la free list. En caso de que este buffer no se encuentre ocupado por un proceso, la lista de bloques se organiza a partir de la estructura de colas hash.

Suponiendo que los buffers 64, 17, 98 y 50 están ocupados, la free list quedaría como sigue:

edu.red

Funcionamiento

Son necesarios cuatro algoritmos.

1/ Asignación de un bloque de disco a un buffer (Get Block):

Recibe como entrada el número de dispositivo y de bloque.

? Encuentra el bloque y está libre: se marca como ocupado, se quita de la free lista. Ya está en su cola hash.

? No se encuentra en su cola hash: se asigna el primer bloque de la free list, se marca como ocupado y se coloca en la cola correspondiente.

? No se encuentra en la cola hash y se le asigna uno de escritura retardada: lo marca como ocupado, realiza una escritura asíncrona en disco e inicia la búsqueda de un nuevo bloque.

? No se encuentra en su cola hash y la lista de bloques libres está vacía: el proceso ha de esperar y se va "a dormir". Cuando el algoritmo de liberación actúa despierta a los procesos dormidos.

? El bloque está ocupado: el proceso ha de esperar hasta que se libere.

2/ Algoritmo de liberación de buffer:

Libera el buffer, colocándolo como libre y situándolo al final de la lista de libres, no volviendo a ser utilizado hasta que sean utilizados todos los demás integrantes de la free list que lo preceden.

Se ha de avisar a los procesos en espera de que se libera ese buffer, o de que otro buffer ha sido liberado.

3/ Algoritmo de lectura de un bloque:

? Busca el buffer en el buffer cache por medio del algoritmo obtener bloque, que marcará el buffer como ocupado.

? Si está en el buffer cache, se devuelve el contenido, no se precisa la lectura en disco.

? En caso contrario, se llama al driver del disco para que solicite una lectura.

? El driver calcula la dirección y llama al controlador del disco.

? Cuando se termina la lectura, el controlador provocará una interrupción y el servicio de interrupciones avisa a los procesos en espera de que ese buffer ha quedado libre.

? Libera el buffer.

4/ Algoritmo de escritura en disco

Es similar a la lectura de un bloque. Existen dos tipos de escritura:

  • Síncrona: el proceso realiza la operación de forma síncrona, esto es, espera a que se termine la operación de escritura en disco para liberar el buffer.

  • Asíncrona: el proceso no espera a que se termine la escritura. Cuando se termina la E/S se produce una interrupción, y es el servicio de interrupciones el que se encarga de liberar el buffer.

Ventajas y desventajas del buffer cache

Ventajas:

? El acceso a disco es más uniforme, pues se hace siempre a través del buffer cache. Esto provoca un código más modular.

? Aumenta la velocidad del disco.

? Aumenta la integridad, ya que un bloque no puede estar en dos buffers.

Desventajas:

? Sistema sensible a cortes de electricidad.

? Para grandes cantidades de datos, puede hacer lento el acceso a disco.

Sistema de ficheros

Para analizar el sistema de ficheros, debemos tener en cuenta dos puntos de vista: el del usuario y el del kernel.

Usuario

  • Ve una estructura jerárquica que permite crear, borrar y modificar ficheros y directorios.

  • Permite un crecimiento dinámico de los ficheros.

  • Protege los datos de los ficheros.

  • Trata los periféricos como ficheros: los permisos de lectura o escritura en un periférico son iguales a los de cualquier otro fichero.

  • Tanto los ficheros como los directorios son una sucesión de bytes.

  • Cada uno de ellos está representado por un i-node, que tiene información acerca del fichero o directorio. Cada fichero tiene un único i-node, aunque puede tener varios nombres. Cada uno de esos nombres es un link.

  • El UNIX maneja tres estructuras: tabla de i-nodes, tabla de ficheros y tabla de escritores de ficheros de usuario.

Esta última tabla tiene una entrada para cada usuario que abre un fichero. Además tiene información de otras tablas, como son una tabla particular para cada proceso (tabla de ficheros), e información de otras tablas (una por sistema de ficheros). Esta tabla contiene el descriptor de fichero, que es el número que se emplea como índice para acceder a l tabla de descriptores de fichero, y un puntero a donde está el fichero en la tabla de ficheros.

I-nodes

La implementación de ficheros utiliza una técnica de índices con múltiples niveles. Cada fichero tiene asociado un índice llamado i-node (index node).

En disco, un sistema de ficheros UNIX tiene el siguiente aspecto:

Boot Block

Super Block

I-node List Blocks

  • Boot Block: Contiene el código para inicializar el UNIX. Todo sistema de ficheros tiene boot block, aunque no sea estrictamente necesario.

  • Super Block: Indica el estado y configuración general del bloque de fichero: tamaño, bloques libres弯font>

  • I-node list blocks: Serie de bloques donde están de forma contigua en el disco los i-nodes de todos los ficheros. Cuando se habla de i-node list nos referimos a un array en disco donde cada elemento es un i-node de un fichero.

  • Data blocks: Bloques de datos de los ficheros.

Conviene diferenciar la unidad física o disco, que puede tener uno o más sistemas de ficheros, cada uno con esta misma estructura.

Cada sistema de ficheros se denomina dispositivo lógico, mientras que el disco es el dispositivo de almacenamiento físico. El kernel es el encargado de asignar un número a cada dispositivo lógico o sistema de ficheros. El encargado de traducir las direcciones del dispositivo lógico al físico es el controlador de E/S (device driver).

Campos por i-node en la lista de i-nodes del disco

edu.red

  • Propietario identifica al propietario del fichero asociado a ese i-node, distinguiendo entre individual y el grupo.

  • En el campo Permisos se expresan las posibilidades de operación según sea el propietario, un usuario de su mismo grupo o un usuario cualquiera del sistema quien intente la operación. Los permisos son de lectura (Read), escritura (Write) y ejecución (eXecute).

  • Tipo de fichero indica información sobre el tipo especial de fichero, siendo algunos ejemplos:

  • (-): fichero regular;

  • (d): directorio;

  • (b): dispositivo de bloque;

  • (c): dispositivo de carácter;

  • (詺 i-node libre.

  • El campo Tiempos de fichero tiene varios subcampos:

  • Última modificación del fichero;

  • Último acceso al fichero;

  • Última modificación del i-node causada, además de por un cambio en los datos del fichero, por un cambio en los propietarios, permisos o links, sin necesidad de cambiar los datos del fichero.

  • El campo Número de links expresa el número de nombres del fichero dentro de la jerarquía.

  • Tamaño del fichero muestra el tamaño del fichero en Bytes.

  • El campo Tabla de contenidos almacena punteros a diversos bloques de datos. Por ejemplo, en UNIX System V la tabla de contenidos consta de 10 punteros directos a bloques de datos, un puntero indirecto, otro doble y otro triple. El número de punteros directos no es standard.

El kernel mantiene en memoria una tabla de i-nodes con la siguiente información:

edu.red

  • El campo Status indica posibles estados del i-node:

? Si el i-node está ocupado;

? Si hay un proceso en espera de que el i-node quede libre;

? Si el contenido del i-node en memoria es distinto del i-node del disco;

Partes: 1, 2, 3, 4, 5, 6
 Página anterior Volver al principio del trabajoPágina siguiente