Linux
es un núcleo monolítico híbrido, donde sus controladores de dispositivos y las
extensiones del núcleo normalmente se ejecutan en un espacio privilegiado
conocido como anillo, 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 sistema operativo se pueden cargar y descargar fácilmente como módulos, mientras el sistema continúa funcionando sin interrupciones.
Así mismo, a diferencia de los núcleos monolíticos tradicionales, los controladores pueden detenidos momentáneamente por actividades más importantes bajo ciertas condiciones.
Esta habilidad fue agregada para manejar correctamente interrupciones de hardware, y para mejorar el soporte de multiprocesamiento Simétrico.
A diferencia de los núcleos monolíticos tradicionales, los controladores de dispositivos son fácilmente configurables como Loadable Kernel Modules, y se pueden cargar o descargar mientras se está corriendo el sistema
A diferencia de los núcleos monolíticos tradicionales, los controladores de dispositivos y las extensiones al sistema operativo se pueden cargar y descargar fácilmente como módulos, mientras el sistema continúa funcionando sin interrupciones.
Así mismo, a diferencia de los núcleos monolíticos tradicionales, los controladores pueden detenidos momentáneamente por actividades más importantes bajo ciertas condiciones.
Esta habilidad fue agregada para manejar correctamente interrupciones de hardware, y para mejorar el soporte de multiprocesamiento Simétrico.
A diferencia de los núcleos monolíticos tradicionales, los controladores de dispositivos son fácilmente configurables como Loadable Kernel Modules, y se pueden cargar o descargar mientras se está corriendo el sistema
.
Arquitectura
de Windows.
Un Sistema Operativo serio,
capaz de competir en el mercado con otros como Unix que ya tienen una posición
privilegiada, en cuanto a resultados, debe tener una serie de características
que le permitan ganarse ese lugar. Algunas de estas son:
· Que
corra sobre múltiples arquitecturas de hardware y plataformas.
· Que
sea compatible con aplicaciones hechas en plataformas anteriores, es decir que
corrieran la mayoría de las aplicaciones existentes hechas sobre versiones
anteriores a la actual, nos referimos en este caso particular a las de 16-bit
de MS-DOS y Microsoft Windows
3.1.
· Reúna
los requisitos gubernamentales para POSIX (Portable Operating System Interface
for Unix).
· Reúna
los requisitos de la industria y
del gobierno para
la seguridad del
Sistema Operativo.
· Sea
fácilmente adaptable al mercado global soportando código Unicode.
· Sea
un sistema que corra y balancee los procesos de forma paralela en varios procesadores a
la vez.
· Sea
un Sistema Operativo de memoria virtual.
Uno de los pasos más
importantes que revolucionó los Sistemas Operativos de la Microsoft fue el
diseño y creación de un Sistema Operativo extensible, portable, fiable,
adaptable, robusto, seguro y compatible con sus
versiones anteriores (Windows NT).
Y para ello crearon la
siguiente arquitectura modular:
La cual está compuesta por
una serie de componentes separados donde cada cual es responsable de sus
funciones y brindan servicios a otros componentes. Esta arquitectura es del
tipo cliente – servidor ya que los programas de aplicación son
contemplados por el sistema operativo como si fueran clientes a los que hay que servir, y
para lo cual viene equipado con distintas entidades servidoras.
Ya creado este diseño las
demás versiones que le sucedieron a Windows
NT fueron
tomando esta arquitectura como base y le fueron adicionando nuevos componentes.
Uno de las características
que Windows comparte con el resto de los Sistemas Operativos avanzados es la
división de tareas del Sistema Operativo en múltiples categorías, las cuales
están asociadas a los modos actuales soportados por los microprocesadores.
Estos modos proporcionan a los programas que corren dentro de ellos diferentes
niveles de privilegios para acceder al hardware o a otros programas que están
corriendo en el sistema. Windows usa un modo privilegiado (Kernel) y un modo no
privilegiado (Usuario).
Uno de los objetivos fundamentales del diseño
fue el tener un núcleo tan pequeño como fuera posible, en el que estuvieran
integrados módulos que dieran respuesta a aquellas llamadas al sistema que
necesariamente se tuvieran que ejecutar en modo privilegiado (modo kernel). El
resto de las llamadas se expulsarían del núcleo hacia otras entidades que se
ejecutarían en modo no privilegiado (modo usuario), y de esta manera el núcleo
resultaría una base compacta, robusta y estable.
El Modo Usuario es un modo menos
privilegiado de funcionamiento, sin el acceso directo al hardware. El código
que corre en este modo sólo actúa en su propio espacio de dirección.
Este usa las APIs (System Application Program Interfaces) para pedir los
servicios del sistema.
El Modo Kernel es un modo muy privilegiado
de funcionamiento, donde el código tiene el acceso directo a todo el hardware y
toda la
memoria, incluso a los espacios de dirección de todos los procesos del modo
usuario. La parte de WINDOWS que corre en el modo Kernel se llama Ejecutor de
Windows, que no es más que un conjunto de servicios disponibles a todos los
componentes del Sistema Operativo, donde cada grupo de servicios es manipulado
por componentes que son totalmente independientes (entre ellos el Núcleo) entre
sí y se comunican a través de interfaces bien definidas.
Todos los programas que no
corren en Modo Kernel corren en Modo Usuario. La mayoría del código del Sistema
Operativo corre en Modo Usuario, así como los subsistemas de ambiente (Win32 y POSIX que serán
explicados en capítulos posteriores) y aplicaciones de usuario. Estos programas
solamente acceden a su propio espacio de direcciones e interactúan con el resto
del sistema a través de mensajes Cliente/Servidor.