El documento describe la arquitectura de Windows, que se basa en un diseño orientado a objetos con un micronúcleo. El sistema operativo proporciona servicios como planificación, comunicación entre procesos e I/O a través de procesos servidores que se ejecutan en modo usuario. Windows también admite características como multihilos, multiprocesamiento simétrico y distribución para mejorar el rendimiento.
2. Arquitectura de Sistema Operativo Windows
Int r oducción
Con el paso de los años se ha producido una evolución gradual de la estructura y capacidades de
los Sistemas Operativos. Sin embargo, recientemente se ha introducido un cierto número de
nuevos elementos de diseño en los nuevos Sistemas Operativos y en las nuevas versiones de los
Sistemas Operativos existentes. Estos Sistemas Operativos modernos responden a nuevos
desarrollos del hardware y nuevas aplicaciones. Entre estos dispositivos de hardware están las
máquinas multiprocesador, incrementos enormes de la velocidad de la máquina, alta velocidad en
los enlaces de las redes de comunicación e incremento en el tamaño y variedad de los dispositivos
de almacenamiento de memoria. En los campos de aplicación que han influido en el diseño de los
Sistema Operativos están las aplicaciones multimedia, el acceso a Internet y páginas Web y la
ejecución cliente/servidor.
El porcentaje de cambios en las demandas de los Sistemas Operativos, requiere no solamente las
modificaciones y mejoras en las arquitecturas ya existentes, sino nuevas formas de organización
del Sistema Operativo. Muchos de los diferentes enfoques y elementos de diseño se han probado
tanto en Sistemas Operativos experimentales como comerciales, y muchos de ellos encajan dentro
de las siguientes categorías
3. Sist em as Oper at ivos
1_ Arquitectura Micronúcleo.
2_ Multihilos.
3_Multiproceso Simétrico.
4_Sistemas Operativos Distribuidos.
5_Diseño Orientado a Objeto.
La mayor parte de los Sistemas Operativos hasta hace poco tiempo se caracterizaban por un gran
núcleo monolítico. Gran parte de la funcionalidad que se pensaba debía tener un Sistema
Operativo la proporcionaba este gran núcleo, incluyendo planificación, sistema de archivos, redes,
controladores de dispositivos, gestión de memoria y muchas cosas más. Normalmente un núcleo
monolítico está implementado como un único proceso, con todos sus componentes compartiendo
el mismo espacio de direcciones.
La arquitectura micronúcleo asigna solamente unas pocas funciones esenciales al núcleo,
incluyendo espacios de direcciones, comunicación entre procesos (IPC) y planificación básica.
Otros servicios del Sistema Operativo los proporciona procesos, algunas veces llamados
servidores, que se ejecutan en modo usuario y que el micronúcleo trata como a cualquier otra
aplicación. Este enfoque desconecta el núcleo y el desarrollo de servidores. Los servidores pueden
estar diseñados para aplicaciones específicas o necesidades del entorno. El enfoque del
micronúcleo simplifica la implementación, proporciona flexibilidad y se adapta bien para entornos
distribuidos. En esencia, un micronúcleo interactúa de la misma forma con procesos servidores
locales y remotos, facilitando la construcción de sistemas distribuidos.
Este trabajo intenta abordar la arquitectura del Sistema Operativo Windows y los servicios que
cada uno de sus componentes brinda para llevar a cabo cada una de las categorías antes
expuestas.
4. Visión Gener al de la Ar quit ect ur a de Window s.
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:
5.
6. Arquitectura Micronúcleo
Est r uct ur a So Por M icr onúcleo (M icr oker nel)
Micronúcleo es un tipo de núcleo de un sistema operativo que provee un conjunto de
primitivas o llamadas al sistema mínimas, para implementar servicios básicos como espacios
de direcciones, comunicación entre procesos y planificación básica. Todos los otros servicios
(gestión de memoria, sistema de archivos, operaciones de E/S, etc.), que en general son
provistos por el núcleo, se ejecutan como procesos servidores en espacio de usuario"
Cuando leemos esto asumimos que esta estructura es basada en un núcleo mas pequeño que
el núcleo monolítico, tiene operaciones mas básicas en el SO teniendo comunicación con el
resto de operaciones faltantes (esto en código maquina).Se basa en una programación
modular, aportando así flexibilidad al SO, control de errores mucho mas fácil y rápido, pero
bajando en rendimiento.
El microkernel se encarga de la planificación de hilos (post anterior), no de procesos, esto
hace posible tener varias tareas (multitarea), siendo así el microkernel el que planifica todo el
código que corre en el sistema.
Alguna de las tareas que realiza el microkernel son:
- Manipulación de las interrupciones en el sistema desde dispositivos físicos.
- Manipula excepciones del procesador.
- Proporciona soporte para la recuperación de un sistema con alguna falla de caída de energía.
La arquitectura de microkernel es complejo, sofisticado pero mas centrado en su que hacer
para el SO, toda acción pasa por el microkernel, lo cual hace a un SO mas seguro que uno SO
con arquitectura kernel monolítico, ya que si el que solicita hacer la acción no posee los
permisos necesarios el microkernel no lo deja hacer nada.
7. Sistemas Operativos con Micronúcleo
Entre los sistemas operativos con
Micronúcleo podemos citar:
AIX
AmigaOS
Amoeba
Minix
Hurd
NeXTSTEP (algunos lo consideran un núcleo
híbrido)
L4
Netkernel
RaOS
RadiOS
ChorusOS
QNX
SO3
Symbian
SymbOS
8. Multihilos
M ult ihilos
Definición:
Un hilo de ejecución, en sistemas operativos, es una característica que permite a una aplicación
realizar varias tareas a la vez (concurrentemente). Los distintos hilos de ejecución comparten una
serie de recursos tales como el espacio de memoria, los archivos abiertos, situación de
autenticación, etc. Esta técnica permite simplificar el diseño de una aplicación que debe llevar a
cabo distintas funciones simultáneamente.
Multithilo (multithreading en inglés) tienen soporte en hardware para ejecutar eficientemente
múltiples hilos de ejecución.
El paradigma de multihilo ha llegado a ser más popular a medida que los esfuerzos para llevar más
adelante el paralelismo a nivel de instrucción se han atascado desde finales de los años 1990. Esto
permitió que re emergiera a una posición destacada el concepto del computación de rendimiento
a partir del más especializado campo del procesamiento transaccional:
Aunque es muy difícil acelerar un solo hilo o un solo programa, la mayoría de los sistemas
de computadores son realmente multitarea entre múltiples hilos o programas.
Las técnicas que permitirían acelerar el rendimiento total del procesamiento del sistema
en todas las tareas (tasks) darían como resultado un aumento significativo del
rendimiento.
Las dos principales técnicas para computación de rendimiento son el multiproceso y el multihilo.
Una cierta crítica del multihilo incluye:
Los múltiples hilos pueden interferir uno con el otro al compartir recursos de hardware
como cachés o Translation Lookaside Buffer (TLB).
Los tiempos de ejecución de un solo hilo no son mejorados, sino por el contrario, pueden
ser degradados.
El soporte de hardware para multihilo es más visible al software que el
multiprocesamiento, por lo tanto requiriendo más cambios tanto a las aplicaciones como
el sistema operativo.
Las técnicas de hardware usadas para soportar multihilo a menudo paralelizan las técnicas de
software usadas para la multitarea de los programas de computadora.
9. Multiproceso Simétrico
M ult ipr oces Sim ét r ico.
o
Explicación detallada
La arquitectura SMP (Multi-procesamiento simétrico, también llamada UMA, de Uniform Memory
Access), se caracteriza por el hecho de que varios microprocesadores comparten el acceso a la
memoria. Todos los microprocesadores compiten en igualdad de condiciones por dicho acceso, de ahí la
denominación "simétrico".
Los sistemas SMP permiten que cualquier procesador trabaje en cualquier tarea sin importar su
localización en memoria; con un propicio soporte del sistema operativo, estos sistemas pueden mover
fácilmente tareas entre los procesadores para garantizar eficientemente el trabajo.
Una computadora SMP se compone de microprocesadores independientes que se comunican con la
memoria a través de un bus compartido. Dicho bus es un recurso de uso común. Por tanto, debe ser
arbitrado para que solamente un microprocesador lo use en cada instante de tiempo. Si las
computadoras con un solo microprocesador tienden a gastar considerable tiempo esperando a que
lleguen los datos desde la memoria, SMP empeora esta situación, ya que hay varios parados en espera
de datos.
Conceptos relacionados
Arquitectura Numa
Multiproceso simétrico, una de las formas más fáciles y baratas de aumentar el rendimiento del
hardware es poner más de una CPU en la placa. Esto se puede realizar haciendo que CPU diferentes
tengan trabajos diferentes (multiproceso asimétrico) o haciendo que todos se ejecuten en paralelo,
realizando el mismo trabajo (multiproceso simétrico o SMP). El hacer multiproceso asimétrico requiere
un conocimiento especializado sobre las tareas que la computadora debe ejecutar, que no es fácilmente
discernible en un sistema operativo de propósito general como Linux. En cambio el multiproceso
simétrico es relativamente fácil de implementar.
En un entorno de multiproceso simétrico, las CPU comparten la misma memoria, y como resultado, el
código que corre en una CPU puede afectar a la memoria usada por otra. No se puede estar seguro de
que una variable que se ha establecido a un cierto valor en la línea anterior todavía tenga el mismo
valor; la otra CPU puede modificar el valor de la variable. No es posible programar algo de esta manera.
En el caso de la programación de procesos esto no suele ser un problema, porque un proceso
normalmente sólo se ejecutará en una CPU a la vez. El núcleo, sin embargo, podría ser llamado por
diferentes procesos ejecutándose en CPU diferentes.
En la versión 2.0.x del núcleo de Linux, esto no es un problema porque el núcleo entero está en un gran
`spinlock'. Esto significa que si una CPU está dentro del núcleo y otra CPU quiere entrar en él, por
ejemplo por una llamada al sistema, tiene que esperar hasta que la primera CPU haya acabado. Esto es
lo que hace el SMP en Linux; es seguro, pero ineficiente.
10. Sistemas Operativos Distribuidos
Sis em as Oper at ivos D is r ibuidos
t t
Los sistemas operativos distribuidos desempeñan las mismas funciones que un sistema operativo
normal, pero con la diferencia de trabajar en un entorno distribuido. Su Misión principal consiste en
facilitar el acceso y la gestión de los recursos distribuidos en la red.
En un sistema operativo distribuido los usuarios pueden acceder a recursos remotos de la misma
manera en que lo hacen para los recursos locales. Permiten distribuir trabajos, tareas o procesos, entre
un conjunto de procesadores. Puede ser que este conjunto de procesadores esté en un equipo o en
diferentes, lo cual es transparente para el usuario.
Los sistemas distribuidos deben de ser muy confiables y estables ya que si un componente del sistema
se descompone otro componente debe de ser capaz de remplazarlo inmediatamente y no afectar los
procesos del sistema.
Características básicas
Los sistemas operativos distribuidos están basados en las ideas básicas:
• Transparencia
• Eficiencia
• Flexibilidad
• Escalabilidad
Existen dos esquemas básicos: Los Fuertemente Acoplados y los débiles. Un sistema fuertemente
acoplado es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares
para todos los procesadores. En un sistema débilmente acoplado los procesadores no comparten ni
memoria ni reloj, ya que cada uno cuenta con su memoria local.
Transparencia
El concepto de transparencia de un Sistema operativo distribuido va ligado a la idea de que todo el
sistema funcione de forma similar en todos los puntos de la red, debido a esto queda como labor del
sistema operativo coordinar el mecanismo que logre la unificación de todos los sistemas y recursos
totalmente transparente para el usuario o aplicación.
El que el sistema disponga de varios procesadores debe lograr un mayor rendimiento del sistema, pero
el sistema operativo debe controlar que tanto los usuarios como los programadores vean el núcleo del
sistema distribuido como un único procesador, Es decir que la programación y la ejecución de los
programas y tareas sean exactamente iguales que las de los sistemas operativos normales en aspectos
visuales y de programación, pero mas rápidos y eficientes por la distribución de la tareas.
11. Diseño Orientado a Objeto
M odelo de Es r uct ur a de Objet os ( OSM )
t
El OSM es el modelo fundamental que provee un medio uniforme para modelar el sistema desde la
captura de requerimientos en la etapa inicial del análisis hasta la implementación, atravesando todo el
ciclo de desarrollo del sistema.
Este modelo identifica:
las clases de objetos en la aplicación
como las clases de objetos se asocian unas con otras
como se comunican los objetos
los detalles de cada clase de objetos, incluyendo atributos y operaciones
Durante el proceso de análisis y diseño, el OSM es definido en sucesivos niveles incrementales de
detalle, hasta que el nivel necesario para la implementación es alcanzado.
Todos los demás modelos capturan detalles que alimentan es modelo.
El desarrollo de OSM es un proceso aditivo, diferenciándose esto del enfoque transformacional
característico de otros métodos como el estructurado, donde los DFD del análisis son transformados en
diagramas de estructura durante el diseño, con los consiguientes problemas que esto acarrea.
Durante el ciclo de desarrollo se aportan los siguientes elementos al modelo:
Análisis del Negocio: se reconocen objetos claves del negocio y generan las abstracciones en las
clases apropiadas (objetos entidad).
Análisis de Requerimientos: se identifican asociaciones estructurales entre objetos y nuevas
clases (entidad).
Diseño lógico: Se incorporan todas las clases necesarias para la aplicación incluyendo los
objetos de interfaz y de control.
Diseño Físico: se incorporan todos los detalles remanentes para la implementación física de
cada clase de objetos.
12. Diseño or ient ado a objet os
Análisis y diseño orientado a objetos (ADOO) es un enfoque de la ingeniería de
software que modela un sistema como un grupo de objetos que interactúan entre sí.
Este enfoque representa un dominio en términos de conceptos compuestos por
verbos y sustantivos, clasificados de acuerdo a su dependencia funcional. En este
método de análisis y diseño se crea un conjunto de modelos utilizando una notación
acordada como, por ejemplo, el lenguaje unificado de modelado (UML). ADOO aplica
técnicas de modelado de objetos para analizar los requerimientos para un contexto -
por ejemplo, un sistema de negocio, un conjunto de módulos de software - y para
diseñar una solución para mejorar los procesos involucrados. No está restringido al
diseño de programas de computadora, sino que cubre sistemas enteros de distinto
tipo. Las metodologías de análisis y diseño más modernas son casos de uso guiados a
través de requerimientos, diseño, implementación, pruebas, y despliegue.
Sistemas Operativos hasta hace poco tiempo se caracterizaban por un gran núcleo
monolítico. Gran parte de la funcionalidad que se pensaba debía tener un Sistema
Operativo la proporcionaba este gran núcleo, incluyendo planificación, sistema de
archivos, redes, controladores de dispositivos, gestión de memoria y muchas cosas
más. Normalmente un núcleo monolítico está implementado como un único proceso,
con todos sus componentes compartiendo el mismo espacio de direcciones.
La arquitectura Micronúcleo asigna solamente unas pocas funciones esenciales al
núcleo, incluyendo espacios de direcciones, comunicación entre procesos (IPC) y
planificación básica. Otros servicios del Sistema Operativo los proporciona procesos,
algunas veces llamados servidores, que se ejecutan en modo usuario y que el
Micronúcleo trata como a cualquier otra aplicación. Este enfoque desconecta el núcleo
y el desarrollo de servidores. Los servidores pueden estar diseñados para aplicaciones
específicas o necesidades del entorno. El enfoque del Micronúcleo simplifica la
implementación, proporciona flexibilidad y se adapta bien para entornos distribuidos.
En esencia, un Micronúcleo interactúa de la misma forma con procesos servidores
locales y remotos, facilitando la construcción de sistemas distribuidos.