Descargar

Sistemas operativos (página 3)

Enviado por Ernesto Pineda


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

? Si el contenido del fichero en el disco es distinto del contenido del fichero en memoria;

? Si el i-node es un punto de montaje; es decir, si del i-node se haya `colgado' otro sistema de ficheros.

  • El cuarto campo contiene los punteros necesarios para mantener la estructura de los i-nodes en memoria, que es similar a la del buffer cache: existen una serie de colas hash identificadas por el número del i-node y el número de dispositivo lógico, junto con una lista de i-nodes libres.

  • Cuenta de referencia indica el número de ficheros abiertos para ese i-node; es decir, el número de copias abiertas mediante una llamada de tipo `open' que están en unos, no cerradas por una llamada `close'.

Un i-node estará en la lista de libres si el indicador de cuenta de referencia está a cero. Cuando se abre un fichero, si el fichero está activo se incrementa la cuenta; si se cierra, ésta se decrementa, y si vale 0 se pasa el i-node a la lista de libres.

Algoritmos para la gestión de i-nodes

Mecanismo general de operación con i-nodes

Cuando se requiere el acceso a los datos de un fichero, primero se determina el número de dispositivo lógico y el número de i-node, a continuación se busca el i-node en la tabla hash correspondiente. Si está en la tabla se devuelve el i-node, si no es así se toma un i-node libre y luego se lee el i-node del disco; es decir, se pasa de la lista de i-nodes a la tabla de i-nodes.

edu.red

I-Get

Toma un i-node de la tabla de i-nodes.

? Se parte del número de dispositivo lógico y del número del i-node.

? Si está en la cola hash es directo, sólo ha de devolver el i-node.

? Si no está en la cola hash, opera como sigue:

  • Toma el primer i-node de la lista de libres.

  • Lo marca como ocupado, ya que hay un proceso que accede al i-node.

  • Pasa los datos del i-node de disco (lista de i-nodes) al i-node en memoria (tabla de i-nodes).

  • Calcula, a partir del número de i-node en la tabla, el número de bloque en que se encuentra l i-node, aplicando la fórmula:

Nº BLOQUE = ((Nº Inode – 1) DIV (Nº inodes por bloque)) +Nº del bloque del primer bloque de la lista de inodes

Por ejemplo: Nº del 1er bloque de la lista = 2; 8 inodes/bloque

Inode 8: ((8 – 1) DIV 8) + 2 = 2

Inode 9: ((9 – 1) DIV 8) + 2 = 3

? A partir del número de dispositivo y del número de bloque lee el bloque.

? Lee el contenido del i-node en el bloque. Para calcular la posición del i-node en el bloque se calcula el offset dentro de ese bloque de la siguiente forma:

Offset (inode) = ((Nº Inode – 1) MOD (Nº inodes por bloque)) %% Tamaño (Bytes) del inode en disco

Siguiendo con el ejemplo anterior: Bloque 512 Bytes

512 / 8 64 Bytes / Inode

Offset 8: ((8 – 1) MOD 8) % 64 = 448 Bytes

? Retiene el i-node de la lista de libres.

? Copia el contenido en la cola hash correspondiente.

? Sitúa el i-node en la cola hash correspondiente.

? Incrementa la cuenta de referencia.

? El kernel le quita la marca de ocupado; es decir, lo deja libre, pero no pasa a la lista de libres porque su cuenta de referencia es distinta de 0. En el caso de que la lista de libres esté vacía, se provoca un error si se requiere un i-node y hay demasiados ficheros abiertos.

I-put

Libera un i-node de la tabla de i-nodes.

? Decrementa la cuenta de referencia debido a una llamada close.

? Si la cuenta de referencia es ج entonces pasa a disco el i-node si es necesario; esto es, si ha sido modificado.

? Se pasa el i-node a la lista de libres.

? En el caso de que el número de links (nombres de ese fichero en el sistema de ficheros) sea ؠse libera todo el espacio; es decir, se liberan los bloques de disco asociados a ese fichero y se libera el i-node en disco.

Estructura y acceso a los ficheros regulares

En un i-node se encuentran las direcciones de bloque de disco que ocupa el fichero al que pertenece el i-node. En UNIX System V estas direcciones son 13 (punteros).

Según la tabla de contenidos, y dependiendo del tamaño de los bloques, variará el posible tamaño de los ficheros a manejar.

Por ejemplo, con bloques de 1K resultan los siguientes tamaños de ficheros, según se utilicen los índices directos, indirectos, indirectos dobles o indirectos triples:

Directos 10 K

Indirectos 256 K

Indirectos dobles 644 MB

Indirectos triples 166 GB

Ficheros directorio

Son, al igual que en MS-DOS, ficheros con información para construir la estructura jerárquica del sistema de ficheros. Esta estructura consiste en un array de entradas de tamaño constante de tal forma que cada entrada tiene la siguiente forma:

edu.red

En UNIX System V, el tamaño del campo Nº I-node es de 2 Bytes, y el tamaño del nombre es de 14 Bytes. Los directorios son tratados por los procesos igual que los ficheros, con la salvedad de que cuando se crea una entrada de este tipo la realiza el kernel.

Permisos de acceso

  • Lectura (R): Permite leer el contenido del fichero directorio;

  • Escritura (W): permite escribir en el directorio, lo que supone crear y borrar archivos del directorio.

  • Ejecución (X): Permite la búsqueda de ficheros dentro del directorio (entrar en el directorio).

Al igual que en MS-DOS, existen las entradas y en cada directorio:

  • contiene el número de i-node de ese directorio.

  • contiene el número de i-node del directorio padre.

El directorio raíz contiene las dos entradas anteriores, y el número de i-node es el mismo

Super-Bloque

En el super-boque se halla almacenada la configuración general del sistema. Contiene la siguiente información:

edu.red

Lista de bloques libres: No es una lista completa, sino que sólo contiene alguno de los bloques libres, que se encadenan con el resto de bloques libres del disco. El número de i-nodes libres se refiere al número de i-nodes no asignados a ningún fichero dentro de la lista de i-nodes. En la lista de i-nodes libres sólo están algunos de los i-nodes libres de la lista de i-nodes.

Ocupado / No ocupado: Contiene dos flags indicadores del estado de las listas y bloques de i-nodes. Los estados dependen de si están ocupados por un proceso o no.

El último flag expresa si el super-bloque ha sido modificado. Su presencia viene dada por la existencia de una doble copia del super-bloque: una en disco y otra en memoria. El flag indica la necesidad de actualizar la copia del super-bloque en disco si éste se modifica.

TAREA #20

1. Hacer un cuestionario sobre ARQUITECTURA UNIX no menor a 20 preguntas.

Video Ejecucion de Programa:

The Computer Chronicles: Unix 1985.

https://www.youtube.com/watch?v=g7P16mYDIJw

SO Unix SCO

edu.red

SCO es el proveedor mundial líder en sistemas operativos para servidores Unix, y uno de los principales proveedores de software de integración de clientes que integra PCs Windows y otros clientes con servidores UNIX de los principales fabricantes. Los servidores de aplicaciones críticas de negocios de SCO corren las operaciones críticas diarias de una gran gama de organizaciones comerciales, financieras, de telecomunicaciones, y gobierno, así como también departamentos corporativos y pequeñas y medianas empresas de todo tipo.

SCO vende y brinda soporte de sus productos a través de una red mundial de distribuidores, resellers, integradores de sistemas, y OEMs.

Características

  • Brinda acceso a impresoras y archivos compartidos desde PCs corriendo Windows 5, Windows NTWindows 3.1, Windows para trabajo en Grupos, OS/2 y MS-DOS font>

  • SCO TermLite, el emulador de terminal, incluye soporte para SCO ANSI y VT320 sobre TCP/IP o NetBEUI

  • Herramientas de administración de redes y monitoreo poderosas y fáciles de usar junto con otros utilitarios pueden ser accedidos en forma remota

  • Incluye la capa de protocolo NetBEUI para pequeñas redes; corre en sistemas SCO OpenServer Host Versión 5, así como también en sistemas SCO OpenServer Enterprise Versión 5

  • Las herramientas del servidor NT permiten la administración de los recursos compartidos en un servidor utilizando sistema UNIX desde una PC corriendo Windows

  • Configuración automática de capas de conectividad, incluyendo NetBIOS sobre TCP/IP, y NetBEUI

Totalmente adherido al estándar emergente denominado CIFS.

TAREA #21

1.- Hacer un cuestionario sobre UNIX SCO no menor a 10 preguntas.

2.- Instale unix SCO, virtualizado.

3.- Cree 10 Usuarios

4.- Utilize el commando init 0, init 1.

5.- Utilize shutdown -y -g0

SO Solaris

Solaris es un sistema operativo de tipo Unix desarrollado desde 1992 inicialmente por Sun Microsystems y actualmente por Oracle Corporation como sucesor de SunOS. Es un sistema certificado oficialmente como versión de Unix. Funciona en arquitecturas SPARC y x86 para servidores y estaciones de trabajo.

El primer sistema operativo de Sun nació en 1983 y se llamó inicialmente SunOS.

Estaba basado en el sistema UNIX BSD, de la Universidad de California en Berkeley, del cual uno de los fundadores de la compañía fue programador en sus tiempos universitarios. Más adelante incorporó funcionalidades del System V, convirtiéndose prácticamente en un sistema operativo totalmente basado en System V.

Esta versión basada en System V fue publicada en 1992 y fue la primera en llamarse Solaris, más concreta mente Solaris 2. Las anteriores fueron llamadas Solaris 1 con efecto retroactivo. SunOS solo tendría sentido a partir de ese momento como núcleo de este nuevo entorno operativo Solaris. De esta forma Solaris 2 contenía SunOS 5.0. Desde ese momento se distingue entre el núcleo del sistema operativo (SunOS), y el entorno operativo en general (Solaris), añadiéndole otros paquetes como Apache o DTrace. Como ejemplo de esta función, Solaris 8 contiene SunOS 5.8.

Arquitecturas compatibles

Solaris usa una base de código común para las arquitecturas que soporta: SPARC y x86 (incluyendo AMD64/EM64T). También fue portado a la arquitectura PowerPC en la versión 2.5.1, pero el soporte fue cancelado casi tan pronto como fue liberado.

En un tiempo se planeó la compatibilidad para el Itanium pero nunca se llevó al mercado. Sun también tiene planes de implementar APIs de Linux en Solaris 10, permitiendo la ejecución de código objeto Linux de forma nativa en la plataforma x86, lo cual sería facilitado por el hecho de que ambos sistemas operativos utilizan el formato ejecutable Executable and Linkable Format. Por el momento, Sun ha adoptado la tecnología Lxrun y la ofrece como descarga gratuita, si bien no está incorporada a la distribución base.

Solaris tiene una reputación de ser muy adecuado para el multiprocesamiento simétrico (SMP), soportando un gran número de CPUs. También ha incluido soporte para aplicaciones de 64 bits SPARC desde Solaris 7.

Históricamente Solaris ha estado firmemente integrado con la plataforma hardware de Sun, SPARC, con la cual fue diseñado y promocionado como un paquete combinado. Esto proporcionaba frecuentemente unos sistemas más fiables pero con un coste más elevado que el del hardware de PC, ha dejado de ofrecer estaciones de trabajo basadas en arquitectura SPARC, reemplazándolas por modelos basados en Intel Core 2 y AMD64.

Entornos de escritorio

El primer entorno de escritorio para Solaris fue OpenWindows. Fue reemplazado por CDE en la versión Solaris 2.5. El escritorio Java Desktop System, basado en GNOME, se incluye por defecto con Solaris 10.

OpenSolaris

El código fuente de Solaris (con unas pocas excepciones) ha sido liberado bajo la licencia CDDL (Licencia Común de Desarrollo y Distribución) como un proyecto de software libre bajo el nombre OpenSolaris.

La licencia CDDL ha sido aprobada por la Open Source Initiative (OSI) como una licencia de código abierto y por la FSF como una licencia de software libre (aunque incompatible con la popular licencia GPL ).

La base de OpenSolaris fue alimentada el 14 de junio de 2005 a partir de la entonces actual base de desarrollo de código de Solaris. Es posible descargar y licenciar versiones tanto binarias como en forma de código fuente sin coste alguno. Además, se ha añadido al proyecto Open Solaris código para características venideras como soporte Xen. Sun ha anunciado que las versiones futuras de Solaris se derivarán a partir de OpenSolaris.

Versiones

En orden descendente, las siguientes versiones de Solaris han sido liberadas a 2010:

edu.red edu.red

edu.red

Versión en desarrollo

La base de código subyacente de Solaris ha estado bajo desarrollo continuo desde que el trabajo empezó a finales de los años 1980 en lo que fue con el tiempo liberado como Solaris 2.0. Cada versión como Solaris 10 se basa en una instantánea (snapshot) de este tren de desarrollo, tomada cerca del momento de su liberación, que es después mantenida como un proyecto derivado. Las actualizaciones a ese proyecto son construidas y entregadas varias veces al año hasta que sale la siguiente versión oficial.

La versión de Solaris bajo desarrollo por Sun al día de hoy se llama Nevada y se deriva de lo que es ahora la base de código OpenSolaris.

En 2003 se inició una adición al proceso de desarrollo de Solaris. Bajo el nombre de programa Solaris Express, una instantánea del tren de desarrollo se hace ahora disponible para su descarga una vez al mes, permitiendo a cualquiera probar las nuevas características y probar la calidad y estabilidad del sistema a medida que progresa hacia la liberación de la siguiente versión oficial.

Dado que Solaris Express predata la liberación de Solaris como proyecto de código abierto, empezó como un programa solamente en forma de binarios, pero ahora hay una versión llamada Solaris Express: Community Release dirigida especialmente hacia desarrolladores OpenSolaris.

Modelo de negocio

Si bien Solaris en un ordenador personal apenas necesita mantenimiento profesional, utilizado en una empresa es posible que el empresario quiera contratar los servicios del equipo de Sun para hacer rendir al máximo su negocio, exprimiendo todas las novedades en seguridad de redes y muchas más cosas. Sun fabrica hardware libre, como lo es la tecnología SPARC.

Solaris 11

Solaris 11 es la versión más reciente del sistema operativo desarrollado por Sun Microsystems. Solaris es en sí software propietario y ahora la parte principal del sistema operativo se ha liberado como un proyecto de software libre denominado OpenSolaris. Esto es novedad para Sun, pues todas las versiones anteriores eran cerradas. Plantearon distribuir su producto bajo la licencia CDDL Common development and distribution license.

Sun solaris se ejecuta sobre la arquitectura SPARC en 32 y 64 bits (más conocida como Ultra Sparc) o sobre procesadores x86 (incluidos Intel y AMD).

A comienzos del 2005, Sun Microsystems sacó a la luz la versión 10 (5.10) de su sistema operativo Solaris con nuevas características.

Predictive Self-Healing

Sun ha insertado en el núcleo del sistema operativo solaris un sistema denominado "Tecnología preventiva de auto recuperación" (PSH, Predictive Self-Healing). Con esta tecnología se reducen los riesgos y aumenta la disponibilidad del equipo, además PSH permite tomar medidas (diagnosticar, aislar, y recuperar las fallas existentes en los dispositivos de E/S o zonas en la memoria) para reducir daños por futuros peligros que puedan causar el caos en los sistemas y como resultado reducir los tiempos de caída, lo cual significa ahorrar tiempo y dinero.

Como bien se sabe, el sistema operativo es un software básico que controla una computadora; el sistema operativo tiene 3 principales funciones: coordina y manipula el hardware del ordenador o computadora; (como la impresora, la memoria, etc.), y gestiona los errores del hardware y la pérdida de datos;(el teclado, el mouse). Es por ello que Sun ha creado el PSH, cuya finalidad general es evitar los errores del sistema y/o minimizar el daño que estos puedan ocasionar.

Ventajas de las características del PSH del sistema operativo

  • Disponibilidad de servicio y sistema mejorado a través de un diagnóstico y aislamiento de los componentes defectuosos.

  • Diagnostico automático y reinicio de componentes de hardware y software en milésimas de segundo.

  • Administración simplificada para administrar servicios.

DTrace

Denominado también rastreo dinámico, que busca el fondo y llega a la raíz de los problemas de rendimiento en tiempo real. Dicha herramienta trabaja utilizando sondas inteligentes del sistema que pueden acceder a áreas de más lento rendimiento o con cuellos de botella, estas sondas están dispersadas por todo el sistema, que ilumina cada rincón oscuro del sistema Solaris.

Además permite visualizar mejor la actividad del núcleo y de la aplicación. Y a la vez ofreciendo una visión operativa y una ganancia operativa no superada aún por otro sistema operativo.

Solaris Containers

Permite la creación de muchos ambientes privados de ejecución y una sola instancia de solaris. Cada ambiente tiene su propia identidad, independiente del hardware subyacente aunque se comporta como si se estuviera ejecutando en su propio sistema, permitiendo así que la consolidación sea un proceso sencillo, confiable y seguro. Y dado que los recursos del sistema están virtualizados, los administradores pueden incrementar la utilización del hardware, al tiempo que satisfacen los altos picos de demanda.

ZFS, Zettabyte File System

Es un nuevo sistema de archivos dinámico del sistema operativo Solaris. Ofrece una administración sencilla que automatiza y consolida complicados conceptos de almacenamiento y por otro lado protege todos los datos con sumas de 64 bits que detectan y corrigen el daño de datos silenciosos. Es el primer sistema de archivos de 128 bits, ofrece una capacidad de 16.000 millones de veces superior a la de los sistemas de 32 o 64 bits, virtualmente es el único sistema de archivos con capacidad de almacenamiento prácticamente ilimitada.

Process rights management

Solaris 10 ofrece una solución para el modelo de usuario "todo o nada" mediante la integración de mínimos privilegios de seguridad directamente dentro de la base del sistema operativo. Gracias a esta nueva función, Solaris se mantiene como el único sistema operativo UNIX que ofrece este modelo de seguridad completamente integrado dentro de sus componentes del núcleo del sistema operativo, cada aplicación Solaris tiene una lista cerrada de los privilegios específicos impuestos por el núcleo, en lugar de un solo privilegio de raíz todopoderoso.

Libre de virus por más de 20 años, Solaris incluye la tecnología del Trusted Solaris ampliamente utilizada por el gobierno de los Estados Unidos para garantizar la seguridad de sus sistemas.

Sun Update Connection

Utilizando Solaris 10 los usuarios disponen de un servicio de actualizaciones que les permitirá estar al día con las innovaciones y el entorno del nuevo ambiente operativo.

Compatibilidad garantizada

Se asegura las aplicaciones escritas en versiones previas de Solaris pueden correr en Solaris 10 extendiendo la cobertura de compatibilidad hasta la versión de Solaris 2.6 la cual es una garantía sin precedentes en más de 7 años de lanzamiento de sistemas operativos en la industria. Además es capaz de correr la mayoría de las aplicaciones para GNU/Linux de forma nativa.

edu.red

Portabilidad: El software conformado por una ABI aplicación de interfaces binaria (Application Binary Interface) ejecuta con un Shrink-wrapped (Contracción envuelta) el software en todos los sistemas vendidos con la misma arquitectura del microprocesador. Esto obliga a los desarrolladores de aplicaciones a reducir el costo del desarrollo del software y traer productos al mercado rápidamente, y obliga a los usuarios a actualizar el hardware mientras retienen sus aplicaciones de software y minimizan sus costos de conversión.

ESCALABILIDAD: Las aplicaciones se usan con más frecuencia en el sobre tiempo, y requiere sistemas más poderosos para soportarlos. Para operar en un ambiente creciente, el software debe ser capaz de ejecutar en un rango de ancho poderoso y debe ser capaz de tomar ventajas del poder adicional que se está procesando.

INTEROPERATIBIDAD: La computación del ambiente heterogéneo es una realidad hoy. Los usuarios compran de muchos vendedores para implementar la solución que necesitan. La estandarización y una clara interface son criterios para un ambiente heterogéneo, permitiendo a los usuarios desarrollar estrategias para comunicarse por medio de su red. El sistema operativo de Solaris puede interoperar con unos sistemas muy populares hoy en el mercado, y aplicaciones que se ejecutan en UNIX se pueden comunicar fácilmente.

COMPATIBILIDAD: La tecnología de la computación continúa avanzando rápidamente, pero necesita permanecer en el ámbito competitivo para minimizar sus costos y maximizar sus ingresos.

TAREA #22

  • Hacer un cuestionario sobre SOLARIS no menor a 20 preguntas.

Fundadores de SUN

SO Minix

Es un clon del sistema operativo Unix distribuido junto con su código fuente y desarrollado por el profesor Andrew S. Tanenbaum en 1987.

Fue creado para enseñar a sus alumnos el diseño de sistemas operativos en la Vrije Universiteit de Ámsterdam. La razón de su desarrollo fue porque Unix estaba bajo restricciones de licencia de AT&T, era demasiado complicado y corría sobre máquinas complejas; algo completamente antipedagógico.

Gracias a su reducido tamaño, diseño basado en el paradigma del micronúcleo, y su amplia documentación, resulta bastante apropiado para personas que desean instalar un sistema operativo compatible con Unix en su máquina personal así como aprender sobre su funcionamiento interno.

Minix fue desarrollado para correr sobre IBM PC con microprocesador Intel 8088 o superior, aunque se han creado conversiones para otros sistemas.

Debido al enfoque puramente educacional de MINIX, Tanenbaum no permitía que este fuera modificado demasiado ya que esto complicaría el sistema y no permitiría que sus estudiantes lo entendieran en un semestre. Por estos motivos, Linus Torvalds decidió escribir su propio núcleo de sistema operativo (Linux) compatible con Unix. En simbiosis con las herramientas de GNU surgió GNU/Linux, que ha ganado protagonismo en el campo de los Unix para ordenadores compatibles con el IBM PC, principalmente debido a que su licencia (GPL) permite la modificación del mismo. Actualmente Minix se distribuye con una licencia similar a la licencia BSD, lo que permite su modificación.

Para una persona poco familiarizada con los elementos internos de un sistema operativo, MINIX es una buena opción que le permite entender casi todos los elementos del sistema con solo algunos meses de uso y estudio.

Andrew S.Tanenbaum creó MINIX en la Universidad Libre de Ámsterdam para ejemplificar los principios recogidos en su libro de texto Operating Systems: Design and Implementation (1987). Una parte del código en C del núcleo, el controlador de memoria y el sistema de ficheros de MINIX 1.0 se recogen en este libro.

Junto con el libro también había disponible un disquete con el código fuente de MINIX y los binarios, junto con un manual de referencia del sistema.

Tanenbaum creó originalmente MINIX para que fuera compatible con las arquitecturas IBM PC e IBM PC/AT, que eran las comunes en esa época.

MINIX 1.5, publicado en 1991, incluía soporte para MicroChannel IBM PS/2 y también fue adaptado para las arquitecturas Motorola 68000 y SPARC, soportando Atari ST, Commodore Amiga, Apple Macintosh y plataformas Sun SPARCstation.

También existió una adaptación no oficial a las arquitecturas compatibles con Intel 80386 (en modo de 32 bits protegido), National Semiconductor NS32532, ARM y procesadores INMOS transputer. Meiko Scientific utilizó una primera versión de MINIX como base de su sistema operativo MeikOS. También existió una versión de MINIX que se ejecutaba como un proceso de usuario en el sistema operativo SunOS.

Al decrementarse la demanda de las computadoras de arquitectura de 68k, MINIX 2.0, publicado en 1997, sólo era compatible con las arquitecturas x86 y SPARC. Fue el tema para la segunda edición del libro de Tanenbaum, en esta ocasión co-escrito junto con Albert Woodhull, y fue distribuido en un CD-ROM incluido en el libro. MINIX 2.0 añadía compatibilidad con POSIX1, soporte para arquitecturas Intel 80386 y superiores de 32 bits y reemplazó los protocolos de red Amoeba incluidos en MINIX 1.5 por TCP/IP. También aparecieron adaptaciones no oficiales de MINIX 2.0 para las arquitecturas basadas en el 68020 ISICAD Prisma 7000 y las basadas en Hitachi SH3.

Minix-vmd es una variante de MINIX 2.0 para procesadores compatibles con Intel IA-32, que fue creada por dos investigadores de la Vrije Universiteit, la cual añadía memoria virtual y soporte para el sistema gráfico X Window System.

MINIX 3 fue públicamente anunciado el 24 de octubre de 2005 por Andrew Tanenbaum, durante su exposición en la conferencia de ACM en el Symposium on Operating System Principles. Aunque sigue manteniéndose como ejemplo para la nueva edición de su libro, está comprensiblemente rediseñado para ser "utilizado como un sistema serio en computadoras con recursos limitados y para aplicaciones que requieren de gran fiabilidad".

Actualmente MINIX 3 soporta sólo arquitecturas derivadas de IA-32, y está disponible en LiveCD, lo que permite ser utilizado sin necesidad de instalar el sistema operativo, y en versiones compatibles con sistemas de emulación o virtualización como BOCHS, Qemu, VMware y VirtualPC.

La versión 3.1.5 fue lanzada el 5 de noviembre de 2009, y contiene X11, emacs, vi, cc, gcc, perl, python, ash, bash, zsh, ftp, ssh, telnet, pine y cerca de 650 aplicaciones más, comunes a los sistemas Unix. Con la incorporación de X11, esta versión marca el punto de transición entre el modo texto y gráfico en este sistema operativo. Otra característica de esta versión, que será mejorada en un futuro, es la habilidad del sistema para mantenerse cuando el driver de algún componente deja de funcionar, y en algunos casos éstos son reemplazados automáticamente sin afectar a los procesos que se estén ejecutando. Siguiendo este camino, MINIX es self-healing, lo que lo hace ideal para sistemas que requieren alta fiabilidad.

Estructura de Minix

Para comprender mejor la estructura microkernel de MINIX se detallan a continuación las diferentes capas.

edu.red

Capa 1

Esta es la capa que interactúa directamente con el hardware. Es la encargada de atrapar todas las interrupciones y trampas, de planificar y ofrecer a las capas superiores un modelo de procesos independientes y secuenciales para comunicarse mediante el uso de mensajes. En resumen cuenta con dos partes bien definidas: la primera trata todo lo referente a la programación de bajo nivel para brindar la abstracción de procesos a las capas superiores. La segunda parte se gestiona los aspectos más mecánicos de los mensajes, como lo son los buffers de envío y recepción de mensajes que se alojan en la memoria física, las verificaciones de destinos y todo lo referente al manejo físico de memoria en lo que respecta a los mensajes. La primera capa es la que está escrita en lenguaje ensamblador. El resto de las capas ya está escrito en lenguaje C.

Capa 2

Contiene todo lo concerniente a los procesos de E/S, uno por cada tipo de dispositivos (tareas). Como se ilustra en el gráfico, tenemos tareas para discos, impresoras, relojes, interfaces de red y tareas de sistema, que si bien no son dispositivos de sistema sí tienen por finalidad el servicio de copiado entre diferentes regiones de memoria para procesos que no cuentan con los privilegios para realizarlos ellos mismos. Todas las tareas de la capa 2 y el código de la capa 1 se combinan para formar un solo programa binario llamado kernel, aunque a pesar de que son compilados juntos cuando el kernel y los manejadores de interrupciones se están ejecutando estos tienen mayores privilegios que las tareas. De este modo se logra que el kernel pueda ejecutar todo tipo de instrucciones usando datos de cualquier parte del sistema, a fin de poder acceder a cualquier parte de la memoria y cualquier registro de procesador. Sin embargo, las tareas a pesar de no contar con los privilegios a nivel de kernel sí pueden acceder a cualquier región de memoria que pertenezca a un proceso menos privilegiado con el objetivo de realizar E/S para ellos.

Capa 3

Aglutina los procesos conocidos como procesos servidores. Se ejecutan en un nivel menos privilegiado que el kernel o las tareas, y no acceden directamente a los puertos de entrada y sálida. Tampoco pueden acceder a otra región de memoria que no sea la que le fue asignada.

Para ello se vale de las llamadas al sistema (FORK, EXEC y BRK) las cuales son proporcionadas por el administrador de memoria (MM). El sistema de archivos (FS) realiza las llamadas al sistema para los archivos (READ, MOUNT y CHDIR). Cabe destacar que el sistema de archivos de MINIX está diseñado como "servidor de archivos" por lo que se podría mover a una máquina remota casi sin cambios. Otros servidores de esta capa son el servidor de reencarnación (RS), que permite reiniciar los drivers que se cierren por fallos u otras causas.

Capa 4

Finalmente aquí se alojan todos los procesos de usuario tales como shells, editores, compiladores, programas, etc.

TAREA #23

  • Hacer un cuestionario sobre MINIX no menor a 15 preguntas.

Video Minix

https://www.youtube.com/watch?v=sercr9PcJwQ

SO Linux

edu.red

Linux es un sistema operativo, compatible Unix. Dos características muy peculiares lo diferencian del resto de sistemas que podemos encontrar en el mercado, la primera, es que es libre, esto significa que no tenemos que pagar ningun tipo de licencia a ninguna casa desarrolladora de software por el uso del mismo, la segunda, es que el sistema viene acompañado del código fuente.

El sistema lo forman el núcleo del sistema (kernel) más un gran número de programas / bibliotecas que hacen posible su utilización. Muchos de estos programas y bibliotecas han sido posibles gracias al proyecto GNU, por esto mismo, muchos llaman a Linux, GNU/Linux, para resaltar que el sistema lo forman tanto el núcleo como gran parte del software producido por el proyecto GNU.

Linux se distribuye bajo la GNU General Public License por lo tanto, el código fuente tiene que estar siempre accesible y cualquier modificación ó trabajo derivado tiene que tener esta licencia.

El sistema ha sido diseñado y programado por multitud de programadores alrededor del mundo. El núcleo del sistema sigue en continuo desarrollo bajo la coordinación de Linus Torvalds, la persona de la que partió la idea de este proyecto, a principios de la década de los noventa. Hoy en día, grandes compañías, como IBM, SUN, HP, Novell y RedHat, entre otras muchas, aportan a Linux grandes ayudas tanto económicas como de código.

Día a día, más y más programas y aplicaciones están disponibles para este sistema, y la calidad de los mismos aumenta de versión a versión. La gran mayoría de los mismos vienen acompañados del código fuente y se distribuyen generalmente bajo los términos de licencia de la GNU General Public License.

Más y más casas de software comercial distribuyen sus productos para Linux y la presencia del mismo en empresas aumenta constantemente por la excelente relación calidad-precio que se consigue con Linux.

Las arquitecturas en las que en un principio se puede utilizar Linux son Intel 386-, 486-, Pentium, Pentium Pro, Pentium II/III/IV, IA-64, Amd 5×86, Amd64, Cyrix y Motorola 68020,IBM S/390, zSeries, DEC Alpha, ARM, MIPS, PowerPC, SPARC y UltraSPARC. Además no es difícil encontrar nuevos proyectos portando Linux a nuevas arquitecturas.

Linux hace su aparición a principios de la década de los noventa, era el año 1991 y por aquel entonces un estudiante de informática de la Universidad de Helsinki, llamado Linus Torvalds empezó, como una afición y sin poder imaginar a lo que llegaría este proyecto, a programar las primeras líneas de código de este sistema operativo al que llamaría más tarde Linux.

Este comienzo estuvo inspirado en MINIX, un pequeño sistema Unix desarrollado por Andy Tanenbaum. Las primeras discusiones sobre Linux fueron en el grupo de noticias comp.os.minix, en estas discusiones se hablaba sobre todo del desarrollo de un pequeño sistema Unix para usuarios de Minix que querían más.

El 3 de julio de 1991, Linus Torvalds mandó el primer mensaje sobre Linux al grupo de noticias

comp.os.minix:

Path: gmdzi!unido!mcsun!news.funet.fi!hydra!klaava!torvaldsFrom: torva…@klaava.Helsinki.FI (Linus Benedict Torvalds)Newsgroups: comp.os.minixSubject: Gcc-1.40 and a posix-questionKeywords: gcc, posixMessage-ID: Date: 3 Jul 91 10:00:50 GMTOrganization: University of HelsinkiLines: 28Hello netlanders,Due to a project I'm working on (in minix), I'm interested in the posixstandard definition. Could somebody please point me to a (preferably)machine-readable format of the latest posix rules? Ftp-sites would benice.As an aside for all using gcc on minix – the new version (1.40) has beenout for some weeks, and I decided to test what needed to be done to getit working on minix (1.37.1, which is the version you can get fromplains is nice, but 1.40 is better :-). To my surpice, the answerturned out to be – NOTHING! Gcc-1.40 compiles as-is on minix386 (withold gcc-1.37.1), with no need to change source files (I changed theMakefile and some paths, but that's it!). As default this results in acompiler that uses floating point insns, but if you'd rather not,changing 'toplev.c' to define DEFAULT_TARGET from 1 to 0 (this is frommemory – I'm not at my minix-box) will handle that too. Don't make thelibs, use the old gnulib&libc.a. I have successfully compiled 1.40 withitself, and everything works fine (I got the newest versions of gas andbinutils at the same time, as I've heard of bugs with older versions ofld.c). Makefile needs some chmem's (and gcc2minix if you're still usingit). Linus Torvalds torva…@kruuna.helsinki.fiPS. Could someone please try to finger me from overseas, as I'veinstalled a "changing .plan" (made by your's truly), and I'm not certainit works from outside? It should report a new .plan every time.

El 25 de agosto de 1991, mandó el siguiente mensaje, el cual es considerado por muchos como el comienzo del proyecto Linux:

Path: gmdzi!unido!fauern!ira.uka.de!sol.ctr.columbia.edu!zaphod.mps.ohio-state.edu!wupost!uunet!mcsun!news.funet.fi!hydra!klaava!torvaldsFrom: torva…@klaava.Helsinki.FI (Linus Benedict Torvalds)Newsgroups: comp.os.minixSubject: What would you like to see most in minix?Summary: small poll for my new operating systemKeywords: 386, preferencesMessage-ID: Date: 25 Aug 91 20:57:08 GMTOrganization: University of HelsinkiLines: 20Hello everybody out there using minix -I'm doing a (free) operating system (just a hobby, won't be big andprofessional like gnu) for 386(486) AT clones. This has been brewingsince april, and is starting to get ready. I'd like any feedback onthings people like/dislike in minix, as my OS resembles it somewhat(same physical layout of the file-system (due to practical reasons)among other things). I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get something practical within a few months, andI'd like to know what features most people would want. Any suggestionsare welcome, but I won't promise I'll implement them 🙂 Linus (torva…@kruuna.helsinki.fi)PS. Yes – it's free of any minix code, and it has a multi-threaded fs. It is NOT protable (uses 386 task switching etc), and it probably neverwill support anything other than AT-harddisks, as that's all I have :-(.

Linus nunca anuncio la versión 0.01 de Linux (agosto/septiembre 1991), esta versión no era ni siquiera ejecutable, solamente incluía los principios del núcleo del sistema, estaba escrita en lenguaje ensamblador y asumía que uno tenía acceso a un sistema Minix para su compilación.

El 5 de octubre de 1991, Linus anuncio la primera versión "Oficial" de Linux, -version 0.02.

Este fue el mensaje mandado a comp.os.minix:

Path: gmdzi!unido!mcsun!news.funet.fi!hydra!klaava!torvaldsFrom: torva…@klaava.Helsinki.FI (Linus Benedict Torvalds)Newsgroups: comp.os.minixSubject: Free minix-like kernel sources for 386-ATKeywords: 386, preliminary versionMessage-ID: Date: 5 Oct 91 05:41:06 GMTOrganization: University of HelsinkiLines: 55Do you pine for the nice days of minix-1.1, when men were men and wrotetheir own device drivers? Are you without a nice project and just dyingto cut your teeth on a OS you can try to modify for your needs? Are youfinding it frustrating when everything works on minix? No more all-nighters to get a nifty program working? Then this post might be justfor you :-)As I mentioned a month(?) ago, I'm working on a free version of aminix-lookalike for AT-386 computers. It has finally reached the stagewhere it's even usable (though may not be depending on what you want),and I am willing to put out the sources for wider distribution. It isjust version 0.02 (+1 (very small) patch already), but I've successfullyrun bash/gcc/gnu-make/gnu-sed/compress etc under it. Sources for this pet project of mine can be found at nic.funet.fi(128.214.6.100) in the directory /pub/OS/Linux. The directory alsocontains some README-file and a couple of binaries to work under linux(bash, update and gcc, what more can you ask for :-). Full kernelsource is provided, as no minix code has been used. Library sources areonly partially free, so that cannot be distributed currently. Thesystem is able to compile "as-is" and has been known to work. Heh. Sources to the binaries (bash and gcc) can be found at the same place in/pub/gnu. ALERT! WARNING! NOTE! These sources still need minix-386 to be compiled(and gcc-1.40, possibly 1.37.1, haven't tested), and you need minix toset it up if you want to run it, so it is not yet a standalone systemfor those of you without minix. I'm working on it. You also need to besomething of a hacker to set it up (?), so for those hoping for analternative to minix-386, please ignore me. It is currently meant forhackers interested in operating systems and 386's with access to minix.The system needs an AT-compatible harddisk (IDE is fine) and EGA/VGA. If you are still interested, please ftp the README/RELNOTES, and/or mail me for additional info.I can (well, almost) hear you asking yourselves "why?". Hurd will beout in a year (or two, or next month, who knows), and I've already gotminix. This is a program for hackers by a hacker. I've enjouyed doingit, and somebody might enjoy looking at it and even modifying it fortheir own needs. It is still small enough to understand, use andmodify, and I'm looking forward to any comments you might have. I'm also interested in hearing from anybody who has written any of theutilities/library functions for minix. If your efforts are freelydistributable (under copyright or even public domain), I'd like to hearfrom you, so I can add them to the system. I'm using Earl Chews estdioright now (thanks for a nice and working system Earl), and similar workswill be very wellcome. Your (C)'s will of course be left intact. Drop mea line if you are willing to let me use your code. LinusPS. to PHIL NELSON! I'm unable to get through to you, and keep getting"forward error – strawberry unknown domain" or something.

Después de la versión 0.03, Linus salto en la numeración hasta la 0.10, más y más programadores a lo largo y ancho de internet empezaron a trabajar en el proyecto y después de sucesivas revisiones, Linus incremento el número de versión hasta la 0.95 (Marzo 1992), la primera capaz de ejecutar el sistema X-windows. Más de un año después (diciembre 1993) el núcleo del sistema estaba en la versión 0.99 y la versión 1.0.0 no llego hasta el 14 de marzo de 1994.

El 9 de Mayo 1996, Tux fue propuesto como mascota oficial de Linux.

El 9 de junio de 1996 fue lanzada la serie 2.0.x, la 2.2.x no llegó hasta el 25 de enero de 1999 y la 2.4.x hasta el 4 de enero del 2001.

El 17 de diciembre del 2003 fue lanzada la serie actual del núcleo, la 2.6.x y el desarrollo de Linux sigue avanzando día a día con la meta de perfeccionar y mejorar el sistema.

En el siguiente gráfico vemos una ilustración de las diferentes variantes de Unix desde el lanzamiento de la primera en la década de los 70 y la posición de Linux en esta historia.

༯font>

edu.red

༯font>

༢>Características

Las características más importantes de GNU/LINUX:

  • Multitarea: La palabra multitarea describe la habilidad de ejecutar varios programas al mismo tiempo. LINUX utiliza la llamada multitarea preeventiva, la cual asegura que todos los programas que se están utilizando en un momento dado serán ejecutados, siendo el sistema operativo el encargado de ceder tiempo de microprocesador a cada programa.

  • Multiusuario: Muchos usuarios usando la misma maquina al mismo tiempo.

  • Multiplataforma: Las plataformas en las que en un principio se puede utilizar Linux son 386-, 486-. Pentium, Pentium Pro, Pentium II, Amiga y Atari, también existen versiones para su utilización en otras plataformas, como amd64, Alpha, ARM, MIPS, PowerPC y SPARC.

  • Multiprocesador: Soporte para sistemas con más de un procesador está disponible para Intel, AMD y SPARC.

  • Funciona en modo protegido 386.

  • Protección de la memoria entre procesos, de manera que uno de ellos no pueda colgar el sistema.

  • Carga de ejecutables por demanda: Linux sólo lee del disco aquellas partes de un programa que están siendo usadas actualmente.

  • Política de copia en escritura para la compartición de páginas entre ejecutables: esto significa que varios procesos pueden usar la misma zona de memoria para ejecutarse. Cuando alguno intenta escribir en esa memoria, la página (4Kb de memoria) se copia a otro lugar. Esta política de copia en escritura tiene dos beneficios: aumenta la velocidad y reduce el uso de memoria.

  • Memoria virtual usando paginación (sin intercambio de procesos completos) a disco: A una partición en el sistema de archivos, con la posibilidad de añadir más áreas de intercambio sobre la marcha.

  • La memoria se gestiona como un recurso unificado para los programas de usuario y para el caché de disco, de tal forma que toda la memoria libre puede ser usada para caché y ésta puede a su vez ser reducida cuando se ejecuten grandes programas.

  • Librerías compartidas de carga dinámica (DLL's) y librerías estáticas.

  • Se realizan volcados de estado (core dumps) para posibilitar los análisis post-mortem, permitiendo el uso de depuradores sobre los programas no sólo en ejecución sino también tras abortar éstos por cualquier motivo.

  • Compatible con POSIX, System V y BSD a nivel fuente.

  • Emulación de iBCS2( Intel Binary Compatible Standard) , casi completamente compatible con SCO, SVR3 y SVR4 a nivel binario.

  • Todo el código fuente está disponible, incluyendo el núcleo completo y todos los drivers, las herramientas de desarrollo y todos los programas de usuario; además todo ello se puede distribuir libremente. Hay algunos programas comerciales que están siendo ofrecidos para Linux actualmente sin código fuente, pero todo lo que ha sido gratuito sigue siendo gratuito.

  • Control de tareas POSIX.

  • Pseudo-terminales (pty's).

  • Emulación de 387 en el núcleo, de tal forma que los programas no tengan que hacer su propia emulación matemática. Cualquier máquina que ejecute Linux parecerá dotada de coprocesador matemático. Por supuesto, si el ordenador ya tiene una FPU (unidad de coma flotante), esta será usada en lugar de la emulación, pudiendo incluso compilar tu propio kernel sin la emulación matemática y conseguir un pequeño ahorro de memoria.

  • Soporte para muchos teclados nacionales o adaptados y es bastante fácil añadir nuevos dinámicamente.

  • Consolas virtuales múltiples: varias sesiones de login a través de la consola entre las que se puede cambiar con las combinaciones adecuadas de teclas (totalmente independiente del hardware de video). Se crean dinámicamente y puedes tener hasta 64.

  • Soporte para varios sistemas de archivo comunes, incluyendo minix-1, Xenix y todos los sistemas de archivo típicos de System V, y tiene un avanzado sistema de archivos propio con una capacidad de hasta 4 Tb y nombres de archivos de hasta 255 caracteres de longitud.

  • Acceso transparente a particiones MS-DOS mediante un sistema de archivos especial: no es necesario ningún comando especial para usar la partición MS-DOS, esta parece un sistema de archivos normal de Unix Las particiones comprimidas de MS-DOS 6 no son accesibles en este momento, y no se espera que lo sean en el futuro.

  • El soporte para VFAT, FAT32 (WNT, Windows 95/98) se encuentra soportado desde la versión 2.0 del núcleo y el NTFS de WNT desde la versión 2.2 (Este último solo en modo lectura).

  • Soporte en sólo lectura de HPFS-2 del OS/2 2.1

  • Sistema de archivos de CD-ROM que lee todos los formatos estándar de CD-ROM.

  • TCP/IP, incluyendo ssh, ftp, telnet, NFS, etc.

  • Appletalk.

  • Software cliente y servidor Netware.

  • Lan Manager / Windows Native (SMB), software cliente y servidor.

  • Diversos protocolos de red incluidos en el kernel: TCP, IPv4, IPv6, AX.25, X.25, IPX, DDP, Netrom, etc.

TAREA #24

  • 1. Hacer un cuestionario sobre GNU LINUX no menor a 25 preguntas.

Documental Linux:

NUCLEO LINUX.

Linux es un núcleo libre de sistema operativo basado en Unix.

Es uno de los principales ejemplos de software libre y de código abierto.

Linux está licenciado bajo la GPL v2 y está desarrollado por colaboradores de todo el mundo.

El desarrollo del día a día tiene lugar en la Linux Kernel Mailing List Archive.

Normalmente Linux se utiliza junto a un empaquetado de software, llamado distribución Linux y servidores.

Arquitecturas

Actualmente Linux es un núcleo monolítico híbrido. Los controladores de dispositivos y las extensiones del núcleo normalmente se ejecutan en un espacio privilegiado conocido como anillo 0 (ring 0), con acceso irrestricto al hardware, aunque algunos se ejecutan en espacio de usuario. A diferencia de los núcleos monolíticos tradicionales, los controladores de dispositivos y las extensiones al núcleo se pueden cargar y descargar fácilmente como módulos, mientras el sistema continúa funcionando sin interrupciones. También, a diferencia de los núcleos monolíticos tradicionales, los controladores pueden ser prevolcados (detenidos momentáneamente por actividades más importantes) bajo ciertas condiciones. Esta habilidad fue agregada para gestionar correctamente interrupciones de hardware, y para mejorar el soporte de multiprocesamiento simétrico.

El hecho de que Linux no fuera desarrollado siguiendo el diseño de un micronúcleo (diseño que, en aquella época, era considerado el más apropiado para un núcleo por muchos teóricos informáticos) fue asunto de una famosa y acalorada discusión entre Linus Torvalds y Andrew S. Tanenbaum.

Jerarquía de directorios

En Linux existe un sistema de archivos que carga y contiene todos los directorios, redes, programas, particiones, dispositivos, etc. que el sistema sabe reconocer, o por lo menos, identificar. Este sistema de ficheros y directorios, tiene como base al carácter (/); ese mismo carácter sirve también para demarcar los directorios, como por ejemplo: "/home/ernestopineda/imagen.jpg". El directorio especificado por una ruta consistente sólo por este carácter contiene toda la jerarquía de los directorios que constituyen todo el sistema. A este directorio suele llamárselo directorio raíz.

En Linux, a los discos no se les asigna una letra como en Windows (p.e. "C:"), sino que se les asigna un directorio de la jerarquía del directorio raíz (/), como por ejemplo: "/media/floppy".

Es práctica común en el sistema de ficheros de Linux, utilizar varias sub-jerarquías de directorios, según las diferentes funciones y estilos de utilización de los archivos.

Estos directorios pueden clasificarse en:

  • Estáticos: Contiene archivos que no cambian sin la intervención del administrador (root), sin embargo, pueden ser leídos por cualquier otro usuario. (/bin, /sbin, /opt, /boot, /usr/bin…)

  • Dinámicos: Contiene archivos que son cambiantes, y pueden leerse y escribirse (algunos solo por su respectivo usuario y el root). Contienen configuraciones, documentos, etc. Para estos directorios, es recomendable una copia de seguridad con frecuencia, o mejor aún, deberían ser montados en una partición aparte en el mismo disco, como por ejemplo, montar el directorio /home en otra partición del mismo disco, independiente de la partición principal del sistema; de esta forma, puede repararse el sistema sin afectar o borrar los documentos de los usuarios. (/var/mail, /var/spool, /var/run, /var/lock, /home…)

  • Compartidos: Contiene archivos que se pueden encontrar en un ordenador y utilizarse en otro, o incluso compartirse entre usuarios.

  • Restringidos: Contiene ficheros que no se pueden compartir, solo son modificables por el administrador. (/etc, /boot, /var/run, /var/lock…)

Kernel panic

edu.red

Kernel panic.

En Linux, un panic es un error casi siempre insalvable del sistema detectado por el núcleo en oposición a los errores similares detectados en el código del espacio de usuario. Es posible para el código del núcleo indicar estas condiciones mediante una llamada a la función de pánico situada en el archivo header sys/system.h.

Sin embargo, la mayoría de las alertas son el resultado de excepciones en el código del núcleo que el procesador no puede manejar, como referencias a direcciones de memorias inválidas.

Generalmente esto es indicador de la existencia de un bug en algún lugar de la cadena de alerta. También pueden indicar un fallo en el hardware como un fallo de la RAM o errores en las funciones aritméticas en el procesador, o por un error en el software. En muchas ocasiones es posible reiniciar o apagar adecuadamente el núcleo mediante una combinación de teclas como ALT+SysRq+REISUB.

Lenguajes de programación

Linux está escrito en el lenguaje de programación C, en la variante utilizada por el compilador GCC (que ha introducido un número de extensiones y cambios al C estándar), junto a unas pequeñas secciones de código escritas con el lenguaje ensamblador. Por el uso de sus extensiones al lenguaje, GCC fue durante mucho tiempo el único compilador capaz de construir correctamente Linux. Sin embargo, Intel afirmó haber modificado su compilador C de forma que permitiera compilarlo correctamente.

Asimismo se usan muchos otros lenguajes en alguna forma, básicamente en la conexión con el proceso de construcción del núcleo (el método a través del cual las imágenes arrancables son creadas desde el código fuente). Estos incluyen a Perl, Python y varios lenguajes shell scripting. Algunos drivers también pueden ser escritos en C++, Fortran, u otros lenguajes, pero esto no es aconsejable. El sistema de construcción de Linux oficialmente solo soporta GCC como núcleo y compilador de controlador.

Portabilidad

edu.red

Ipod ejecutando un núcleo Linux.

Aún cuando Linus Torvalds no ideó originalmente Linux como un núcleo portable, ha evolucionado en esa dirección. Linux es ahora de hecho, uno de los núcleos más ampliamente portados, y funciona en sistemas muy diversos que van desde iPAQ (una handheld) hasta un zSeries (un mainframe masivo). Está planeado que Linux sea el sistema operativo principal de las nuevas supercomputadoras de IBM, Blue Gene cuando su desarrollo se complete.

De todos modos, es importante notar que los esfuerzos de Torvalds también estaban dirigidos a un tipo diferente de portabilidad.

Según su punto de vista, la portabilidad es la habilidad de compilar fácilmente en un sistema aplicaciones de los orígenes más diversos; así, la popularidad original de Linux se debió en parte al poco esfuerzo necesario para tener funcionando las aplicaciones favoritas de todos, ya sean GPL o de Código abierto.

Las arquitecturas principales soportadas por Linux son DEC Alpha, ARM, AVR32, Blackfin, ETRAX CRIS, FR-V, H8, IA64, M32R, m68k, MicroBlaze, MIPS, MN10300, PA-RISC, PowerPC, System/390, SuperH, SPARC, x86, x86 64 y Xtensa

Arquitectura de máquina virtual

El núcleo Linux puede correr sobre muchas arquitecturas de máquina virtual, tanto como host del sistema operativo o como cliente.

La máquina virtual usualmente emula la familia de procesadores Intel x86, aunque en algunos casos también son emulados procesadores de PowerPC o ARM.

Formatos binarios soportados

Linux 1.0 admitía sólo el formato binario a.out. La siguiente serie estable (Linux 1.2) agregó la utilización del formato ELF, el cual simplifica la creación de bibliotecas compartidas (usadas de forma extensa por los actuales ambientes de escritorio como GNOME y KDE). ELF es el formato usado de forma predeterminada por el GCC desde alrededor de la versión 2.6.0. El formato a.out actualmente no es usado, convirtiendo a ELF en el formato binario utilizado por Linux en la actualidad.

Linux tiene la capacidad de permitir al usuario añadir el manejo de otros formatos binarios. También binfmt_misc permite correr el programa asociado a un archivo de datos.

Versiones

Más allá de haber desarrollado su propio código y de integrar los cambios realizados por otros programas, Linus Torvalds continua lanzando nuevas versiones del núcleo Linux. Estos son llamados núcleos "vanilla", lo que significa que no han sido modificados por nadie.

Numeración

La versión del núcleo Linux original constaba de cuatro números. Por ejemplo, asumamos que el número de la versión está compuesta de esta forma: A.B.C[.D] (ej.: 2.2.1, 2.4.13 ó 2.6.12.3).

  • El número A denota la versión del núcleo. Es el que cambia con menor frecuencia y solo lo hace cuando se produce un gran cambio en el código o en el concepto del núcleo. Históricamente sólo ha sido modificado tres veces: en 1994 (versión 1.0), en 1996 (versión 2.0) y en 2011 (versión 3.0).

  • El número B denota la subversión del núcleo.

Antes de la serie de Linux 2.6.x, los números pares indicaban la versión "estable" lanzada. Por ejemplo una para uso de fabricación, como el 1.2, 2.4 ó 2.6. Los números impares, en cambio, como la serie 2.5.x, son versiones de desarrollo, es decir que no son consideradas de producción.

Comenzando con la serie Linux 2.6.x, no hay gran diferencia entre los números pares o impares con respecto a las nuevas herramientas desarrolladas en la misma serie del núcleo. Linus Torvalds dictaminó que este será el modelo en el futuro.

  • El número C indica una revisión mayor en el núcleo. En la forma anterior de versiones con tres números, esto fue cambiado cuando se implementaron en el núcleo los parches de seguridad, bugfixes, nuevas características o drivers. Con la nueva política, solo es cambiado cuando se introducen nuevos drivers o características; cambios menores se reflejan en el número D.

  • El número D se produjo cuando un grave error, que requiere de un arreglo inmediato, se encontró en el código NFS de la versión 2.6.8. Sin embargo, no había otros cambios como para lanzar una nueva revisión (la cual hubiera sido 2.6.9). Entonces se lanzó la versión 2.6.8.1, con el error arreglado como único cambio. Con 2.6.11, esto fue adoptado como la nueva política de versiones. Bug-fixes y parches de seguridad son actualmente manejados por el cuarto número dejando los cambios mayores para el número C.

También, algunas veces luego de las versiones puede haber algunas letras como "rc1" o "mm2". El "rc" se refiere a release candidate e indica un lanzamiento no oficial. Otras letras usualmente (pero no siempre) hacen referencia a las iniciales de la persona. Esto indica una bifurcación en el desarrollo del núcleo realizado por esa persona, por ejemplo ck se refiere a Con Kolivas, ac a Alan Cox, mientras que mm se refiere a Andrew Morton.

El modelo de desarrollo para Linux 2.6 fue un cambio significativo desde el modelo de desarrollo de Linux 2.5. Previamente existía una rama estable (2.4) donde se habían producido cambios menores y seguros, y una rama inestable (2.5) donde estaban permitidos cambios mayores. Esto significó que los usuarios siempre tenían una versión 2.4 a prueba de fallos y con lo último en seguridad y casi libre de errores, aunque tuvieran que esperar por las características de la rama 2.5. La rama 2.5 fue eventualmente declarada estable y renombrada como 2.6. Pero en vez de abrir una rama 2.7 inestable, los desarrolladores de núcleos eligieron continuar agregando los cambios en la rama "estable" 2.6. De esta forma no había que seguir manteniendo una rama vieja pero estable y se podía hacer que las nuevas características estuvieran rápidamente disponibles y se pudieran realizar más pruebas con el último código.

Sin embargo, el modelo de desarrollo del nuevo 2.6 también significó que no había una rama estable para aquellos que esperaban seguridad y bug fixes sin necesitar las últimas características. Los arreglos solo estaban en la última versión, así que si un usuario quería una versión con todos los bug fixed conocidos también tendría las últimas características, las cuales no habían sido bien probadas.

Una solución parcial para esto fue la versión ya mencionada de cuatro números (y en 2.6.x.y), la cual significaba lanzamientos puntuales creados por el equipo estable (Greg Kroah-Hartman, Chris Wright, y quizás otros). El equipo estable solo lanzaba actualizaciones para el núcleo más reciente, sin embargo esto no solucionó el problema del faltante de una serie estable de núcleo. Distribuidores de Linux, como Red Hat y Debian, mantienen los núcleos que salen con sus lanzamientos, de forma que una solución para algunas personas es seguir el núcleo de una distribución.

Como respuesta a la falta de un núcleo estable y de gente que coordinara la colección de corrección de errores, en diciembre de 2005 Adrian Bunk anunció que continuaría lanzando núcleos 2.6.16 aun cuando el equipo estable lanzara 2.6.17. Además pensó en incluir actualizaciones de controladores, haciendo que el mantenimiento de la serie 2.6.16 sea muy parecido a las viejas reglas de mantenimiento para las serie estables como 2.4. El núcleo 2.6.16 será reemplazado próximamente por el 2.6.27 como núcleo estable en mantenimiento durante varios años.

Dado el nuevo modelo de desarrollo, que mantiene fija la subversión de 2.6, tras durante el Linux Kernel Summit de ese año, Linus Torvalds decidió modificar el sistema de numeración, sustituyendo los dos primeros números por una única cifra, de forma que Linux 2.6.39 fue seguida por Linux 3.0?

Fechas de publicación

edu.red

Línea de tiempo del Linux

edu.red

Distribuciones

edu.red

Sharp Zaurus, un computador de bolsillo con Linux.

Una distribución Linux es un conjunto de software acompañado del núcleo Linux que se enfoca a satisfacer las necesidades de un grupo específico de usuarios. De este modo hay distribuciones para hogares, empresas y servidores.

Las distribuciones son ensambladas por individuos, empresas u otros organismos. Cada distribución puede incluir cualquier número de software adicional, incluyendo software que facilite la instalación del sistema. La base del software incluido con cada distribución incluye el núcleo Linux, en la mayoría de los casos las herramientas GNU, al que suelen añadirse también multitud de paquetes de software.

Las herramientas que suelen incluirse en la distribución de este sistema operativo se obtienen de diversas fuentes, y en especial de proyectos de software libre, como: GNU, GNOME (creado por GNU) y KDE. También se incluyen utilidades de otros proyectos como Mozilla, Perl, Ruby, Python, PostgreSQL, MySQL, Xorg, casi todas con licencia GPL o compatibles con ésta (LGPL, MPL).

Usualmente se utiliza la plataforma X.Org Server, basada en la antigua XFree86, para sostener la interfaz gráfica.

Copyright

Inicialmente, Torvalds distribuyó Linux bajo los términos de una licencia que prohibía la explotación comercial. Pero esta licencia fue reemplazada, poco tiempo después, por la GNU GPL (versión 2 exclusivamente). Los términos de esta última licencia permiten la distribución y venta de copias o incluso modificaciones, pero requiere que todas las copias del trabajo original y trabajos de autoría derivados del original sean publicados bajo los mismos términos, y que el código fuente siempre pueda obtenerse por el mismo medio que el programa licenciado.

Torvalds se ha referido a haber licenciado Linux bajo la GPL como "la mejor cosa que he hecho" (en inglés, "the best thing I ever did").

Sin embargo, la versión oficial del núcleo Linux contiene firmware de código cerrado por ello, el Proyecto Linux-libre, auspiciado por la FSFLA, publica y mantiene versiones modificadas del núcleo Linux a las que se les ha quitado todo el software no libre.

Marca

A día de hoy, Linux es una marca registrada de Linus Torvalds en los Estados Unidos.

Hasta 1994 nadie registró la marca Linux en Estados Unidos. El 15 de agosto de 1994 cuando William R. Della Croce, Jr. registró la marca Linux, pidió el pago de regalías a los distribuidores de Linux. En 1996, Torvalds y algunas organizaciones afectadas denunciaron a Della Croce y en 1997 el caso se cerró y la marca fue asignada a Torvalds.

Desde entonces, el Linux Mark Institute gestiona la marca. En 2005 el LMI envió algunas cartas a empresas distribuidoras de Linux exigiendo el pago de una cuota por el uso comercial del nombre. Esto es así porque la legislación estadounidense exige que el dueño de una marca la defienda, por lo que se tuvo que pedir dinero por usar la marca Linux, algunas compañías de forma totalmente voluntaria han cumplido con dicha exigencia, a sabiendas de que dicho dinero se iba a usar para caridad o defender la marca Linux.

Críticas

Soporte de hardware

El núcleo Linux ha sido criticado con frecuencia por falta de controladores para cierto hardware de computadoras de escritorio. Sin embargo, el progresivo incremento en la adopción de Linux en el escritorio ha mejorado el soporte de hardware por parte de terceros o de los propios fabricantes, provocando que, en los últimos años, los problemas de compatibilidad se reduzcan.

Empresas como IBM, Intel Corporation, Hewlett-Packard, Dell o MIPS Technologies tienen programadores en el equipo de desarrolladores del núcleo Linux que se encargan de mantener los controladores para el hardware que fabrican. Este grupo de programadores también se le suman los que provee grandes distribuidores de soluciones Linux como Novell o Red Hat.

Arquitectura monolítica

Andy Tanenbaum escribió el 29 de enero de 1992:

…Linux es un sistema monolítico. Esto es retroceder un paso gigante hacia la década de 1970. Es como tomar un programa existente escrito en C y reescribirlo en BASIC. Para mí, escribir un sistema monolítico en 1991 es verdaderamente una idea pobre.

TAREA #25

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

Macintosh OS

edu.red

El sistema operativo constituye la interfaz entre las aplicaciones y el hardware del Macintosh. El administrador de memoria obtiene y libera memoria en forma automática para las aplicaciones y el sistema operativo. Esta memoria se encuentra normalmente en un área llamada cúmulo. El código de procedimientos de una aplicación también ocupa espacio en el cúmulo. Ahora se presenta una lista de los principales componentes del sistema operativo.

  • El cargador de segmentos carga los programas por ejecutar. Una aplicación se puede cargar completa o bien puede dividirse en segundos individuales que se pueden cargar de manera dinámica conforme se necesiten.

  • El administrador de eventos del sistema operativo informa de la ocurrencia de diversos eventos de bajo nivel, como la presión de un botón del Mouse o el tecleo. En condiciones normales, el administrador de eventos de la caja de herramientas transfiere estos eventos a las aplicaciones.

  • El administrador de archivos se encarga de la entrada / salida de archivos; el administrador de dispositivos se encarga de la entrada / salida de dispositivos.

  • Los manejadores de dispositivos son programas con los cuales los diversos tipos de dispositivos pueden presentar interfaces uniformes de entrada / salida a las aplicaciones. Tres manejadores de dispositivo están integrados al sistema operativo en ROM: el manejador de disco se encarga del acceso a la información en discos, el manejador de sonido controla los generadores de sonido, y el manejador en serie envía y recibe datos a través de los puertos seriales (estableciendo así la comunicación con dispositivos periféricos en serie como impresoras y módems).

  • Con el manejador de impresoras las aplicaciones pueden imprimir datos en diversas impresoras.

  • Con el administrador de AppleTalk las aplicaciones pueden transmitir y recibir información en una red de comunicaciones AppleTalk.

  • El Administrador de re trazado vertical programa las actividades por realizar durante las interrupciones de re trazado vertical que ocurren 60 veces cada segundo cuando se refresca la pantalla de vídeo.

  • El manejador de errores del sistema toma el control cuando ocurre un error fatal del sistema y exhibe un cuadro de error apropiado.

  • Los programas de utilidad general del sistema operativo ofrecen diversas funciones útiles como la obtención de la fecha y la hora, la comparación de cadenas de caracteres y muchas más.

  • El paquete de iniciación es llamado por el paquete de archivos estándar para iniciar y nombrar discos; se aplica con más frecuencia cuando el usuario inserta un disco al que no se le han asignado valores iniciales.

  • El paquete de aritmética de punto flotante ofrece aritmética de doble precisión. El paquete de funciones trascendentales ofrece un generador de números aleatorios, así como funciones trigonométricas, logarítmicas, exponenciales y financieras. Los compiladores de Macintosh generan en forma automática llamadas a estos paquetes para realizar manipulaciones numéricas.

Mac OS es conocido por haber sido uno de los primeros sistemas dirigidos al gran público en contar con una interfaz gráfica compuesta por la interacción del mouse con ventanas, Icono y menús, en favor de que la máquina resultara más agradable al usuario, diferenciándolo de otros sistemas contemporáneos, como MS-DOS, que eran un desafío técnico. El equipo de desarrollo del Mac OS original incluía a Bill Atkinson, Jef Raskin y Andy Hertzfeld.

Esta fue la base del Mac OS clásico, desarrollado íntegramente por Apple, cuya primera versión vio la luz en 1985. Su desarrollo se extendería hasta la versión 9 del sistema, lanzada en 1999. A partir de la versión 10 (Mac OS X), el sistema cambio su arquitectura totalmente y pasó a basarse en Unix, sin embargo su interfaz gráfica mantiene muchos elementos de las versiones anteriores, hay una gran variedad de versiones sobre cómo fue desarrollado el Mac OS original y dónde se originaron las ideas subyacentes. Pese a esto documentos históricos prueban la existencia entre el proyecto Macintosh y el proyecto Alto de Xerox PARC.

Las contribuciones iniciales del Sketchpad de Ivan Sutherland y el On-Line System de Doug Engelbart también fueron significativas.

Antes de la introducción de los últimos sistemas basados en el microprocesador PowerPC G3, partes significativas del sistema se almacenaban en la memoria física de sólo lectura de la placa base. El propósito inicial de esto fue evitar el uso de la capacidad de almacenamiento limitada de los disquetes de apoyo al sistema, dado que en los primeros computadores Macintosh no tenían disco duro.

Sólo el modelo Macintosh Classic de 1991, podía ser iniciado desde la memoria ROM. Esta arquitectura también permitió una interfaz de sistema operativo totalmente gráfica en el nivel más bajo, sin la necesidad de una consola de sólo texto o el modo de comandos de línea.

Los errores en tiempo de arranque, como la búsqueda de unidades de disco que no funcionaban, se comunicaron al usuario de manera gráfica, generalmente con un icono o con mensajes con el tipo de letra Chicago y un Timbre de la muerte o una serie de pitidos. Esto contrastaba con los PCs de la época, que mostraban tales mensajes con un tipo de letra mono-espaciada sobre un fondo negro, y que requerían el uso del teclado y no de un ratón, para la entrada.

Para proporcionar tales detalles en un nivel bajo, el Mac OS dependía de software de la base del sistema grabado en la ROM de la placa base, lo que más tarde ayudó a garantizar que sólo los computadores de Apple o los clones bajo licencia (con el contenido de la memoria ROM protegido por derechos de autor de Apple, pudieran ejecutar el Mac OS.

El Mac OS puede ser dividido en dos familias:

  • La familia Mac OS Classic, basada en el código propio de Apple Computer.

  • El Sistema Operativo Mac OS X, desarrollado a partir de la familia Mac OS Classic y NeXTSTEP, el cual estaba basado en UNIX.

"Classic" Mac OS (1984-2001)

El "Mac OS clásico" se caracteriza por su falta total de una línea de comandos; es un Sistema Operativo completamente gráfico. Destaca por su facilidad de uso y su multitarea cooperativa, pero fue criticado por su gestión de memoria muy limitada, la falta de memoria protegida y la susceptibilidad a los conflictos entre las "extensiones" del sistema operativo que proporcionan funcionalidades adicionales (tales como la creación de redes) o el apoyo a un determinado dispositivo. Algunas extensiones pueden no funcionar correctamente en conjunto, o sólo funcionan cuando se cargan en un orden determinado. La solución de problemas de extensiones de Mac OS podría ser un largo proceso de ensayo y error.

El Macintosh original utilizaba el Macintosh File System (MFS), un sistema de archivos plano con un solo nivel de carpetas o directorios. Este sistema fue rápidamente reemplazado en 1985 por el HFS, que tenía un verdadero sistema de árbol de directorio. Ambos sistemas de archivos son compatibles.

La mayoría de los sistemas de archivos utilizados con el DOS, Unix u otros sistemas operativos tratan a un archivo como una simple secuencia de bytes, lo que requiere una aplicación para saber qué bytes representan cual tipo de información. Por el contrario, MFS y HFS dan a los archivos dos bifurcaciones. La bifurcación de datos contiene el mismo tipo de información como otros sistemas de archivos, tales como el texto de un documento o los mapas de bits de un archivo de imagen. La bifurcación de recursos contiene otros datos estructurados, tales como las definiciones de menús, gráficos, sonidos o segmentos de código. Un archivo puede consistir sólo de los recursos con de datos vacía, o sólo una bifurcación de datos, sin bifurcación de recursos. Un archivo de texto puede contener su texto en la bifurcación de datos y la información de estilo en la bifurcación de recursos, de modo que una aplicación, que no reconoce la información de estilo, todavía puede leer el texto sin formato.

Por otro lado, estas una bifurcaciones proporcionan un reto para la interoperabilidad con otros sistemas operativos; el copiado de un archivo desde un sistema Mac a otro diferente, lo despoja de su bifurcación de recursos, requiriendo de sistemas de codificación tales como BinHex y MacBinary.

Las versiones para la plataforma PowerPC de Mac OS X hasta, e incluyendo, Mac OS X v10.4 Tiger no poseen una capa de compatibilidad para ejecutar las aplicaciones más antiguas de Mac, llamada el entorno Classic.

Este entorno ejecuta una copia completa del Mac OS, versión 9.1 o posterior, en un proceso de Mac OS X. Los MacIntosh basados en la plataforma PowerPC tenían el Mac OS 9.2 preinstalado así como el Mac OS X. El Mac OS 9.2 tuvo que ser instalado por el usuario, puesto que no se instalaba, por defecto, en las revisiones de hardware presentadas tras el lanzamiento de Mac OS X 10.4 Tiger. La mayoría de las aplicaciones "clásicas" bien escritas funciona correctamente en este entorno, pero la compatibilidad sólo se asegura si el software fue escrito sin tener en cuenta el hardware actual, y para interactuar únicamente con el sistema operativo. El Entorno Classic no está disponible en sistemas Macintosh basados en plataformas de Intel, debido a la incompatibilidad del Mac OS 9 con el hardware x86.

Los usuarios del Mac OS Classic en general, actualizaron sus máquinas a Mac OS X, pero muchos criticaron a este último por ser más difícil y menos amigable con el usuario que el original sistema operativo Mac, por la falta de ciertas características que no habían sido re-implementadas en el nuevo sistema operativo, o por ser más lento en el mismo hardware (especialmente el más antiguo) u otros, o incompatibilidades, a veces graves con el antiguo sistema operativo. Debido a que los controladores (para impresoras, escáneres, tabletas, etc), escritos para los antiguos Mac OS no son compatibles con Mac OS X, y debido a la falta de soporte para Mac OS X para máquinas más antiguas de Apple, un número significativo de usuarios de Macintosh sigue utilizando el antiguo Mac OS Clásico. Pero para el año 2005, se había informado que casi todos los usuarios de sistemas capaces de ejecutar Mac OS X lo están haciendo, con sólo una pequeña fracción ejecutando el Mac OS Classic.

En junio de 2005, Steve Jobs anunció en la apertura de la Conferencia Mundial de Desarrolladores de Apple que la empresa haría la transición de la plataforma PowerPC a procesadores Intel y por lo tanto dejaría de lado la compatibilidad de las nuevas máquinas para Mac OS Classic. En la misma conferencia, Jobs anunció kits de transición para desarrolladores que incluían versiones beta del software de Apple, incluyendo Mac OS X que los desarrolladores podían utilizar para probar sus aplicaciones, mientras las transportaban para ejecutarlas en computadores Mac con procesadores Intel.

En enero de 2006, Apple lanzó las primeras computadoras Macintosh con procesadores Intel, un iMac y el MacBook Pro, y al mes siguiente, Apple lanzó un mini Mac con un procesador Intel Core Solo y Duo. El 16 de mayo de 2006, Apple lanzó el MacBook, antes de completar la transición a Intel el 7 de agosto con el Mac Pro. Para facilitar la transición para los primeros compradores de las nuevas máquinas, los equipos Mac basados en Intel incluyen una tecnología de emulación llamada Rosetta, que les permite ejecutar software de Mac OS X que fue compilado para sistemas Macintosh basados en PowerPC. Rosetta se ejecuta de forma transparente, creando una experiencia de usuario idéntica a la de ejecutar el software en una máquina PowerPC, aunque la ejecución es más lento que con código nativo

Mac OS X

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