M16T5 Windows y GNU
M16T5 Windows y GNU
M16T5 Windows y GNU
2. Introducción
3. Estructura de Windows
4. Estructura de GNU/Linux
5. Resumen
6. Bibliografía
Windows y GNU/LINUX | 3
El nivel más superior en la figura anterior es la biblioteca La capa de abstracciones del hardware
del sistema ntdll.dll, que, en realidad, se ejecuta en modo
de usuario. La biblioteca del sistema incluye varias Uno de los objetivos de Windows es lograr la portabilidad
funciones de soporte para las bibliotecas en tiempo de entre varias plataformas de hardware. En teoría, para
ejecución y de bajo nivel del compilador. llevar un sistema operativo a un nuevo tipo de sistema
computacional solo habría que recompilar el sistema
La biblioteca ntdll.dll también contiene puntos de entrada operativo con un compilador para el nuevo equipo y
de código especiales que el kernel utiliza para inicializar hacer que lo ejecutara la primera vez. Por desgracia, no
hilos y despachar las excepciones y las Asynchronous es tan simple. Aunque muchos de los componentes, en
Procedure Calls, llamadas a procedimientos asíncronas algunos niveles del sistema operativo, pueden ser, en
(APC) en modo de usuario. Como la biblioteca del gran parte, portables, otros niveles deben lidiar con los
sistema es tan integral para la operación del kernel, registros de dispositivos, las interrupciones, el DMA y
cada proceso, en modo de usuario, creado por NTOS, otras características del hardware que difieren de manera
tiene asignada la biblioteca ntdll en la misma dirección considerable entre una máquina y otra [2].
fija. Cuando NTOS inicializa el sistema, crea un objeto
de sección para emplearlo al asignar ntdll, y registra El trabajo del HAL es presentar al resto del sistema
las direcciones de los puntos de entrada de ntdll que el operativo el hardware abstracto que oculta los detalles
kernel utiliza. específicos sobre la versión del procesador, el conjunto de
chips de soporte y otras variaciones de la configuración.
Debajo de los niveles kernel y ejecutivo del sistema
operativo, hay un software conocido como Hardware Dentro de las funciones o características del HAL pueden
Abstraction Layer, nivel de abstracción de hardware mencionarse:
(HAL), que abstrae los detalles del hardware de bajo
nivel, como el acceso a los registros de dispositivos 1. Los drivers y el kernel requieren menos cambios
y las operaciones de DMA, así como la forma en que al portarse a nuevos procesadores. En muchas
el firmware del BIOS representa la información de versiones, Microsoft proporcionaba un kit de
configuración y lidia con las diferencias en los chips de desarrollo del HAL, el cual permitía a los fabricantes
soporte de la CPU y varios controladores de interrupción. de sistemas construir su propio HAL para
El BIOS está disponible a través de varias empresas y se posibilitar que los demás componentes del kernel
integra en memoria persistente (EEPROM) que reside en funcionaran en los nuevos sistemas sin necesidad
la tarjeta principal del ordenador. de modificarlos.
2. El HAL proporciona un servicio para identificar
Los otros componentes principales en modo de kernel dispositivos mediante la asignación de direcciones
son los drivers de dispositivos. Windows los utiliza para de dispositivos relativos del bus a direcciones
cualquier herramienta en modo de kernel que no forma lógicas a nivel del sistema. De esta forma, los drivers
parte del NTOS o del HAL. Esto incluye a los sistemas de no tienen que llevar la cuenta de qué dispositivo está
archivos, las pilas del protocolo de red y las extensiones conectado a cuál bus. Las interrupciones tienen un
del kernel, como el software antivirus y Digital Rights problema similar: también son dependientes del
Management, administración de los derechos digitales bus.
(DRM), así como drivers para administrar los dispositivos
físicos o actuar como interfaz para los buses del 3. Proporciona servicios para denominar las
hardware, por ejemplo. interrupciones de una forma que sea a nivel del
sistema y otros para permitir que los drivers
Los componentes de E/S y de memoria virtual cooperan adjunten rutinas de servicio de interrupciones a
para cargar y descargar controladores de dispositivos a las detenciones de una manera portable, sin tener
la memoria del kernel y enlazarlos a los niveles del NTOS que saber nada sobre cuál vector de interrupción
y HAL. El administrador de E/S proporciona interfaces corresponde a cuál bus.
que permiten descubrir, organizar y operar dispositivos
(incluyendo los arreglos para cargar el driver de 4. Administra los relojes y temporizadores, de una
dispositivo apropiado). Gran parte de la información de manera portable, y proporciona primitivas para
configuración para administrar dispositivos y drivers se administrar esta sincronización como la espera
mantiene en el grupo masivo de archivos del registro activa, en la que una CPU, simplemente, espera la
llamado SYSTEM. El subcomponente de plug-and-play liberación de un recurso retenido por otra CPU, en
del administrador de E/S mantiene la información sobre especial, en situaciones donde el recurso se retiene,
el hardware detectado dentro del volátil grupo masivo por lo general, por unas cuantas instrucciones de
de archivos HARDWARE que se mantiene en memoria máquina.
en vez de en el disco, ya que se recrea por completo
cada vez que se inicia el sistema.
5. Por último, una vez que se inicia el sistema, el Después, esta información se coloca en el registro.
HAL se comunica con el BIOS e inspecciona En la figura 2 se muestra un resumen de algunas de las
la configuración del sistema para averiguar cosas que hace el HAL.
los buses y dispositivos de E/S que contiene
y la forma en que se han configurado.
Figura 4. Representación de las pilas de dispositivos para dos volúmenes de archivo [2].
Windows y GNU/LINUX | 9
Los sistemas de archivos se cargan como drivers. Para Es uno de los sistemas operativos dominantes en las
cada instancia de un volumen para un sistema de archivos estaciones de trabajo y servidores de alto rendimiento,
se crea un objeto de dispositivo como parte de la pila de pero también se utiliza en sistemas que varían desde
dispositivos para ese volumen. Este objeto de dispositivo teléfonos celulares, hasta supercomputadoras [3].
se vinculará al objeto de driver para el sistema de archivos
que sea apropiado para el formato de ese volumen. Los La mayoría de los núcleos de Linux son monolíticos.
drivers de filtros especiales, conocidos como drivers de Todos los componentes funcionales del núcleo tienen
filtros del sistema de archivos, pueden insertar objetos acceso a todas las estructuras internas de datos y
de dispositivo antes del objeto de dispositivo del sistema rutinas. Linux está estructurado como una colección
de archivos, para aplicar la funcionalidad a las peticiones de módulos, algunos de los cuales pueden cargarse y
de E/S que se envían a cada volumen, como la inspección descargarse automáticamente bajo demanda [4].
de los datos que se leen o escriben con el fin de asegurar
Un sistema Linux se puede considerar un tipo de
que no tengan virus.
pirámide, como se ilustra en la figura 5. En la parte inferior
está el hardware, que consiste en CPU, memoria, discos,
Estructura de GNU/Linux un monitor, teclado y otros dispositivos. En el hardware
básico se ejecuta el sistema operativo. Su función es
GNU/Linux es un sistema operativo derivado de controlar el hardware y proveer una interfaz de llamadas
UNIX que se distribuye en forma libre. Linux también al sistema para todos los programas. Estas llamadas
se considera una variante popular de UNIX, que se al sistema permiten a los programas de usuario crear y
ejecuta en una amplia variedad de computadoras. administrar procesos, archivos y otros recursos [2].
Figura 5. Los niveles en un sistema Linux, el sistema operativo se encuentra en el modo kernel [2].
Para hacer las llamadas al sistema, los programas Además del sistema operativo y la biblioteca de llamadas
colocan los argumentos en registros y emiten al sistema, todas las versiones de Linux proporcionan
instrucciones trampa para cambiar del modo de usuario una gran cantidad de programas estándar, algunos de
al modo kernel. los cuales se especifican en el estándar POSIX 1003.2
y otros difieren de una versión de Linux a otra. Entre
Los sistemas de ficheros de Linux y Unix se organizan ellos se incluyen el procesador de comandos (shell), los
en una estructura jerárquica de tipo árbol. El nivel más compiladores, editores, programas de procesamiento de
alto del sistema de ficheros es/o directorio raíz. Todos texto y herramientas de manipulación de archivos.
los demás ficheros y directorios están bajo el directorio
raíz [5]. Se puede hablar de tres interfaces distintas para Linux:
la verdadera interfaz de llamadas al sistema, la interfaz
de la biblioteca y la interfaz formada por el conjunto de
programas utilitarios estándar [2].
Windows y GNU/LINUX | 10
Por lo general, la mayoría de las distintas distribuciones Cuando el usuario escribe una línea de comandos, el
de Linux han reemplazado esta interfaz de usuario shell extrae la primera palabra, asume que es el nombre
orientada al teclado con una interfaz gráfica de usuario de un programa a ejecutar, busca este programa y, si lo
orientada al ratón, sin modificar el sistema operativo en encuentra, lo ejecuta. Después, el shell se suspende a sí
sí. Esta flexibilidad es lo que hace al sistema operativo mismo hasta que el programa termina, momento en el
tan popular. cual trata de leer el siguiente comando. Lo importante
aquí es tan solo la observación de que el shell es un
Linux trabaja por medio de una interfaz gráfica, donde programa de usuario ordinario. Todo lo que requiere es
los usuarios pueden ejecutar los clics del ratón para la habilidad de leer del teclado y escribir en el monitor, y
ejecutar aplicaciones o abrir archivos, arrastrar y soltar el poder de ejecutar otros programas.
para copiar archivos de una ubicación a otra, etcétera.
Además, los usuarios pueden invocar un programa Estructura del kernel
emulador de terminales, o xterm, el cual proporciona la
interfaz básica de línea de comandos para el sistema El kernel se posiciona, directamente, en el hardware y
operativo. permite las interacciones con los dispositivos de E/S
y la unidad de administración de la memoria; además,
Aunque los sistemas Linux tienen una interfaz gráfica controla el acceso de la CPU a estos dispositivos.
de usuario, la mayoría de los programadores y usuarios Como se muestra en la figura 6, en el nivel más bajo se
sofisticados aún prefieren una interfaz de línea de contienen manejadores de interrupciones, los cuales
comandos, conocida como shell. A menudo, inician son la forma principal de interactuar con los dispositivos
una o más ventanas de shell desde la interfaz gráfica y el mecanismo de despachamiento de bajo nivel.
de usuario y se ponen a trabajar en ellas. La interfaz de Este despachamiento ocurre cuando se produce una
línea de comandos del shell es más rápida de utilizar, interrupción.
más poderosa, se extiende con facilidad y no hace que el
usuario contraiga una lesión por esfuerzo repetitivo por Aquí, el código de bajo nivel detiene el proceso en
tener que usar un ratón todo el tiempo. ejecución, guarda su estado en las estructuras de
los procesos del kernel e inicia el driver apropiado. El
A continuación, se ve una breve descripción del bash despachamiento de procesos también ocurre cuando
shell. Este shell se basa, en gran parte, en el shell original el kernel completa ciertas operaciones y es tiempo de
de UNIX. También se utilizan muchos otros shells, pero iniciar un proceso de usuario otra vez. El código de
bashes el shell predeterminado en la mayoría de los despachamiento está en ensamblador y es distinto de la
sistemas Linux [2]. planificación de procesos.
El componente de E/S en la figura 7 contiene todas La implementación de red de Linux admite sockets BSD
las piezas del kernel responsables de interactuar con y todos los protocolos TCP / IP. La parte de red del kernel
los dispositivos y realizar operaciones de E/S de red y de Linux consta de sockets BSD, capas de protocolo de
almacenamiento. red y controladores de dispositivos de red. El controlador
del dispositivo de red es responsable de comunicarse
En el nivel más alto, todas las operaciones de E/S están con el dispositivo de hardware y cada dispositivo de
integradas bajo un nivel de sistema de archivos virtuales. hardware posible tiene un controlador de dispositivo
Es decir, en el nivel superior es lo mismo realizar una correspondiente [6].
operación de lectura en un archivo (ya sea que se
encuentre en memoria o en el disco) que obtener un El programador de E/S está por encima de los drivers
carácter de la entrada de una terminal. de disco. Este componente es responsable de ordenar y
emitir peticiones para operar el disco, de una forma que
En el nivel más bajo, todas las operaciones de E/S pasan trate de evitar que se desperdicie el movimiento de la
a través de cierto driver de dispositivo. Todos los drivers cabeza del disco, o de cumplir con alguna otra directiva
de Linux se clasifican como drivers de dispositivos del sistema.
de caracteres o drivers de dispositivos de bloques: la
principal diferencia es que en los dispositivos de bloques En la parte superior de la columna de dispositivos de
se permiten los accesos aleatorios y las búsquedas, bloques están los sistemas de archivos. Linux puede
pero no en los dispositivos de caracteres. Técnicamente, tener y, de hecho, tiene varios sistemas de archivos
los dispositivos de red son, en realidad, dispositivos de que coexisten en forma concurrente. Para ocultar las
caracteres, pero se manejan de una manera algo distinta, diferencias arquitectónicas de los diversos dispositivos
por lo que tal vez sea más claro separarlos, como se de hardware de la implementación del sistema de
realizó en la figura. archivos, un nivel de dispositivos de bloques genéricos
ofrece una abstracción que utilizan todos los sistemas
Arriba del nivel del driver de dispositivos, el código de archivos [2].
del kernel es distinto para cada tipo de dispositivo.
Los dispositivos de caracteres se pueden utilizar de A diferencia de los sistemas operativos como DOS, el
dos maneras. Algunos programas, como los editores sistema de archivos individual en el sistema operativo
visuales vi y emacs, requieren cada pulsación de tecla Linux no se identifica por la letra de la unidad o el nombre
a medida que se escribe. La E/S de terminal cruda (tty) de la unidad (como A: o C:, entre otros). Por el contrario, al
hace esto posible. Otros programas, como el shell, son igual que el sistema operativo UNIX, el sistema operativo
orientados a líneas y permiten a los usuarios editar Linux combina sistemas de archivos independientes en
toda la línea completa antes de oprimir INTRO para una estructura de árbol jerárquica y una sola entidad
enviarla al programa. En este caso, el flujo de caracteres representa este sistema de archivos [6].
del dispositivo de terminal se pasa a través de lo que
se conoce como una disciplina de línea y se aplica el Linux monta el nuevo sistema de archivos en un directorio
formato apropiado. determinado mediante una operación denominada
"montaje", de modo que los diferentes sistemas de
A menudo, el software de red es modular y admite archivos se combinan en un todo. Una característica
distintos dispositivos y protocolos. El nivel por encima importante del sistema operativo Linux es que admite
de los drivers de red maneja un tipo de función de muchos tipos diferentes de sistemas de archivos. El
enrutamiento, para asegurar que el paquete correcto sistema de archivos más utilizado en Linux es Ext2, que
llegue al dispositivo o manejador de protocolo correcto. también es un sistema de archivos nativo de Linux. Sin
La mayoría de los sistemas Linux contienen toda la embargo, Linux también puede admitir diferentes tipos
funcionalidad de un enrutador de hardware dentro de sistemas de archivos, como FAT, VFAT, FAT32 y MINIX,
del kernel, aunque el rendimiento es menor que el de para que pueda intercambiar datos fácilmente con otros
un enrutador de hardware. Por encima del código del sistemas operativos, porque Linux admite muchos
enrutador se encuentra la pila de protocolos actual, sistemas de archivos diferentes y los organiza en un
que siempre incluye a IP y TCP, pero también muchos sistema de archivos virtual unificado.
protocolos adicionales. La interfaz de sockets cubre
toda la red y permite que los programas creen sockets
para redes y protocolos específicos, para lo cual obtiene
de vuelta un descriptor de archivos con el fin de que cada
socket lo utilice más tarde [2].
Windows y GNU/LINUX | 12
Sistema de archivos virtual (VirtualFileSystem, VFS): los Por último, en la parte superior está la interfaz de
detalles específicos de varios hardware están ocultos, llamadas al sistema que van al kernel. Todas las llamadas
la operación del sistema de archivos y los detalles al sistema llegan aquí y producen una interrupción
de implementación específicos de los diferentes que cambia la ejecución del modo de usuario al modo
sistemas de archivos están separados, y se proporciona de kernel protegido y pasa el control a uno de los
una interfaz unificada para todos los dispositivos. componentes del kernel antes descritos.
VFS proporciona docenas de sistemas de archivos
diferentes. El sistema de archivos virtual se puede dividir
en un sistema de archivos lógico y un controlador de Resumen
dispositivo. El sistema de archivos lógico se refiere al
sistema de archivos compatible con Linux, como ext2, En Linux existen tres interfaces: el shell, la biblioteca de
fat, entre otros, y el controlador de dispositivo se refiere C y las llamadas al sistema. A menudo, se utiliza una
al módulo de controlador de dispositivo escrito para interfaz gráfica de usuario para simplificar la interacción
cada controlador de hardware. del usuario con el sistema. El shell permite a los usuarios
escribir comandos para ejecutarlos, los mismos pueden
A la derecha, en la figura 7, están los otros dos ser comandos simples, tuberías o estructuras más
componentes clave del kernel de Linux. Estos complejas. Los conceptos clave en Linux incluyen el
son responsables de la memoria y de las tareas proceso, el modelo de memoria, la E/S y el sistema de
de administración de los procesos. Las tareas de archivos. Los procesos pueden bifurcar subprocesos,
administración de la memoria incluyen el mantenimiento con lo cual se produce un árbol de procesos.
de las asignaciones entre la memoria virtual y la
memoria física, el mantenimiento de una caché de La administración de procesos en Linux considera a
páginas de acceso reciente y la implementación de una cada entidad como una tarea distinguible, por lo que un
buena directiva de reemplazo de páginas, y el proceso proceso es representado mediante dos componentes
de traer a la memoria nuevas páginas de código y datos claves: la estructura de tarea y la información adicional
necesarias, según la demanda. que describe el espacio de direcciones del usuario. La
programación se realiza mediante el uso de un algoritmo
La responsabilidad clave del componente de basado en prioridades, que favorece a los procesos
administración de procesos es la creación y terminación interactivos.
de los procesos. También incluye el planificador de
procesos que selecciona cuál proceso o hilo debe El sistema de archivos es jerárquico con archivos y
ejecutar a continuación, el kernel de Linux considera directorios. Todos los discos se montan en un solo
a los procesos e hilos simplemente como entidades árbol de directorios que empieza en una raíz única. Los
ejecutables, y las planifica con base en una directiva de archivos individuales se pueden vincular en un directorio
planificación global. Por último, el código para el manejo desde cualquier parte del sistema de archivos. Los
de señales también pertenece a este componente. directorios y dispositivos también se representan como
archivos, junto con otros archivos especiales.
Aunque los tres componentes se representan por
separado en la figura, son muy interdependientes. El modo de kernel en Windows está estructurado en el
HAL, en los niveles del kernel y del ejecutivo de NTOS,
Por lo general, los sistemas de archivos acceden a los y en un gran número de drivers de dispositivos que
archivos por medio de los dispositivos de bloques. implementan todo, desde los servicios de dispositivos,
Sin embargo, para ocultar las grandes latencias de los hasta los sistemas de archivos, las redes y los gráficos.
accesos al disco, los archivos se copian en la caché de EL HAL oculta ciertas diferencias en el hardware de
páginas en la memoria principal. Algunos archivos se los demás componentes. El nivel del kernel administra
pueden, incluso, crear en forma dinámica y pueden tener las CPU para posibilitar la operación multihilo y la
solo una representación dentro de la memoria, como sincronización, y el ejecutivo implementa la mayoría de
los archivos que proporcionan cierta información sobre los servicios en modo de kernel. El ejecutivo se basa
el uso de recursos en tiempo de ejecución. Además, en los objetos en modo de kernel que representan las
el sistema de memoria virtual puede depender de una estructuras de datos clave del ejecutivo, incluyendo
partición de disco o de un área de intercambio dentro los procesos, hilos, secciones de memoria, drivers,
de un archivo, para respaldar las partes de la memoria dispositivos y objetos de sincronización
principal cuando necesite liberar ciertas páginas y, por lo
tanto, depende del componente de E/S. Existen muchas
otras interdependencias.