Download Descripción de la arquitectura [editar]
Document related concepts
Transcript
x86 es la denominación genérica dada a ciertos microprocesadores de la familia Intel, sus compatibles y la arquitectura básica a la que estos procesadores pertenecen, por la terminación de sus nombres numéricos: 8086, 80286, 80386, 80486, etc. Son comúnmente conocidos por versiones abreviadas de sus nombres, como 286 ó i286, 386 ó i386, 486 ó i486, e incluso 086, por i8086 o i8088 (su respectiva versión de 8 bits). A partir del i486, sus sucesores serán conocidos por los nombres no numéricos referentes a la marca, logotipo o nombre clave con los que fueron lanzados al mercado, y se les comercializó (a menudo seguido de su frecuencia, en megahertzios, de ciclos de reloj), como los Pentium (y Pentium MMX), o los K5, para el 80586 (ó i586), en sus respectivas versiones de Intel y AMD; los Pentium Pro, Pentium II, Pentium III y K6, así como los 6x86, de Cyrix, para el 80686 (ó i686); ó los Pentium 4, Pentium D y K7 (Athlon, Athlon XP, Duron y Sempron), para los 80686 de séptima generación. Con la octava generación de procesadores compatibles x86, los x86-64, que utilizan arquitectura y bus de 64 bits, con posibilidad de múltiples núcleos, introducida por AMD y clonada por Intel, se introducen por primera vez nuevas variantes y formas, en lo que a la denominación y clasificación del procesador se refiere, tales como el nombre comercial ó tecnología del modelo, la compañía fabricante, su número de serie, la cantidad de bits a la que puede trabajar o la cantidad de núcleos por los que está compuesto, por ejemplo: Intel Core 2 Duo E2180, o lo que es lo mismo, i686 ó Intel Pentium de doble núcleo E2180, de 64 bits y de 1,6 a 2,0 Ghz; ó AMD Athlon 64 X2, es decir, un AMD 64 bits, Athlon X de doble núcleo a 2 Ghz; todos ellos englobados bajo el denominador común x86-64, y compatibles con subarquitecturas anteriores de 32, 16 y 8 bits, de la familia de procesadores x86 de Intel, y compatibles. La comercial popularidad de esta arquitectura hizo que muchos fabricantes, además de Intel, empezaran a fabricar en masa microprocesadores basados en esta arquitectura. Estas compañías son entre otras AMD, Cyrix, NEC Corporation y Transmeta. La arquitectura es notablemente no limpia, por mantener compatibilidad con la línea de procesadores de 16 bits de Intel, que a su vez también eran compatibles con una familia de procesadores de 8 bits. Existen dos sucesores de 64 bits para esta arquitectura: IA64, empleada en los procesadores Itanium de Intel y no compatible con X86, excepto bajo emulación. AMD64 o x86-64, de AMD, que es básicamente una extensión de 64 bits de la familia x86. Técnicamente, la arquitectura es denominada IA32 (Intel Architecture 32 bits). Está basada en un modelo de arquitectura CISC (del inglés Complex Instruction Set Computing). Intel Itanium, antes conocida como IA-64 (Intel Architecture-64), es una arquitectura de 64 bits desarrollada por Intel en cooperación con Hewlett-Packard para su línea de procesadores Itanium e Itanium 2. Usa direcciones de memoria de 64 bits y está basada en el modelo EPIC[1] (Explicitly Parallel Instruction Computing, procesamiento de instrucciones explícitamente en paralelo). Los procesadores Intel Itanium 2 representan el diseño de producto más complejo del mundo con más de 1.700 millones de transistores. Esto permite obtener sólidas capacidades de virtualización, mejorar la confiabilidad y niveles de rendimiento líderes del mercado. A diferencia de productos de los pocos fabricantes* de procesadores RISC que siguen operando, la serie de procesadores Intel Itanium 2 ofrece libertad al usuario final a través de una amplia gama de opciones de software con más de 8.000 aplicaciones en producción. Los servidores y sistemas de cómputo de alto desempeño basados en el procesador Itanium ofrecen soporte de misión crítica para Windows, Linux, Unix y otros sistemas operativos. Los últimos pentiums, son en realidad máquinas RISC que emulan a una máquina CISC por temas de retrocompatibilidad. x86-64 es una arquitectura basada en la extensión del conjunto de instrucciones x86 para manejar direcciones de 64 bits. Además de una simple extensión contempla mejoras adicionales como duplicar el número y el tamaño de los registros de uso general y de instrucciones SSE. Se trata de una arquitectura desarrollada por AMD e implementada bajo el nombre de AMD64. El primer procesador con soporte para este conjunto de instrucciones fue el Opteron, lanzado en abril de 2003. Posteriormente ha sido implementado en múltiples variantes del Athlon 64 y del Pentium 4 de Intel, en éste último caso bajo una versión de Intel llamada Intel 64 (antes EM64T). Descripción de la arquitectura [editar] El conjunto de instrucciones del AMD x86-64 (renombrado posteriormente como AMD64) es una extensión directa de la arquitectura del x86 a una arquitectura de 64 bits, motivado por el hecho de que los 4GB de memoria que son direccionables directamente por una CPU de 32 bits ya no es suficiente para todas las aplicaciones. Algunos de los cambios: Nuevos registros. El número de registros de propósito general se ha incrementado de 8 en los procesadores x86-32 a 16, y el tamaño de todos estos registros se ha incrementado de 32 bits a 64 bits. Adicionalmente, el número de registros MMX de 128 bits (usados para las instrucciones extendidas SIMD) se ha incrementado de 8 a 16. Los registros adicionales incrementan el rendimiento. Registros XMM (SSE) adicionales: Igualmente el número de registros de 128 bits (usados para las instrucciones SSE) han aumentado de 8 a 16. Espacio de direcciones mayor. Debido a la arquitectura de 64 bits, la arquitectura AMD64 puede direccionar hasta 16 exabytes de memoria. Esto, comparado con los 4GB del x86-32, de los que sólo la mitad está disponible para aplicaciones en la mayoría de las versiones de Microsoft Windows, el sistema operativo dominante en entornos domésticos. Las implementaciones futuras de la arquitectura del AMD64 puede proporcionar hasta 2 exabytes de memoria disponible. Si la paginación de memoria se utiliza correctamente, los sistemas operativos de 32 bits podrían tener acceso a algunas de las extensiones de dirección físicas sin tener que realizar la ejecución en modo largo (long). Aunque la memoria virtual de todos los programas en el modo de 32 bits está limitada a 4 GB. Instrucción de acceso a datos relativa al puntero: Las instrucciones ahora pueden hacer referencias relativas al puntero de instrucciones (registro RIP). Esto permite crear código independiente de la posición que permite un código mucho más eficiente en librerías dinámicas y código cargado en tiempo de ejecución. Llamadas al sistema más rápidas. Debido a que la segmentación no está soportada en el modo de 64 bits, las llamadas al sistema no tienen las latencias asociadas con almacenar y recuperar la información de segmentación ni tienen que realizar las comprobaciones necesarias de protección a nivel de segmentación. Por lo tanto, AMD ha introducido un nuevo interfaz de llamadas al sistema, al que se accede utilizando solamente la instrucción "SYSCALL". Aunque los sistemas operativos todavía pueden utilizar el sistema de interrupciones para las llamadas al sistema, en el modo de 64 bits utilizar "SYSCALL" es más rápido. Instrucciones SSE. La arquitectura AMD 64 incluye las extensiones de Intel SSE y SSE2, las últimas cpus incluyen SSE3 también. También están soportadas las instrucciones del x86 y MMX. Bit NX. El bit NX es una característica del procesador que permite al sistema operativo prohibir la ejecución del código en área de datos, mejorando la seguridad. Esta características está disponible en los modos de 32 y 64 bits, y está soportada por Linux, Solaris, Windows XP SP2, Windows Server 2003 SP1. Los sistemas de archivos (filesystem en inglés), estructuran la información guardada en una unidad de almacenamiento (normalmente un disco duro de una computadora), que luego será representada ya sea textual o gráficamente utilizando un gestor de archivos. La mayoría de los sistemas operativos poseen su propio sistema de archivos. Lo habitual es utilizar dispositivos de almacenamiento de datos que permiten el acceso a los datos como una cadena de bloques de un mismo tamaño, a veces llamados sectores, usualmente de 512 bytes de longitud. El software del sistema de archivos es responsable de la organización de estos sectores en archivos y directorios y mantiene un registro de qué sectores pertenecen a qué archivos y cuáles no han sido utilizados. En la práctica, un sistema de archivos también puede ser utilizado para acceder a datos generados dinámicamente, como los recibidos a través de una conexión de red (sin la intervención de un dispositivo de almacenamiento). Los sistemas de archivos tradicionales proveen métodos para crear, mover, renombrar y eliminar tanto archivos como directorios, pero carecen de métodos para crear, por ejemplo, enlaces adicionales a un directorio o archivo (enlace duro en Unix) o renombrar enlaces padres (".." en Unix). El acceso seguro a sistemas de archivos básicos puede estar basado en los esquemas de lista de control de acceso o capacidades. Las listas de control de acceso hace décadas que demostraron ser inseguras, por lo que los sistemas operativos experimentales utilizan el acceso por capacidades. Los sistemas operativos comerciales aún funcionan con listas de control de acceso. Sistemas de archivos de disco [editar] Un sistema de archivo de disco está diseñado para el almacenamiento de archivos en una unidad de disco, que puede estar conectada directa o indirectamente a la computadora. Otros sistemas de archivos -HFS. HFS es el Sistema de Archivo de Mac. Se usa en todo tipo de medio de almacenamiento, desde CD's y DVD's hasta el Disco Duro. -HFS+. HFS+ es la variante moderna de HFS con soporte para una mayor capacidad de almacenamiento, unicode y mucho más. ext3 (third extended filesystem o "tercer sistema de archivos extendido") es un sistema de archivos con registro por diario (journaling). Es el sistema de archivo más usado en distribuciones Linux. La principal diferencia con ext2 es el registro por diario. Un sistema de archivos ext3 puede ser montado y usado como un sistema de archivos ext2. Otra diferencia importante es que ext3 utiliza un árbol binario balanceado (árbol AVL) e incorpora el asignador de bloques de disco Orlov. Estructuras de datos ext2 [editar] El espacio en ext2 está dividido en bloques, y los bloques organizados en grupos, análogamente los grupos de cilindro del sistema de archivos Unix. Esto se hace para reducir la fragmentación externa y reducir al mínimo el número de búsquedas de disco cuando se lee una gran cantidad de datos consecutivos. Cada bloque contiene un superbloque grupo, el grupo de bloques de mapa de bits, mapa de bits i-nodo, seguidos por los bloques de datos reales. El superbloque contiene información importante que es crucial para el arranque del sistema operativo, con lo que las copias se realizan en cada bloque de grupo de cada bloque en el sistema de archivos. Sin embargo, sólo la primera copia de la misma, que se encuentra en el primer bloque del sistema de archivos, se utiliza en el arranque. El grupo descriptor almacena el valor del bloque de mapa de bits, mapa de bits inodo y el comienzo de la tabla de i-nodos por cada bloque de grupo y éstos, a su vez, se almacena en un grupo descriptor tabla. La GPL (General Public License/Licencia Pública General) de GNU es un conjunto específico de términos de distribución empleados para proteger un programa con copyleft. El Proyecto GNU utiliza esta licencia para la distribución de la mayoría del software de GNU. El sistema GNU El sistema GNU es el sistema operativo similar a Unix, constituido en su totalidad por software libre, que hemos desarrollado en el Proyecto GNU desde 1984. Un sistema operativo similar a Unix está constituido por muchos programas. El sistema GNU incluye todo el software GNU, además de muchos otros paquetes, como el sistema X Window y TeX, los cuales no son software de GNU. La primera versión de prueba del sistema GNU completo estaba disponible en 1996. Éste incluía el Hurd de GNU, nuestro núcleo, desarrollado desde 1990. En 2001 el sistema GNU (incluyendo el Hurd de GNU) comenzó a funcionar con bastante fiabilidad, pero el Hurd todavía carecía de algunas características importantes, por lo que no se usa ampliamente. Entretanto, el sistema GNU/Linux, un derivado del sistema GNU que utiliza Linux como núcleo en vez del Hurd de GNU, tuvo un gran éxito desde los años 1990. Ya que el propósito de GNU es ser un sistema libre, cada una de las piezas que lo componen deben ser software libre. Sin embargo, no todas tienen por que estar protegidas por copyleft; legalmente se puede incluir cualquier tipo de software libre si este ayuda a alcanzar los objetivos técnicos propuestos. Y no es necesario que cada componente sea software GNU individualmente. El sistema GNU puede incluir, e incluye, software libre no protegido por copyleft, como es el caso del Sistema X Window, que fue desarrollado en otros proyectos. Una licencia es, en Derecho, un contrato mediante el cual una persona recibe de otra el derecho de uso de varios de sus bienes, normalmente de carácter no tangible o intelectual, pudiendo darse a cambio del pago de un monto determinado por el uso de los mismos. Estos activos son propiedad del otorgante, y pueden ser bienes de propiedad intelectual como una marca, patentes o tecnologías. También pueden ser objeto de licencia otros bienes de carácter intangible como la distribución de obras intelectuales. Clases de licencias [editar] La modalidad de licenciamiento es muy común en la industria del software, donde se comercializan licencias de software que permiten el uso de un programa o aplicación computacional sin ser uno el dueño, por lo que no se tiene la propiedad para venderlo, ni arrendarlo o modificarlo. Existen también licencias con características especiales, que permiten la modificación o transmisión del software. Estas licencias se suelen denominar freeware (de uso gratuito), shareware (de distribución gratuita) o las que se permite la modificación del software: software libre y open source. También existe la licencia para ser concesionario de una marca recibiendo el derecho de uso de esta marca y al mismo tiempo el know how de la companía. Los núcleos híbridos fundamentalmente son micronúcleos que tienen algo de código «no esencial», en 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. Ejemplos de SO con núcleos híbridos [editar] 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 Se tiende a confundir el término núcleo híbrido con los núcleos monolíticos que pueden cargar módulos después del arranque, lo que es un error. El núcleo híbrido implica 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 no esencial hacia el espacio de usuario, pero manteniendo cierto código no esencial en el propio núcleo por razones de rendimiento