Microsoft Windows 2000

Anuncio
INDICE
1 − Introducción 2
1.1 − Objetivos 2
1.2 − Historia 2
1.3 − Nuevas tecnologías de Windows 2000 4
1.4 − Las cifras de Windows 2000 4
2 − Arquitectura de Windows 2000 6
2.1 − Introducción 6
2.2 − Entornos del sistema operativo 9
2.3 − Servicios del sistema 11
2.4 − Ejecutivo de Windows 2000 11
3 − Descripción del Ejecutivo 14
3.1 − Objetos de Windows 2000 14
3.2 − Administrador de procesos de Windows 2000 16
3.2.1 − Objetos proceso y hebra 17
3.2.2 − Multiprocesos 20
3.2.3 − Estados de las hebras 21
3.2.4 − Soporte para los subistemas de entorno 22
3.2.5 − Soporte para el multiprocesamiento simétrico (SMP) 22
3.3 − Mecanismos de concurrencia 23
3.4 − Planificador de Windows 2000 25
3.5 − Administrador de memoria 27
3.6 − Administrador de E/S 30
3.7 − Sistema de ficheros de Windows 2000 33
3.7.1 − Características de NTFS 5 33
1
3.7.2 − Novedades de NTFS 5 34
3.7.3 − Conceptos fundamentales 35
3.7.4 − Estructura de NTFS 5 35
3.7.5 − Compresión de ficheros 40
3.7.6 − Encriptación de ficheros 41
3.8 − Seguridad en Windows 2000 42
4 − Novedades de Windows 2000 48
4.1 − Mejoras en la escalabilidad 48
4.2 − Windows Driver Model (WDM) 49
4.3 − Mejoras en la estabilidad 49
4.4. − NTFS 5 50
4.5 − Sistemas de ficheros soportados 50
4.6 − Servicios de terminal 51
4.7 − Plug and Play 51
4.7.1 − Arquitectura de Plug and Play 55
4.7.2 − Interfaz WDM para Plug and Play 56
4.8 − Adminitración de Energia 58
4.9 − El Directorio Activo 62
4.9.1 − Introducción a los servicios del directorio 62
4.9.2 − Caracteristicas del Directorio Activo 63
4.9.3 − Infraestructura del Directorio Activo 66
5 − Conclusiones 72
6 − Bibliografia 75
1 − INTRODUCCIÓN
1.1 − Objetivos
El principal objetivo de este trabajo es mostrar una visión global de la arquitectura de Windows 2000, sus
componentes y su funcionamiento. Mostrando tanto los aspectos que no han variado respecto a versiones
2
anteriores de NT, así como las pequeñas mejoras sufridas por los subsistemas del ejecutivo como el
administrador de memoria, el administrador de E/S o el microkernel. Y centrándonos en los principales
cambios sufridos por los subsistemas del ejecutivo, como son la mejoras en NTFS, la gestión de objetos, las
novedades en seguridad, el Plug and Play, la administración de energía o el Directorio Activo.
1.2 − Historia
La historia de Windows 2000 comienza con un sistema operativo muy diferente, desarrollado por Microsoft
para el primer ordenador personal de IBM, llamado MS−DOS o PC−DOS. La versión inicial, DOS 1.0, fue
lanzada en agosto de 1981. Consistía en 4000 líneas de código fuente en lenguaje ensamblador y funcionaba
con 8 Kbytes de memoria usando el microprocesador Intel 8086.
Cuando IBM desarrolló un ordenador personal con disco duro, el PC XT, Microsoft desarrolló el DOS 2.0,
presentado en 1983. Contenía soporte para disco duro y proporcionaba un sistema de directorios jerárquico.
Sin embargo, el disco sólo podía contener un directorio de ficheros, soportando un máximo de 64 ficheros.
Mientras esto era adecuado para discos flexibles era demasiado limitado para un disco duro, y la restricción
del directorio único era demasiado torpe. El nuevo lanzamiento permitió que los directorios contuvieran
subdirectorios al igual que ficheros. Este nuevo lanzamiento también contenía un rico conjunto de comandos
embebidos en el sistema operativo para proveer de funciones que hubieran sido realizadas por programas
externos proporcionados como utilidades en la versión 1. Entre las capacidades añadidas habían varias
características parecidas a las existentes en UNIX, como la redirección de entrada/salida o la impresión en
background. La porción de memoria residente creció hasta los 24 Kbytes.
Cuando IBM anunció el lanzamiento del PC AT en 1984, Microsoft introdujo en el mercado el DOS 3.0. El
AT contenía el procesador Intel 80286, que proporcionaba direccionamiento extendido y características de
protección de memoria. Todo esto no era utilizado por el DOS que permanecía compatible con los
lanzamientos previos, el sistema operativo simplemente utilizaba el 80286 como un 8086 más rápido. El
sistema operativo proporcionó soporte para nuevos teclados y discos duros. Además, los requisitos de
memoria crecieron hasta los 36 Kbytes. Hubo dos modificaciones notables de este sistema operativo, DOS 3.1
lanzado en 1984 que contenía soporte para redes de ordenadores y DOS 3.3 lanzado en 1987 que
proporcionaba soporte para la nueva línea de máquinas IBM, el PS/2. De nuevo, este sistema operativo no
aprovechaba las ventajas de las capacidades del PS/2, proporcionadas por el 80286 y los chips de 32 bits
80386. La porción de memoria residente en este nivel creció hasta un mínimo de 46 Kbytes con más
requisitos de memoria si se elegían ciertas extensiones opcionales.
En estos momentos, DOS era utilizado en un entorno más allá de sus capacidades. El lanzamiento del 80486 y
posteriormente la del Pentium de Intel proporcionaban poder y características que no podían ser explotadas
por DOS. Así que a principios de los 80, Microsoft empezó a desarrollar una interfaz gráfica de usuario (GUI)
que seria interpuesta entre el usuario y el DOS. El intento de Microsoft era competir con Macintosh, que le
superaba en facilidad de uso. En 1990 Microsoft lanzó una versión de GUI conocida como Windows 3.0, que
se aproximaba al entorno amigable de Macintosh. Sin embargo, Windows no era un sistema operativo y por lo
tanto necesitaba funcionar sobre DOS.
Después de un intento fracasado de Microsoft para desarrollar con IBM una nueva generación de sistemas
operativos, que aprovecharan el poder de los nuevos microprocesadores y que incorporara la facilidad de uso
de Windows, Microsoft desarrolló un nuevo sistema operativo desde cero, Windows NT. Windows NT
explota las capacidades de los procesadores contemporáneos y proporciona multitarea en un entorno
monosuario o multiusuario.
La primera versión de Windows NT la 3.1 fue lanzada en 1993, con la misma GUI que Windows 3.1, que fue
el sistema operativo que siguió a Windows 3.0. Sin embargo, Windows NT 3.1 era un nuevo sistema
operativo de 32 bits con la habilidad de soportar el viejo DOS y las aplicaciones de Windows.
3
Después de varias versiones de NT 3.x, Microsoft lanzó Windows NT 4.0 que tiene esencialmente la misma
arquitectura interna de NT 3.x, pero con un gran cambio externo ya que proporciona la interfaz de usuario de
Windows 98. El cambio más relevante en la arquitectura NT 4.0 con respecto a NT 3.x, es que varios
componentes gráficos funcionan en modo usuario como parte del subsistema Win32 en NT 3.x, pero han sido
incluidos dentro del Ejecutivo de Windows NT que funciona en modo kernel, en NT 4.0. El beneficio de este
cambio es la rapidez de las operaciones de estas importantes funciones. El potencial de dibujo está en que
estas funciones gráficas ahora tiene acceso a los servicios del sistema de bajo nivel, lo que podía afectar a la
fiabilidad del sistema operativo.
En el año 2000, Microsoft presentó la siguiente gran actualización, ahora llamada Windows 2000. Otra vez
cabe señalar que la arquitectura del Ejecutivo y del microkernel es fundamentalmente la misma que en NT
4.0, pero se le han añadido nuevas características. El énfasis en Windows 2000 hay que hacerlo en la adición
de servicios y funciones para soportar procesamiento distribuido. El elemento central de las nuevas
características de Windows 2000 es el Directorio Activo, que es un servicio de directorio distribuido capaz de
mapear los nombres de objetos arbitrarios y cualquier clase de información sobre estos objetos.
Una observación final que hacer sobre Windows 2000 es la distinción entre Windows 2000 Server, Windows
2000 Professional, y Windows 2000 Advanced Server, que se lanzaron a la vez en febrero de 2000, y
Windows 2000 Datacenter Server que se presentó a finales de 2000. En esencia, la arquitectura del
microkernel y del Ejecutivo y los servicios son los mismos, solo que el Server incluye algunos servicios
necesarios para ser usado como un servidor de red. La versión Advanced Server esta pensada para trabajar
como servidor y está preparada para soportar las exigencias de las aplicaciones más críticas y simplifica
notablemente la administración de grandes equipos. Y la versión Data Center que está diseñada para
convertirse en el sistema operativo de una nueva generación de PCs, con características similares a los
mainframes actuales.
1.3 − Nuevas tecnologías de Windows 2000
Estas son las características que incorpora la nueva versión de Windows:
• Sistema de ficheros NTFS 5.0 que soporta encriptado de archivos, compresión y cotas de disco
• Kerberos 5
• Clustering
• Soporte para particiones FAT32
• Gestión mejorada de redes con actualizaciones en la pila TCP/IP, VPNs (inclusión de protocolos
PPTP, L2TP e IPSec), QoS, Windows Media Services, IIS 5.0, DNS dinámico, TAPI 3.0 y MMC
como sistema de administración de la totalidad del sistema
• Intellimirror
• Directorio activo
• Servicios distribuidos (DFS y DCOM), y el instalador Darwin de aplicaciones (Windows installer).
También hereda de anteriores versiones de Windows 9x las ACPI, DirectX, Plug&Play, IEEE 1394, IrDA,
Fibre Channel, Smartcards, DVD, USB, FireWire, soporte para MMX y múltiples monitores, así como WDM
y Windows DNA. En las versiones internacionales se incluye de serie el encriptado de datos de 128 bits.
1.4 − Las cifras de Windows 2000
• Se ha invertido más de 1000 millones de dólares en el desarrollo.
• Más de 5000 programadores han escrito el código del nuevo Windows.
• Windows 2000 cuenta con más de 30 millones de líneas de código frente a los 18 millones de
Windows NT.
• El desarrollo ha durado mas de 4 años.
4
• Windows 2000 ha ganado 14 tests realizados por los más prestigiosos laboratorios.
• Tiene una fiabilidad a toda prueba ya que el test de stress se paró a los 90 días porque el servidor no
se había caído, en Windows NT sólo duró 5 días.
• Windows 2000 cuenta con más de 8000 aplicaciones preparadas. Cada mes se incorporan 500 más.
• El programa beta ha contado con 750000 betatesters.
Pese a todo esto Windows 2000 tenía cuando se presentó 63000 bugs confirmados por Microsoft, actualmente
ya se han lanzado el Service Pack 1 y 2 y un mes antes de su presentación ya había aparecido el primer virus
diseñado específicamente para esta plataforma, el win2k.INTA o Win2000.Install.
2 − ARQUITECTURA DE WINDOWS 2000
2.1 − Introducción a la arquitectura de Windows 2000
La arquitectura de Windows 2000 es básicamente la de NT pues Windows 2000 no es una reescritura sino una
mejora y ampliación en algunos casos, pero la filosofía es la misma que la de NT y algunos de los módulos de
NT permanecen en Windows 2000 sin apenas cambios.
La estructura modular de Windows 2000 aporta una gran flexibilidad y su diseño le permite ejecutarse en una
gran variedad de plataformas hardware y la ejecución de programas desarrollados para diferentes sistemas
operativos.
La primera característica de la arquitectura de Windows 2000 es la distinción entre modo usuario y modo
kernel. El modo usuario es el modo menos privilegiado, ya que no tiene acceso al hardware y solo tiene
acceso restringido a memoria. Cuando un programa como Word se ejecuta en modo usuario tiene unas
restricciones bien definidas, no tiene acceso a los dispositivos hardware y no podrá acceder a las zonas de
memoria que no estén asignadas específicamente a dicho aplicación. El modo privilegiado es el modo kernel y
las partes del sistema que se ejecutan en modo kernel, como los drivers de dispositivos o el Administrador de
memoria virtual, tienen acceso a todo el hardware y a toda la memoria.
Otros sistemas operativos como UNIX o Windows 3.1 también tienen modo privilegiado y no privilegiado,
pero lo que hace diferente a Windows 2000 es lo que se suele llamar como sistema operativo basado en
microkernel. La idea del concepto de microkernel puro es que todos los componentes del sistema operativo se
ejecuten en modo usuario excepto un componente (el microkernel) que se ejecutará en modo privilegiado, y es
el único que tendrá acceso al hardware.
La arquitectura microkernel proporciona configurabilidad y tolerancia a fallos, ya que un componente como el
Administrador de memoria virtual se ejecuta como un programa diferente y podrá ser sustituido por una
implementación diferente que exporte su misma interfaz. Así si el Administrador de memoria virtual falla el
sistema operativo puede ser reinicializado con efectos mínimos e incluso se puede sustituir el módulo que
provocó el fallo.
Una desventaja de este diseño es su bajo rendimiento, ya que cualquier interacción entre los módulos del
sistema requiere el envío de mensajes entre los módulos.
Para evitar este bajo rendimiento NT y Windows 2000 utilizan un diseño llamado microkernel modificado,
que se encuentra entre el microkernel puro y el diseño monolítico de los sistemas operativos tradicionales
(Dos, Windows 9X, Linux). En este nuevo diseño los entornos de sistemas operativos (DOS, Win16, Win32,
POSIX, OS/2) se ejecutan en modo usuario como procesos separados. Mientras que los subistemas básicos del
sistema operativo se ejecutan en modo kernel. Estos subsistemas no se ejecutan como procesos separados y
pueden comunicarse entre ellos con llamadas a funciones para un mejor rendimiento.
5
Los entornos de sistemas operativos implementan APIs de sistemas operativos diferentes, sin embargo el
grado de soporte de NT de cada entorno varia según el entorno. El soporte para DOS esta limitado a los
programas que no intentan acceder al hardware. Para OS/2 y POSIX se soporta las pequeñas funciones de
usuario y las características avanzadas de sus APIs.Win32 es el lenguaje de Windows 2000 y el único sobre el
cual Microsoft sigue trabajando y ampliando.
Algunos de los servicios que requieren los entornos de sistemas operativos de NT y Windows 2000 deben ser
realizados en modo kernel. Los servicios llamados en modo kernel son conocidos como API nativa de NT.
Esta API está formada por más de 150 funciones que son llamadas a través de las excepciones software. Estas
excepciones permiten cambiar de modo usuario a modo kernel y le dan al sistema operativo el control sobre
los datos que pasan entre los dos modos.
Las peticiones sobre la API nativa son ejecutadas por funciones en modo kernel, conocidas como servicios del
sistema. Para realizar estas funciones los servicios del sistema llaman a funciones de uno o más componentes
del Ejecutivo. Los componentes del Ejecutivo de Windows 2000 son:
Subsistema del Ejecutivo
Administrador de objetos
Monitor de referencia de seguridad
Administrador de memoria virtual
Administrador de E/S
Administrador de caché
Herramienta de llamada a procedimiento
local
Administrador de configuración
Administrador de procesos
Win32
Administrador de energía
Administrador de Plug and Play
Función
Administra los recursos e implementa un espacio de nombres
global.
Implementa el modelo de seguridad de Windows 2000.
Define los espacios de direcciones de los procesos y asigna
memoria física.
Sirve de interfaz entre las aplicaciones y los drivers de los
dispositivos
Implementa la caché global de archivos
Proporciona una comunicación eficiente entre procesos
Gestiona el registro
Exporta la API de procesos y hebras
Implementa funciones de paso de mensajes y gráficas de
Win32.
Controla el estado energético del sistema
Informa a los drivers de dispositivos de dispositivos que se
conectan o desconectan.
A continuación se muestra un esquema general de toda la arquitectura de Windows 2000:
6
7
Los componentes para acceder al hardware del Ejecutivo son funcionalidades básicas implementadas en el
microkernel (llamado kernel en Windows NT). El microkernel contiene el planificador de procesos y
administra el uso del Ejecutivo de las interrupciones hardware y software y exporta primitivas de
sincronización.
Los drivers de dispositivos y el microkernel usan el HAL (Hardware Abstraction Layer) para interactuar con
el hardware. El HAL exporta su propia API, que traduce los datos abstractos en comandos específicos del
procesador. Que Windows 2000 sea portable entre diferentes procesadores se debe a que el código especifico
para cada procesador esta restringido al HAL y al microkernel. De esta forma para portar Windows 2000 a un
nuevo procesador solo hace falta modificar el HAL y el microkernel. El resto de código de Windows 2000
escrito en C y C++ puede ser recompilado en el nuevo procesador.
2.2 − ENTORNOS DE SISTEMAS OPERATIVOS
Los subsistemas de entorno de sistemas operativos son implementados como sistemas clientes/servidor. Como
parte del proceso de compilación , las aplicaciones son asociadas en tiempo de "linkaje" con una API de
sistema operativo que exporta Windows 2000. De esta forma se conecta la aplicación con la DLL cliente del
entorno de sistema operativo correspondiente, que es la encargada de exportar la API de ese sistema
operativo. Por ejemplo, una aplicación Win32 es cliente del servidor del subsistema de entorno del sistema
operativo Win32, así que será linkada con la DLL cliente, incluyendo Kernel32.dll, gdl32.dll y user32.dll.
Una aplicación POSIX será linkada con la cliente DLL de POSIX, psxdll.dll.
Las DLL cliente pueden realizar operaciones sin sus servidores siendo ejecutadas como parte del proceso
cliente. En algunos casos las DLL cliente pueden implementar completamente la API sin realizar llamadas a
su servidor, en otros casos serán ayudadas por el servidor. La ayuda del servidor normalmente solo será
necesaria cuando se actualice información global sobre el entorno. Cuando la DLL cliente necesite ayuda del
servidor, la DLL envía un mensaje conocido como llamada a procedimiento local (LPC) al servidor. Cuando
el servidor completa la petición realizada y devuelve la respuesta, la DLL puede completar la operación y
devolver el control al cliente. Tanto la DLL cliente como el servidor deben usar la API nativa de Windows
2000 cuando sea necesario. Las APIs de los subsistemas de entorno de sistemas operativos amplían la API
nativa con funciones especificas de dicho sistema operativo.
El subsistema Win32
Es el más importante, ya que atiende no sólo a las aplicaciones nativas de Windows 2000, sino que para
aquellos programas no Win32, reconoce su tipo y los lanza hacia el subsistema correspondiente. En el caso de
8
que la aplicación sea MS−DOS o Windows de 16 bits (Windows 3.11 e inferiores), lo que hace es crear un
nuevo subsistema protegido. Así, la aplicación DOS o Win16 se ejecutaría en el contexto de un proceso
llamado VDM (Virtual DOS Machine, máquina virtual DOS), que no es más que un simulador de un
ordenador funcionando bajo MS−DOS. Las llamadas al API Win16 serían correspondidas con las homónimas
en API Win32. Microsoft llama a esto WOW (Windows On Win32). El subsistema soporta una buena parte
del API Win32. Así, se encarga de todo lo relacionado con la interfaz gráfica con el usuario (GUI),
controlando las entradas del usuario y salidas de la aplicación. Por ejemplo, un buen número de funciones de
las bibliotecas USER32 y GDI32 son atendidas por Win32, ayudándose del Ejecutivo cuando es necesario.
El subsistema POSIX.
La norma POSIX (Portable Operating System Interfaz for UNIX) fue elaborada por IEEE para conseguir la
portabilidad de las aplicaciones entre distintos entornos UNIX. La norma se ha implementado no sólo en
muchas versiones de UNIX, sino también en otros sistemas operativos como Windows 2000, VMS, etc. Se
trata de un conjunto de 23 normas, identificadas como IEEE 1003.0 a IEEE 1003.22, o también POSIX.0 a
POSIX.22, de las cuales el subsistema POSIX soporta la POSIX.1, que define un conjunto de llamadas al
sistema en lenguaje C. El subsistema sirve las llamadas interaccionando con el Ejecutivo. Se encarga también
de definir aspectos específicos de UNIX, como pueden ser las relaciones jerárquicas entre procesos padres e
hijos (las cuales no existen en el subsistema Win32, por ejemplo, y que por consiguiente no aparecen
implementadas directamente en el Ejecutivo).
El subsistema OS/2.
Igual que el subsistema POSIX proporciona un entorno para aplicaciones UNIX, este subsistema da soporte a
las aplicaciones de OS/2. Proporciona la interfaz gráfica y las llamadas al sistema; las llamadas son servidas
con ayuda del Ejecutivo.
2.3 − SERVICIOS DEL SISTEMA
Los servicios del sistema exportan la API nativa del modo kernel para que los módulos de modo usuario de
Windows 2000 puedan usarla. La API nativa es proporcionada para ser usada por los subsistemas de entorno,
bien sea Win32, POSIX o OS/2, pero nada impide a una aplicación no usar la API del subsistema de entorno y
acceder directamente a la API nativa. Sin embargo la API nativa no esta documentada aunque es muy similar
a la API de Win32 y no podría proporcionar privilegios o nuevas funciones a la aplicación.
2.4 − EJECUTIVO DE WINDOWS 2000
Los subsistemas del Ejecutivo de Windows 2000 se ejecutan en modo kernel y son los que realizan la mayor
parte de las funciones propias de un sistema operativo. El Ejecutivo consta de una serie de componentes
software, que se ejecutan en modo privilegiado, uno de los cuales es el núcleo. Dichos componentes son
totalmente independientes entre sí, y se comunican a través de interfaces bien definidas. Recordemos que en el
diseño se procuró dejar el núcleo tan pequeño como fuera posible y la funcionalidad del núcleo es mínima.
Como Windows 2000 no asigna los subsistemas del Ejecutivo a procesos diferentes estos subsistemas no
están en diferentes ficheros de imagen (ficheros ejecutables). El fichero en el que se encuentran todos los
subsistemas y el microkernel es ntoskrnl.exe excepto el subsistema Win32 que se encuentra en win32k.sys.
Windows 2000 carga ntoskrnl.exe durante el arranque del sistema en la mitad del mapa de memoria virtual
correspondiente al modo kernel.
A continuación se detalla brevemente cada uno de los subsistemas de Windows 2000:
Administrador de objetos: Se encarga de crear, destruir y gestionar todos los objetos del Ejecutivo. Hay
9
infinidad de objetos: procesos, subprocesos, ficheros, segmentos de memoria compartida, semáforos,
monitores, sucesos, etc. Los subsistemas de entorno (Win32, OS/2 y POSIX) también tienen sus propios
objetos. Por ejemplo, un objeto ventana es creado (con ayuda del administrador de objetos) y gestionado por
el subsistema Win32. La razón de no incluir la gestión de ese objeto en el Ejecutivo es que una ventana sólo
es innata de las aplicaciones Windows, y no de las aplicaciones UNIX o OS/2. Por tanto, el Ejecutivo no se
encarga de administrar los objetos relacionados con el entorno de cada sistema operativo concreto, sino de los
objetos comunes a los tres.
Administrador de procesos (Process Manager): Se encarga (en colaboración con el administrador de
objetos) de crear, destruir y gestionar los procesos y subprocesos. Una de sus funciones es la de repartir el
tiempo de CPU entre los distintos subprocesos. Suministra sólo las relaciones más básicas entre procesos y
subprocesos, dejando el resto de las interrelaciones entre ellos a cada subsistema protegido concreto. Por
ejemplo, en el entorno POSIX existe una relación filial entre los procesos que no existe en Win32, de manera
que se constituye una jerarquía de procesos. Como esto sólo es específico de ese subsistema, el administrador
de objetos no se entromete en ese trabajo y lo deja en manos del subsistema.
Administrador de memoria virtual (Virtual Memory Manager): Windows 2000 y UNIX implementan un
direccionamiento lineal de 32 bits y memoria virtual paginada bajo demanda. El VMM se encarga de todo lo
relacionado con la política de gestión de la memoria. Determina los conjuntos de trabajo de cada proceso,
mantiene un conjunto de páginas libres, elige páginas víctima, sube y baja páginas entre la memoria RAM y el
archivo de intercambio en disco, etc.
Herramienta de llamada a procedimiento local (LPC Facility): Este módulo se encarga de recibir y enviar
las llamadas a procedimiento local entre las aplicaciones cliente y los subsistemas servidores.
Administrador de entrada/salida (I/O Manager): Consta de varios subcomponentes: el administrador del
sistema de ficheros, el servidor de red, el redirector de red y los drivers de dispositivo del sistema.
Buena parte de su trabajo es la gestión de la comunicación entre los distintos drivers de dispositivo, para lo
cual implementa una interfaz bien definida que permite el tratamiento de todos los drivers de una manera
homogénea, sin preocuparse del funcionamiento específico de cada uno. Trabaja en conjunción con otros
componentes del Ejecutivo, sobre todo con el VMM..
Administrador de caché: Encargado de mejorar el acceso de E/S manteniendo los últimos datos del disco
referenciados en memoria central para poder realizar un acceso más rápido, y retrasando la actualización de
datos en el disco antes de escribir. El administrador de caches no se limita a gestionar unos cuantos buffers de
tamaño fijo para cada fichero abierto, sino que es capaz de estudiar las estadísticas sobre la carga del sistema y
variar dinámicamente esos tamaños de acuerdo con la carga. El administrador de caché trabaja conjuntamente
con el Administrador de memoria virtual y con los drivers del sistema de ficheros. La caché de Windows 2000
esta orientada a ficheros en vez de a bloques como lo es la de Windows 9X.
El monitor de referencias a seguridad: Este componente da soporte en modo privilegiado al subsistema de
seguridad, con el que interacciona. Su misión es actuar de alguna manera como supervisor de accesos, ya que
comprueba si un proceso determinado tiene permisos para acceder a un objeto determinado, y monitoriza sus
acciones sobre dicho objeto. De esta manera es capaz de generar los mensajes de auditorías. Soporta las
validaciones de acceso que realiza el subsistema de seguridad local.
El microkernel: Situado en el corazón de Windows 2000, se trata de un microkernel que se encarga de las
funciones más básicas de todo el sistema operativo: ejecución de subprocesos, sincronización multiprocesador
y manejo de las interrupciones hardware.
Para la ejecución de subprocesos Windows 2000 cuenta con un planificador que será comentado en el punto
10
3.4 mientras que los mecanismos de sincronización son comentados en el punto 3.3.
Capa de abstracción del hardware (HAL):. Es una capa de software incluida en el Ejecutivo que sirve de
interfaz entre los distintos drivers de dispositivo y el resto del sistema operativo. Microsoft quiso hacer NT
portable a lo largo de las diferentes plataformas de procesadores. Para poder alcanzar este objetivo, se separó
lo máximo posible el código especifico de cada procesador en un modulo dinámico y reemplazable, el HAL.
Con el HAL, los dispositivos se presentan al sistema operativo como un conjunto homogéneo con el cual
interacciona a través de un conjunto de funciones bien definidas. Estas funciones son llamadas tanto desde el
sistema operativo como desde los propios drivers. Permite a los drivers de dispositivo adaptarse a distintas
arquitecturas de E/S sin tener que ser modificados en gran medida. Además oculta los detalles hardware que
conlleva el multiprocesamiento simétrico de los niveles superiores del sistema operativo La capa de
abstracción de Hardware exporta un modelo de procesador común que permite ocultar las diferencias entre
cada CPU. Los drivers de dispositivos usan este modelo común en vez de cada procesador particular.
Win32: Es el subsistema encargado de las funciones de mensaje y gráficas de la API Win32.
Administrador de configuración: Encargado de administrar el registro y las funciones del registro de la API
de Win32. El administrador de configuración también exporta funciones para el Administrador de E/S, que las
utiliza para asignar recursos físicos para los drivers de dispositivos. El administrador de configuración
almacena esta información en el registro para detectar y prevenir conflictos entre recursos.
Por último las dos novedades dentro del Ejecutivo de Windows 2000 son:
Administrador de Plug and Play: responsable de avisar a los drivers de dispositivos y al administrador de
E/S cuando dispositivos Hardware son conectados o desconectados.
Administrador de energía: responsable de mantener el control del nivel de energía del ordenador,
permitiendo pasar a bajo consumo cuando sea posible.
Estos nuevos subsistemas trabajan principalmente con el Administrador de E/S y los drivers de dispositivos.
3 − DESCRIPCIÓN DEL EJECUTIVO
3.1 − OBJETOS DE WINDOWS 2000
Windows 2000 se basa en el diseño orientado a objetos, aprovechando así las facilidades que proporciona este
diseño para permitir a los procesos compartir recursos y datos, y proteger los recursos de accesos no
autorizados. Las principales características de este diseño son:
• Encapsulación: Los objetos están compuestos por atributos, que definen las propiedades del objeto y
contienen los datos del objeto, y por métodos o servicios, que nos permiten realizar operaciones con
los objetos. La única manera de acceder a los datos de un objeto es mediante la llamada a los servicios
del objeto, este tipo de acceso permite proteger los datos de los accesos no autorizados y de las
operaciones incorrectas.
• Objetos de clase e instancias: Un objeto de clase es una plantilla que define los atributos y servicios
de un objeto. El sistema operativo puede crear instancias de dicha clase cuando las necesite, por
ejemplo solo hay un objeto de clase proceso y habrá una instancia del objeto proceso para cada
proceso. Esto permite simplificar la creación y administración de objetos.
• Herencia: Esta característica no esta soportada a nivel de usuario pero es usada en el Ejecutivo. Y
permite que instancias de algunos objetos hereden propiedades de otros objetos. Por ejemplo si un
objeto directorio tiene la propiedad de compresión activada todos los objetos contenidos en dicho
directorio también tendrán dicha propiedad activada.
11
• Polimorfismo: Internamente Windows 2000 trabaja con un amplio conjunto de funciones para
manipular objetos de cualquier tipo, que cada función pueda manejar distintos tipos de objetos es el
polimorfismo. Sin embargo Windows 2000 no es completamente polimorfico pues existen muchas
APIs que son especificas para algunos tipos de objetos.
No todas las entidades de Windows 2000 son objetos sino que solo son usados cuando los datos son
accesibles en modo usuario o cuando el acceso a los datos es compartido o restringido. Entre las entidades
representadas como objetos se encuentra los ficheros, procesos, hebras, semáforos, temporizadores o
ventanas. Windows 2000 crea y administra todos los objetos de la misma manera a través del administrador de
objetos. El administrador de objetos es el responsable de crear y destruir objetos y de garantizar el acceso a los
servicios y datos de los objetos.
Cada objeto del Ejecutivo, también llamados objetos del kernel para distinguirlos de los objetos del nivel de
usuario, es colocado en memoria por el kernel y solo es accesible por el kernel. Algunos atributos de los
objetos son comunes a todos los objetos como el nombre de los objetos, parámetros de seguridad mientras que
otros atributos son particulares a cada objeto. Estas estructuras de datos de los objetos del kernel son solo
accesibles por el kernel de forma que si alguna aplicación necesita acceder deberá hacerlo a través del
conjunto de operaciones sobre objetos soportadas por el ejecutivo.
Cuando se crea un objeto, a la aplicación que realizo la petición para crear este objeto se le asigna un
manejador que referencia a dicho objeto. Este manejador puede ser usado por todas las hebras de este proceso
para realizar llamadas a funciones Win32 para manipular el objeto.
Cada objeto tendrá un Descriptor de Seguridad (DS) que proporciona información sobre la seguridad asociada
al objeto, de esta forma se podrá indicar que usuarios o procesos pueden acceder a dicho objeto y que
operaciones podrá realizar sobre dicho objeto. En Windows 2000 los objetos pueden tener nombre o no, los
objetos sin nombre serán creados con el propósito de que no sean por procesos diferentes a los que creo el
objeto.
Las dos principales categorías de objetos usadas por el microkernel son:
• Objetos de tratamiento. Controlan el tratamiento y sincronización de operaciones del sistema. Serán
descritos en el punto 3.3
• Objetos de control: permiten el control de las operaciones del microkernel sin afectar a la
planificación ni sincronización. Los objetos de control del microkernel son:
Objeto
Función
Utilizada para interrumpir la ejecución de una hebra y realizar la
Asynchronous Procedure Call
llamada a un procedimiento en modo asincrono.
Usada para comunicar el origen de la interrupción con una rutina
de servicio de interrupciones mediante una entrada en la tabla de
Interrupt
tratamiento de interrupciones (Interrupt Dispatch Table). Cada
procesador tiene una tabla para tratar las interrupciones ocurridas
en ese procesador.
Contiene el espacio de direcciones virtual e información de
Process
control para la ejecución del conjunto de hebras.
Usada para medir la distribución del tiempo de ejecución de un
Profile
bloque de código.
Windows 2000 no es un sistema operativo orientado a objetos por completo, ya que no esta implementado en
un lenguaje orientado a objetos y las estructuras de datos que están completamente en el Ejecutivo no son
representadas como objetos.
12
Un entidad muy relacionada con los objetos y que mencionaremos durante el resto del trabajo es el de
manejador (handle).
Cuando un proceso crea o abre un objeto por su nombre, recibe un manejador que representa el acceso a ese
objeto. Acceder a un objeto por medio de su manejador es mucha más rápido que utilizar su nombre puesto
que el administrador de objetos puede ahorrarse la localización y búsqueda del objeto y utilizarlo
directamente. Todos los procesos de modo usuario deben poseer un manejador a un objeto antes de que sus
hebras puedan usarlo.
Los manejadores actúan como punteros indirectos a los recursos del sistema, esta indirección evita que los
programas de aplicación manipulen directamente las estructuras de datos del sistema.
3.2 − ADMINISTRADOR DE PROCESOS
El diseño de los procesos en Windows 2000 esta marcado por la necesidad de soportar diferentes sistemas
operativos, algunas de las diferencias entre los diferentes procesos soportados por los subsistemas Win32,
POSIX y OS/2 pueden ser:
• Como son llamados los procesos
• Como se protegen los recursos de los procesos
• Que mecanismos se usan para la comunicación y sincronización entre procesos.
• Como los procesos se refieren a otros procesos
Ante esta variedad de diferencias la estructura de procesos y servicios que ofrece Windows 2000 pretende ser
simple y de propósito general, de forma que cada subsistema de sistema operativo puede gestionar su
estructura de procesos e implementación de forma particular. Las características más importantes de los
procesos de Windows 2000 son:
• Los procesos de Windows 2000 son implementados como objetos.
• Un proceso puede estar compuesto de una o más hebras.
• Tanto los objetos de procesos como de hebras tiene capacidades de sincronizarse.
A cada proceso que se crea Windows 2000 le asigna un token de seguridad de acceso, llamado token primario
del proceso. Cuando un usuario entra en el sistema, se crea un token de acceso que incluye un identificador de
seguridad para el usuario. Cada proceso que se crea por este usuario tendrá una copia de este token de acceso.
Este token será usado por Windows 2000 para validar los permisos de cada usuario para acceder a objetos
seguros y realizar funciones restringidas en el sistema o en los objetos seguros
Asociados a cada proceso también existen unos bloques que contienen el espacio de direcciones virtual
asignado a este proceso. El proceso no puede modificar directamente estas estructuras y solo lo podrá realizar
el Administrador de Memoria Virtual.
Finalmente, cada proceso tiene una tabla de objetos con manejadores a otros objetos utilizados por este
proceso. Existirá un manejador por cada hebra del proceso, en la siguiente figura el proceso tiene asociada una
hebra, un manejador de un fichero y un objeto sección correspondiente a una zona de memoria compartida.
13
3.2.1 − Objetos proceso y hebra
La estructura de orientación a objetos de Windows 2000 facilita el desarrollo de procesos, usando dos tipos de
objetos relacionados con los procesos: procesos y hebras. Un proceso se considera una entidad
correspondiente a una tarea o aplicación del usuario que tiene unos recursos asignados como zonas de
memoria o ficheros. Por el contrario una hebra es una unidad de trabajo que se ejecuta secuencialmente y que
puede ser interrumpida para asignar el procesador a otra hebra.
Cada proceso esta definido por una serie de atributos y encapsula unos métodos o servicios. La única forma de
que un proceso ejecute un servicio es invocando el servicio a través del mensaje apropiado. Cuando Windows
2000 crea un nuevo proceso se usa la clase definida como plantilla para los objetos procesos de Windows
14
2000 y genera un objeto instancia de dicha clase, dando los valores adecuados a cada atributo.
15
16
La siguiente tabla da una breve descripción de cada uno de los atributos del objeto proceso:
Atributo del objeto proceso
Process ID
Security Descriptor
Base priority
Default Processor affinity
Quota limits
Execution time
I/O counters
VM operation counters
Exception/debugging ports
Exit status
Significado
Valor asignado al proceso que lo identifica de forma única en el sistema
operativo.
Describe quien ha creado el objeto, quien puede acceder o usar el objeto
y quien no puede usarlo
La prioridad base para las hebras del proceso
Los procesadores por defecto sobre los que puede ejecutarse la hebra.
El número máximo de memoria del sistema paginada y no paginada,
tamaño del fichero de paginación y el tiempo de procesador que puede
usar un proceso del usuario
El tiempo total consumido por todas las hebras del proceso.
Variables que contienen el numero y tipo de operaciones de E/S
realizadas por las hebras del proceso.
Variables que contienen el numero y tipo de operaciones sobre memoria
virtual realizadas por las hebras del proceso.
Canales de comunicación entre procesos a los cuales el administrador
de procesos envía un mensaje cuando alguno de las hebras del proceso
produce una excepción
Causas por las que puede finalizar un proceso.
Para poder ejecutarse un proceso de Windows 2000 debe tener por lo menos una hebra, esta a su vez puede
crear otras muchas hebras y que podrían ser ejecutadas en paralelo en un sistema multiprocesador.
Los atributos del objeto hebra son:
Atributo del objeto hebra
Thread ID
Thread context
Dynamic priority
Base priority
Thread Processor affinity
Thread execution time
Alert Status
Suspension count
Impersonation token
Termination port
Significado
Valor asignado a la hebra que lo identifica de forma única cuando
realiza llamadas al servidor.
Conjunto de valores que definen el estado de ejecución de la
hebra.
La prioridad de ejecución de la hebra en ese instante.
El limite inferior del atributo Dynamic priority para las hebras
El conjunto de procesadores sobre los que la hebra puede
ejecutarse, será un subconjunto del valor Default Processor
affinity del objeto proceso.
El tiempo total que la hebra se ha ejecutado en modo usuario y
modo kernel.
Flag que indica cuando la hebra debería ejecutar una llamada a
procedimiento asincrono.
El número de veces que la ejecución de la hebra ha sido
suspendida.
Token de acceso temporal que permite a una hebra realizar
operaciones en nombre de otro proceso (usado por los subsistemas
de entorno)
Canal de comunicación entre procesos al cual el administrador de
procesos envía un mensaje cuando la hebra finaliza (usado por los
17
Thread exit status
subsistemas de entorno).
Causas por las que puede finalizar la hebra.
Algunos de estos atributos son derivados del objeto proceso como Thread Processor affinity.
3.2.2 − Multiprocesos
Windows 2000 soporta concurrencia en la ejecución de los procesos gracias a que las hebras de diferentes
procesos pueden ser ejecutadas concurrentemente y en caso de encontrarnos en un sistema multiprocesador las
hebras de un mismo proceso pueden ejecutarse concurrentemente en diferentes procesadores. Las hebras de
un mismo proceso podrán comunicarse entre ellas a través del espacio de memoria compartida y de los
recursos compartidos del proceso, la comunicación entre hebras de diferentes procesos podrá realizarse a
través de la creación de un espacio de memoria por ambos procesos.
3.2.3 − Estados de las hebras
Las hebras en Windows 2000 tienen los siguientes estados:
• Preparado: La hebra esta esperando para ejecutarse. El planificador del microkernel tiene en cuenta
todas las hebras preparadas y las ejecuta por orden de prioridad.
• Activo: Una hebra en estado activo ya ha sido seleccionada para ejecutarse en un procesador en
particular. La hebra esperará en este estado hasta que el procesador este disponible. Si la prioridad de
la hebra es suficientemente alta se expulsará a la hebra que se está ejecutando a favor de la hebra en
estado activo. Sino, la hebra esperará hasta que la hebra que se esta ejecutando finalice su quantum.
• Ejecución: Una vez que el planificador efectúa un cambio de contexto para una hebra, esta hebra
pasa al estado ejecución y continua su ejecución hasta que el microkernel la interrumpa para ejecutar
una hebra de mayor prioridad, finalice su quantum, finalice o pase voluntariamente al estado de
espera.
• Espera: Una hebra entra en el estado espera de varias maneras: de forma voluntaria para sincronizar
su ejecución, porque el sistema operativo (por ejemplo el sistema de E/S) le haga esperar o cuando el
subsistema de entorno hace que la hebra se suspenda a si misma. Cuando finaliza la espera, volverá a
ejecutarse o pasará al estado preparado, según su prioridad.
• Transición: Una hebra entra en este estado después de esperar si esta preparada para ejecutarse pero
sus recursos no están disponibles. Por ejemplo, la pila de la hebra puede estar pagina fuera de
memoria. Cuando el recurso esta disponible, la hebra pasa a estado preparado.
• Terminado: Una hebra puede finalizar por si misma, por otra hebra o por la finalización de su
proceso padre. Una vez terminada el objeto hebra puede ser eliminado o mantenido por el ejecutivo
para una reinicialización futura.
18
3.2.4 − Soporte para los subsistemas de entorno
El propósito para soportar procesos y hebras para distintos sistemas operativos produce que Windows 2000
deba soportar las estructuras particulares de procesos y hebras de cada sistema operativo. Es responsabilidad
de cada subsistema de entorno trabajar sobre los procesos y hebras de Windows 2000 para emular las
estructuras correspondientes de cada sistema operativo.
La creación de un proceso comienza por la solicitud de una aplicación de un nuevo proceso. Esta petición es
enviada por la aplicación al correspondiente subsistema de entorno de sistema operativo. A continuación el
subsistema realizará la petición al Ejecutivo, este crea un objeto proceso y devuelve un manejador a dicho
objeto al subsistema. Cuando Windows 2000 crea un proceso no se crea automáticamente una hebra. En el
caso de Win32 y OS/2 un nuevo proceso siempre es creado conjuntamente con una hebra, así que estos
subsistemas realizan una nueva petición al Ejecutivo para crear una hebra para el nuevo proceso y el
subsistema recibe un manejador al nuevo objeto hebra.
En el caso de las aplicaciones Windows de 16 bits y POSIX no se soportan hebras, por tanto el subsistema
obtiene una hebra para el nuevo proceso pero solo devuelve información sobre el proceso a la aplicación
quedando la hebra oculta para la aplicación.
Cuando se crea un nuevo proceso en Win32 y OS/2, el nuevo proceso hereda muchos de los atributos del
proceso que lo creo. Sin embargo en el entorno de Windows 2000 esta herencia se realiza de forma indirecta.
La aplicación realiza la petición de un nuevo proceso al subsistema de entorno y un proceso de este
subsistema la envía al Ejecutivo. Como lo que se desea es que el nuevo proceso herede del primer proceso y
no del segundo, Windows 2000 permite al subsistema especificar el padre del nuevo proceso. De esta forma el
19
proceso hereda de su padre el token de acceso, los limites de cuota, la prioridad base y los procesadores sobre
los que se puede ejecutar.
3.2.5 − Soporte para el multiprocesamiento simétrico (SMP)
Windows 2000 soporta una configuración multiprocesador de forma que las hebras de cualquier proceso,
incluyendo las del ejecutivo, puedan ejecutarse en cualquier procesador. Si no ha y problemas en la
concurrencia el microkernel asigna una hebra preparada al próximo procesador disponible. Asegurándose de
que no hay ningún procesador sin trabajo o ejecutando una hebra con una prioridad menos cuando una con
una superioridad mayor esta esperando. Múltiples hebras de un mismo procesador podrán ejecutarse
simultáneamente en múltiples procesadores.
El planificador intentara asignar una hebra preparada al último procesador en que se ejecuto para aprovechar
los datos disponibles en caché. También es posible restringir la ejecución de una hebra a unos determinados
procesadores.
3.3 − MECANISMOS DE CONCURRENCIA EN WINDOWS 2000
Windows 2000 proporciona sincronización entre hebras como parte de la arquitectura de objetos, el
mecanismo utilizado por el Ejecutivo de Windows 2000 para implementar la sincronización es la familia de
objetos de sincronización:
• Process
• Thread
• File
• Console Input
• File change notification
• Mutex
• Semaphore
• Event
• Waitable timer
Los cuatro primeros objetos tienen otros usos además de ser usado para la sincronización de hebras, mientras
que el resto están diseñados expresamente para este uso.
Cada objeto de sincronización puede estar estado señalado o no señalado. Una hebra no puede continuar su
ejecución en un objeto no señalado, y será liberada cuando el objeto pase a estado señalado. Cuando un objeto
pasa a estado señalado el Ejecutivo de Windows 2000 libera una o varias hebras que estén esperando en el
objeto de sincronización.
A continuación se explica le significado de cada objeto y su funcionamiento:
Objeto
Process
Thread
File
Definición
En estado señalado cuando
Efecto en las hebras
en espera
Llamada a un programa, incluyendo el
espacio de direcciones y los recursos Termina su última hebra
Todas liberadas.
necesarios para ejecutar el programa.
Una entidad ejecutable dentro de un
Termina la hebra
Todas liberadas.
proceso.
Instancia de un fichero abierto o
La operación de E/S finaliza. Todas liberadas.
dispositivo de E/S
20
Console Input
File Change
Notificatión
Buffer de una ventana de texto (ej. ,
usado para gestionar la E/S de una
aplicación MS−DOS
La entrada estándar esta
disponible para ejecutarse
Una hebra liberada
Aviso de cualquier cambio en el
sistema de ficheros.
Sucede un cambio en el
sistema de ficheros que
coincide con el criterio del
filtro de este objeto.
Una hebra liberada
Una hebra libera el mutex
Una hebra liberada
El contador del semáforo
llega a cero
Todas liberadas.
Una hebra crea el evento
Todas liberadas.
Mecanismo que proporciona exclusión
mutua para los entornos Win32 y OS/2
Contador que regula el número de
Semaphore
hebras que pueden usar un recurso
Aviso de que un evento del sistema ha
Event
ocurrido
Contador que registra el paso del
Waitable Timer
tiempo
Mutex
Se alcanza el tiempo fijado o
Todas liberadas.
expira el intervalo de tiempo
Las filas sombreadas corresponden a objetos cuyo único propósito es servir de mecanismo de sincronización.
Los objetos Console Input y File change notification son nuevos en Windows 2000 respecto a NT 4.0
3.4 − PLANIFICADOR DE WINDOWS 2000
Windows 2000 implementa una planificación con un sistema flexible de niveles de prioridad que incluye
planificación round−robin en cada nivel y en cada nivel variación dinámica de la prioridad según la actividad
de cada hebra.
Prioridad de procesos y hebras
Las prioridades en Windows 2000 están organizadas en dos bandas o clases: tiempo real o variable. Cada una
de estas bandas contiene 16 niveles de prioridad. Las hebras que requieren una atención inmediata se
encontraran en la banda de tiempo real, que incluye funciones para comunicaciones y tareas en tiempo real.
Evidentemente las hebras con prioridad en tiempo real tendrán preferencia sobre el resto de hebras, en un
sistema con un solo procesador si una hebra llega a preparado y tiene una prioridad mayor que la que esta
ejecutándose, la de menor prioridad tendrá que abandonar el procesador en beneficio de la hebra con mayor
prioridad.
Las prioridades son gestionadas de manera diferente en cada una de las bandas. En la banda de tiempo real
todas las hebras tienen una prioridad fija que nunca cambia y todas las hebras se encuentran en la cola
round−robin de un determinado nivel de prioridad. Mientras que en la banda de prioridad variable las hebras
comienzan con una prioridad y después puede variar su prioridad arriba o abajo durante el ciclo de vida de la
hebra. Para cada nivel de prioridad existe una cola FIFO pero un proceso puede cambiar a otra cola de
prioridad dentro de la banda de prioridad. Sin embargo una hebra de nivel 15 no podrá alcanzar el nivel 16 o
cualquier nivel de la banda de tiempo real.
21
La prioridad de una hebra en la banda de prioridad variable esta determinado por dos valores: la prioridad
base del proceso y la prioridad base de la hebra, ambos valores son atributos de los objetos hebra y proceso, el
atributo del valor proceso puede tomar cualquier valor entre 0 y 15. Como se vio en la sección 3.2.1 cada
objeto hebra asociado a un objeto proceso tiene un atributo prioridad base que indica la prioridad base de la
hebra relativa a la prioridad del objeto proceso. La prioridad base de la hebra puede ser igual a la del proceso
o 2 niveles por abajo o por arriba, por ejemplo si la prioridad base de un proceso es 4 y una de sus hebras tiene
como prioridad base −1, la prioridad inicial de dicha hebra será 3.
Una vez la hebra de la clase de prioridad variable ha sido activada, su prioridad actual, llamada prioridad
dinámica de la hebra, fluctuara entre los limites establecidos. La prioridad dinámica nunca caerá por debajo
del nivel inferior de la prioridad base de la hebra y nunca pasara de 15
22
Si una hebra es interrumpida por que ha usado su quantum, el Ejecutivo de Windows 2000 reduce su
prioridad. Si la hebra es interrumpida para esperar un evento E/S, el Ejecutivo aumentará su prioridad. Por
tanto las hebras con mayor cantidad de E/S tenderán a tener una mayor prioridad y en especial las que realicen
operaciones interactivas (ej. esperar la pulsación de una tecla) que tendrán las prioridades más altas dentro de
la clase de prioridad variable.
3.5 − ADMINISTRADOR DE MEMORIA DE WINDOWS 2000
El administrador de memoria virtual de Windows 2000 controla como está repartida y asignada la memoria y
como se realiza la paginación. El administrador de memoria virtual proporciona un conjunto de servicios del
sistema que permite a los subsistemas de entorno reservar y liberar memoria virtual, compartir memoria entre
23
procesos, poner archivos en memoria, enviar las páginas virtuales al disco, recoger información acerca de
rangos de páginas virtuales, cambiar su protección y bloquearlas en memoria.
El administrador de memoria esta diseñado para funcionar sobre gran variedad de plataformas y usa unos
tamaños de pagina comprendidos entre un rango que van desde 4 Kbytes hasta 64 Kbytes. Con esto puede
funcionar sobre plataformas como Intel, PowerPC y MIPS que usan 4096 bytes (4 Kbytes) por página, y
plataformas como DEC Alpha que usan 8192 bytes por página.
Mapa de direccionamiento Virtual de Windows 2000
Cada proceso de usuario de Windows 2000 tiene un espacio de direccionamiento de 32 bits, permitiendo 4
Gbytes de memoria por proceso. Por defecto, una parte de esta memoria esta reservada para el sistema
operativo, asi que el usuario tiene en realidad 2 Gybytes de espacio de direccionamiento disponible y todos los
procesos comparten los mismos 2 Gbytes de espacio de sistema. Hay una opción que permite incrementar el
espacio de usuario hasta 3 Gbytes, dejando sólo un Gbyte para el Sistema operativo. La documentación de
Windows 2000 indica que esta característica está destinada para soportar gran cantidad de aplicaciones con
gran consumo de memoria sobre servidores con multiples gigabytes de RAM, y que el uso de este gran
espacio de direccionamiento puede mejorar drasticamente el funcionamiento para aplicaciones como las de
ayuda a la toma de decisiones o las de uso intensivo de datos.
La figura muestra el espacio de memoria virtual por defecto para un proceso de usuario.
24
El espacio de memoria virtual por defecto para un proceso de usuario (figura anterior) consta de estas cuatro
regiones
• De 0x00000000 a 0x0000FFFF: Región reservada para ayudar a los programadores a cazar las
asignaciones de puntero nulo (NULL).
• De 0x00010000 a 0x7FFEFFFF: Espacio de direcciones disponible para el usuario. Este espacio esta
dividido en páginas que pueden cargarse en memoria principal.
• De 0x7FFF0000 a 0x7FFFFFFF: Una página de reserva inaccesible para el usuario. Esta página
hace mas fácil para el sistema comprobar las referencias de punteros fuera de rango. Podríamos decir
que esta página es una página vigía para los asignaciones de memoria erróneas.
25
• De 0x80000000 a 0xFFFFFFFF: Espacio de direcciones del sistema. Este proceso de 2 Gbytes se
utiliza para el Ejecutivo de Windows 2000, el microkernel, y los drivers de dispositivos.
Paginación de Windows 2000
Cuando se crea un proceso, puede en un principio hacer uso del espacio de usuario entero de 2 Gbytes (menos
128 Kbytes, 64 Kbytes para los punteros a NULL y 64 Kbytes para la página vigía). Este espacio esta dividido
en páginas de tamaño fijo, cada una de las cuales pueden ser llevadas a memoria principal.
Para reservar memoria se sigue un enfoque opcional en dos fases: las aplicaciones primero deber reservar
espacio de memoria y des pues confirmar (o comprometer) el almacenamiento en dicho espacio de
direcciones. En la práctica, para simplificar la utilización de las páginas, cada página puede estar en los tres
estados siguientes:
• Disponible: Páginas que no están siendo actualmente utilizadas por este proceso.
• Reservada: Un conjunto de páginas continuas que el administrador de memoria virtual reserva para
un proceso pero que no cuenta como cuota de memoria del proceso hasta que es utilizada. Cuando un
proceso necesita escribir en memoria, parte de esta memoria reservada es utilizada por el proceso.
• Comprometida: Páginas que el administrador de memoria virtual ha colocado en un espacio
reservado de su fichero de paginación (ej., el fichero de disco en el que escribe las páginas cuando son
borradas de memoria principal).
La diferencia entre memoria reservada y comprometida es útil porque minimiza la cantidad de espacio en
disco reservado para cada proceso en particular, manteniendo este espacio de disco libre para otros procesos;
y además permite que una hebra o proceso declare una cantidad de memoria que puede ser rápidamente
liberada y repartida cuando se necesite.
El conjunto de esquemas de dirección internos usados por Windows 2000 está distribuido de forma variable.
Cuando un proceso es activado por primera vez, se le asigna un cierto número de marcos de página de
memoria principal como su espacio de trabajo. Cuando un proceso referencia a una página que no está en
memoria, una de las páginas residentes en memoria del proceso es intercambiada, sale de memoria, y la nueva
página entra en memoria. El espacio de trabajo de los procesos activos es ajustado usando las siguientes
convenciones generales:
Cuando la memoria principal está llena, el administrador de memoria virtual permite que el espacio residente
en memoria de los procesos activos aumente. Hacer esto, cuando ocurre un fallo de página, supone que una
nueva página sea llevada a memoria pero la página vieja, la que está en memoria, no se intercambia por la
nueva, y como resultado de esto se incrementa el espacio de memoria de ese proceso por una página.
Cuando la memoria escasea, el administrador de memoria virtual recupera memoria para el sistema moviendo
las páginas menos usadas recientemente fuera del espacio de memoria de los procesos activos, reduciendo así
el tamaño de este espacio residente en memoria.
3.6 − ADMINISTRADOR DE ENTRADA/SALIDA DE WINDOWS 2000
El administrador de entrada/salida es el responsable de la entrada y salida del sistema operativo y proporciona
una única interfaz que puede ser usada por todo tipo de drivers.
El administrador de entrada/salida consiste de cuatro módulos:
26
• Administrador de caché: El administrador de caché se encarga de gestionar la caché del subsistema
de entrada/salida. El administrador de caché proporciona un servicio de caché en memoria principal
para todos los sistemas de ficheros y componentes de red. Puede incrementar y decrementar
dinámicamente el tamaño de la caché dedicada ha una actividad particular a medida que varia la
cantidad de memoria física disponible. El administrador de caché incluye dos servicios para
incrementar el rendimiento del sistema:
• Escritura perezosa (Lazy write): El sistema guarda las actualizaciones solo en la caché y no en el
disco. Más tarde, cuando el uso del procesador sea bajo, el administrador de caché escribirá los
cambios en el disco.
• Entrega perezosa (Lazy commit): es similar a la escritura perezosa para procesamiento de
transacciones. En vez de marcar inmediatamente una transacción como finalizada correctamente, el
sistema guarda en caché la información entregada y más tarde la escribe en el log del sistema de
fichero mediante un proceso en segundo plano.
• Drivers del sistema de ficheros: El administrador de entrada/salida trata a los drivers de sistema de
ficheros como cualquier otro driver de dispositivo y envía los mensajes para cada volumen al driver
software apropiado a ese dispositivo.
• Drivers de Red: Windows 2000 incluye capacidades de red integradas y soporte para aplicaciones
distribuidas.
• Drivers de dispositivos hardware: Estos drivers acceden a los registros hardware de los periféricos a
través de puntos de entrada en librerías dinámicas del Ejecutivo de Windows 2000. Hay un conjunto
de estas rutinas para capa plataforma soportada por Windows 2000. Dado que los nombres de las
rutinas son los mismos para todas las plataformas, el código fuente de los drivers para Windows 2000
será portable entre diferentes procesadores.
27
Entrada/salida síncrona y asíncrona
Windows 2000 ofrece dos modos de operaciones de entrada/salida: síncrono y asíncrono. El modo asíncrono
se usará siempre que sea posible para optimizar el rendimiento de las aplicaciones. Mediante la entrada/salida
asíncrona una aplicación inicia una operación de entrada/salida y puede continuar ejecutándose mientras se
satisface la petición de entrada/salida. Con entrada/salida síncrona la aplicación se bloquea hasta que se
complete la operación de entrada/salida.
La entrada/salida asíncrona es más eficiente, desde el punto de vista la hebra, porque permite que la hebra
continúe en ejecución mientras la operación de entrada/salida permanece en la cola de espera de entrada/salida
y posteriormente es realizada. Sin embargo, la aplicación que invocó la operación de entrada/salida asíncrona
necesita determinar cuando la operación se realizó. Windows 2000 proporciona cuatro técnicas para
comunicar que la operación de entrada/salida se ha completado:
• Señalando un objeto dispositivo del kernel: En esta aproximación, un indicador asociado con un
objeto dispositivo se activa cuando una operación sobre ese objeto se completa. La hebra que invoca
la operación de entrada/salida puede continuar la ejecución hasta que llegue el punto donde debe parar
hasta que la operación de entrada/salida finalice. En este punto, la hebra esperará hasta que la
operación finalice, y entonces continuará. Esta técnica es simple y fácil de usar pero no es apropiada
para manejar múltiples peticiones de entrada/salida. Por ejemplo, si una hebra necesita realizar
múltiples acciones simultáneamente en un solo fichero, como leer de una parte y escribir en otra parte
del fichero, con esta técnica, la hebra no podría distinguir entre la finalización de la lectura y de la
escritura. Simplemente entendería que una operación de entrada/salida sobre ese fichero ha finalizado.
• Señalando un objeto evento del kernel: Esta técnica permite múltiples peticiones de entrada/salida
simultaneas sobre un único dispositivo o fichero. La hebra crea un evento para cada petición.
Después, la hebra puede esperar a una única de estas peticiones o a toda la colección de peticiones.
• Entrada/salida alertable: Esta técnica hace uso de una cola asociada con una hebra, conocida como
cola de llamada a procedimiento asíncrono (APC). En este caso, la hebra realiza las peticiones de
entrada/salida, y el administrador de entrada/salida ubica los resultados de estas peticiones en la cola
APC de la hebra que realizó la petición.
• Puertos de finalización de entrada/salida: Esta técnica se usa en Windows 2000 Server para
optimizar el uso de hebras. En esencia, un grupo de hebras está disponible para el uso de forma que
no es necesario crear una nueva hebra para manejar una nueva petición.
3.7 − El Sistema de archivos de Windows 2000
Windows 2000 soporta varios sistemas de ficheros, los más importantes son FAT−16, FAT−32 y NTFS
(Sistema de ficheros de NT). La FAT−16 es el sistema de ficheros de MS−DOS. Usa 16 bits de direcciones de
disco, cuyas particiones en disco no son más grandes de 2 Gb. La FAT−32 usa 32−bits de direcciones en disco
y soporta particiones de disco de hasta 2 TB. NTFS es el sistema de ficheros desarrollado específicamente por
Windows NT y que fue mejorado para Windows 2000 siendo ahora NTFS 5. Usa 64 bits de direcciones en
disco y puede (teóricamente) soportar particiones de hasta 264 bits, aunque otras consideraciones lo limiten a
tamaños más pequeños. Windows 2000 también soporta sistemas de ficheros de solo lectura para CD−ROMs
y DVDs. Y es posible tener acceso a diversos tipos de sistemas de ficheros al mismo tiempo.
3.7.1 − Principales características de NTFS 5
Las principales caracteristicas de NTFS son:
• Recuperabilidad: Uno de los principales requisitos del nuevo sistema de ficheros de Windows 2000
era la capacidad de recuperarse de caídas del sistema y fallos de disco. En estos casos NTFS es capaz
28
de reconstruir volúmenes de disco y dejarlos en un estados consistente. Para realizar esto se utiliza un
modelo transaccional para cambios en el sistema de ficheros; cada cambio significante es tratado
como una operación atómica que es realizada por completo o no. Cada transacción que estaba
realizándose en el momento del fallo es deshecha por completo. Además, NTFS usa almacenamiento
redundante para datos críticos del sistema, de forma que un fallo en un sector del disco no produzca la
perdida de los datos que describen la estructura y estado del sistema de ficheros.
• Seguridad: NTFS usa el modelo de objetos de Windows 2000 para reforzar la seguridad. Un fichero
abierto es implementado como un objeto fichero con un descriptor de seguridad que define los
atributos de seguridad.
• Discos y ficheros grandes: NTFS soporta discos y ficheros muy grandes más eficientemente que el
otros sistemas de ficheros como FAT.
• Múltiples cadenas de datos: En NTFS es posible definir múltiples cadenas de datos para un único
fichero. De esta forma cada fichero tiene dos componentes: los datos de fichero y los recursos que
contiene información sobre el fichero. NTFS trata estos dos componentes como dos cadenas de datos.
• Facilidades de indexación: NTFS asocia una colección de atributos con cada fichero. El conjunto de
descriptores de fichero en el administrador del sistema de ficheros esta organizado como una base de
datos de forma que los fichero pueden ser indexados por cualquier atributo.
3.7.2 − Novedades de NTFS 5
Las principales novedades de la versión 5 del sistema de ficheros de NTFS son:
• Pueden especificarse cuotas de disco por usuario, lo que proporciona la capacidad de limitar el
espacio de almacenamiento del usuario.
• Los descriptores de seguridad (listas de control de acceso, ACL) se almacenan una única vez, aunque
puede hacerse referencia a ellos desde varios archivos, ahorrando espacio en disco.
• Se encuentra disponible soporte nativo para propiedades, así como el indexado general para estas
propiedades. Las propiedades se almacenan natívamente como flujos NTFS, lo que permite una
consulta rápida.
• Puntos de búsqueda indirecta, lo que habilita la implementación de enlaces simbólicos, puntos de
montado para volúmenes de sistemas de archivos arbitrarios y almacenamiento remoto para la
Gestión de almacenamiento jerárquico (HSM).
• El soporte para archivos con pocos datos significa que pueden crearse archivos o ampliarlos hasta un
gran tamaño sin tener que reservar espacio en el disco en el momento de su ampliación. En vez de
ello, la asignación del disco se retrasa hasta que se especifica una operación de escritura.
• Es posible efectuar el seguimiento de enlaces distribuidos por medio de identificadores únicos que
pueden asignar sea los archivos o directorios. Esta función mejora el método empleado hasta ahora de
almacenar una referencia a un archivo. Cambiar el nombre del archivo de destino rompe los enlaces
de ese directorio y todos los archivos y directorios situados por debajo de él. NTFS 5 admite la
creación y asignación de identificadores únicos para los archivos y directorios y garantiza que
mantendrán ese identificador.
• Se ha añadido la capacidad de agregar espacio a volúmenes NTFS sin tener que reinicializar el
ordenador.
• Puede evitarse la descompresión y compresión de los datos de archivos comprimidos transmitidos por
la red, lo que reduce la sobrecarga de CPU en el servidor.
3.7.3 − Conceptos fundamentales
Los nombres de ficheros individuales en NTFS están limitados a 255 caracteres y los paths de directorio
completos a 32,767 caracteres. Los nombres de ficheros están en Unicode, permitiendo que los diferentes
países que no usan el alfabeto latino ( ej: Grecia, Japón, India, Israel) escribir los nombres de ficheros en sus
lenguajes nativos. NTFS soporta nombres sensibles a las mayúsculas (casa es diferente de Casa y de CASA).
29
Aunque la API WIN32 no soporta nombres sensibles a las mayusculas para nombres de ficheros y de
directorios, así que esta ventaja se pierde para los programas que usa la API WIN 32.
Un fichero NTFS no es exactamente una secuencia linear de bytes, como son los ficheros de FAT−32 y
UNIX. En cambio un fichero consiste en múltiples atributos, cada uno de los cuales está representado por una
cadena de bytes. La mayoría de los ficheros tienen una pocas cadenas cortas, tal como el nombre del fichero y
los 64 bits del ID de objeto, además de una larga cadena con los datos. Sin embargo un fichero puede tener
dos o más cadenas de datos. Cada cadena tiene un nombre que consiste en el nombre de un fichero, dos puntos
y el nombre de la cadena, por ejemplo, foo:cadena1. Cada cadena tiene su propio tamaño y es independiente
de las demás cadenas. La idea de las cadenas múltiples en un fichero fue tomada del Macintosh Apple, cuyos
ficheros tienen dos cadenas, los datos y los recursos. Este concepto fue incorporado dentro de NTFS y permite
a un servidor NTFS ser capaz de atender a clientes Macintosh.
Las cadenas de ficheros pueden ser usados para otros usos como por ejemplo, un programa de retoque
fotográfico podría usar una cadena sin nombre para la imagen principal y otra cadena con nombre para una
versión más pequeña de la imagen. Esta disposición es más simple que le utilizada normalmente que es
ponerlas en el mismo fichero una después de la otra
Las llamadas a funciones de la API WIN32 para la manipulación de ficheros y directorios es bastante similar a
la de UNIX, excepto en que la mayoría tienen más parámetros y el modelo de seguridad es diferente. Cuando
abrimos un fichero se devuelve un manejador, el cual será usado para escribir y leer en el fichero. La API
Win32 también tiene llamadas adicionales no presentes en UNIX.
3.7.4 − Estructura del sistema de ficheros
Cada volumen NTFS (ej: partición de disco), contiene ficheros, directorios y otras estructuras de datos. Cada
volumen esta organizado como una secuencia lineal de bloques o clusters con el tamaño del bloque fijo por
cada volumen y en un rango entre 512 bytes y 64 Kb, dependiendo del tamaño del volumen. Muchos discos
NTFS usan bloques de 4 Kb como un compromiso entre bloques largos (de transferencia eficiente) y bloques
pequeños (para bajas fragmentaciones internas).
La siguiente tabla muestra el tamaño de los clusters por defecto:
Tamaño del volumen
< 512 Mbyte
512 Mbyte − 1Gbyte
1 Gbyte − 2 Gbyte
4 Gbyte − 4 Gbyte
4 Gbyte − 8 Gbyte
8 Gbyte − 16 Gbyte
16 Gbyte − 32 Gbyte
> 32 Gbyte
Sectores por cluster
1
2
4
8
16
32
64
128
Tamaño del cluster
512 bytes
1K
2K
4K
6K
16 K
32 K
64 K
La siguiente figura muestra la distribución de un volumen NTFS. Los primeros sectores estan ocupados por el
sector de arranque de partición (que puede ocupar hasta 16 sectores) y contine información sobre el volumen,
las estructuras del sistema de ficheros e información y código para el arranque. A continuación esta la MFT o
Tabla de Ficheros Maestra, que contiene información sobre todos los ficheros y directorios del volumen asi
como información sobre el espacio libre. Después de la MFT aparece una sección que contiene ficheros del
sistema y que ocupa 1 Mbyte aproximadamente. Por ultimo aparecen los bloques de datos.
30
Los bloques son referidos desde el principio del volumen usando un número de 64 bytes llamado referencia de
archivo. La principal estructura de datos en cada volumen es el MFT (Master File Table o Tabla de Ficheros
Maestra), que es una secuencia lineal de tamaño fijo de registros de 1 KB. Cada registro del MFT describe un
fichero o un directorio y contiene los atributos del fichero, como son el nombre, los timestamps (fecha de
modificación, creación) y la lista de direcciones de disco donde están localizados los bloques del fichero. Si
un fichero es muy largo, algunas veces es necesario usar dos o más registros de MFT para contener la lista de
todos los bloques, en este caso el primer registro MFT será el registro base y apuntará a los otros registros del
MFT, llamados registros de extensión.
El MFT también es un fichero y como fichero puede estar colocado en cualquier parte del volumen, así
eliminamos el problema de los sectores defectuosos en la primera pista. Además, el fichero puede crecer
según se necesite hasta un tamaño máximo de 248 registros.
Cada registro MFT consiste en una secuencia de parejas (cabecera del atributo, valor). Cada atributo comienza
con una cabecera con el nombre del atributo y la longitud del valor, dado que algunos atributos son de
longitud variable, como el nombre del fichero y sus datos. Si el valor del atributo es suficientemente corto
para caber en el registro MFT, se coloca allí. Si es demasiado largo se coloca en cualquier parte del disco y
será apuntado por un puntero en el registro MFT.
Los primeros 16 registros del MFT están reservados para los ficheros de metadatos de NTFS, como se
muestran en la figura. Cada uno de los registros describe un fichero normal que tiene atributos y bloques de
datos, como cualquier otro fichero. Cada uno de estos ficheros tiene un nombre que empieza con un signo de
$ para indicar que es un fichero de metadatos. El primer registro describe al mismo fichero MFT. En
particular dice donde están los bloques del fichero MFT, para que el sistema puede encontrar el fichero MFT.
Evidentemente, Windows 2000 necesita una forma de encontrar el primer bloque del fichero MFT para poder
encontrar el resto de la información del sistema de ficheros. La forma de encontrar el primer bloque del
fichero MFT es mirando en el bloque de arranque donde se coloca la dirección cuando se instala el sistema.
−−−−−−−−−−−−−−−−−−−−− 1KB −−−−−−−−−−−−−−−−−−
.
.
.
Primer fichero de usuario
(reservado para un futuro uso)
(reservado para un futuro uso)
(reservado para un futuro uso)
(reservado para un futuro uso)
31
$Extend Extentions: quotas, etc
$Upcase Tabla de conversiones de mayúsculas
$Secure Descriptores de seguridad de ficheros
$BadClus Lista de bloques defectuosos
$Boot Archivo de arranque
$Bitmap Mapa de bits de bloques usados
$Root directorio raiz
$AttrDef Definiciones de atributos
$Volume Información sobre el volúmen
$Logfile Fichero log
$MftMirr Copia de la MFT
$Mft Master file Table
El registro 1 es un duplicado de la primera parte del fichero MFT. Esta segunda copia puede ser crítica en el
caso de que haya un bloque defectuoso en el MFT. El segundo registro es el fichero log. Cuando cambia la
estructura del sistema de ficheros, como al añadir un nuevo directorio o borrar uno existente, la acción queda
registrada aquí antes que de ser realizada, para aumentar la probabilidad de recuperar el sistema en caso de
que falle la operación. El registro 3 contiene información sobre el volumen, su tamaño, etiqueta y versión.
Como comentábamos antes el registro MFT contiene una secuencia de parejas (cabeceras de atributos, valor).
El fichero $AttrDef es donde los atributos están definidos. La información sobre este fichero esta en el
registro 4 del MFT. Después viene el directorio raíz que también es un fichero y puede crecer hasta una
longitud arbitraria. Se describe como el registro 5 del MFT.
El espacio libre del volumen se guarda como un mapa de bits. Este mapa de bits es un fichero y sus atributos y
sus direcciones en disco están en el registro 6. El siguiente registro de punteros del MFT apunta al cargador
del sistema. El registro número 8 es usado para unir todos los bloques defectuosos juntos para impedir su uso.
El registro numero 9 contiene la información referente a la seguridad. El registro 10 es usado para mapear las
mayúsculas. Finalmente, el registro numero 11 es un directorio que contiene diversos ficheros como las cuotas
de discos, identificadores de objetos... Los 4 últimos registros de la MFT están reservados para futuros usos.
La cabecera de cada registro contiene: un numero usado para validación, una secuencia de números que se
actualiza cada vez que el registro es reutilizado para un nuevo fichero, un contador de referencias al fichero, el
numero actual de bytes usados en el registro, el identificador (índice, secuencia de números) de la base del
registro (usado solo para las extensiones del registro) y algunos otros campos. Siguiendo a la cabecera del
registro está la cabecera del primer atributo, y seguidamente el resto de atributos.
NTFS define 13 atributos que pueden aparecer en registros de la MFT. Estos son listados en la siguiente tabla:
Atributo
Standard information
File name
Security descriptor
Attribute list
Object ID
Reparse point
Volume name
Descripción
Flag bits, timestamps, etc..
Nombre del fichero en Unicode, puede estar repetido para el nombre
MS−DOS
Obsoleto. La información sobre la seguridad esta ahora en $Extend$Secure
Localización de registros adicionales del MFT, si son necesarios
64 bits para el identificador de fichero, único para cada volumen
Usado para montar y links simbólicos
Nombre de este volumen(Usado solo en $volume)
32
Volume information
Index root
Index allocation
Bitmap
Logged utility stream
Data
Versión del volumen(usado solo en $Volume)
Usado para directorios
Usado para directorios muy largos
Usado para directorios muy largos
Controla el registro de usuarios para el $Logfile
Cadena de datos, pueden estar repetidos
Normalmente los valores de los atributos se sitúan detrás de las cabeceras de atributos directamente, pero si su
valor es demasiado largo para colocarse en el registro MFT, se puede poner en un bloque de disco separa, a
estos atributos se les llama atributos no−residentes. Algunos atributos como el nombre pueden estar repetidos,
pero todos los atributos deben aparecer en un orden fijo en el registro MFT. La cabecera de los atributos
residentes es de 24 bytes de longitud mientras que para los atributos no residentes serán más largos ya que
deben contener la información sobre donde guardar los atributos en el disco.
En NT 4.0 la información de seguridad podía estar en un atributo , pero en Windows 2000 estará toda dentro
de un fichero único de forma que muchos ficheros puedan compartir los mismos descriptores de seguridad. La
lista de atributos es necesaria en caso de que los atributos no quepan en el registro MFT. Este atributo, nos
indica donde encontrar los registros de extensión. Cada entrada en la lista contiene un índice de 48 bits
indicando donde esta el registro de extensión y una secuencia de números de 16 bits que permiten verificar
que el registro de extensión y el registro base coinciden.
Por último el atributo más importante, los datos. Si la cadena de datos tiene nombre estará en la cabecera del
atributo y posteriormente habrá una lista de direcciones de disco indicando los bloques que contiene el fichero
o bien si el fichero es lo suficientemente pequeño estará el propio fichero. Si el fichero es tan grande que no
cabe tampoco las direcciones de disco de los registros de extensión, estas serán guardadas en bloques del
disco y se guardará su dirección en el MFT.
Además de fichero también pueden aparecer directorios en los registro MFT, en este caso el registro
contendrá varias entradas de directorio, cada una describiendo un fichero u otro directorio. Cada entrada
contiene una estructura de longitud fija, seguida del nombre del fichero con una longitud variable. La parte
fija contiene la dirección de MFT para el fichero, la longitud del nombre del fichero y varios campos de
información. Buscar una entrada de directorio consistirá en examinar todos los nombres de fichero.
Los directorios grandes usan un formato diferente. En lugar de listar los fichero linealmente usan arboles B+
para facilitar la búsqueda alfabética y facilitar la inserción de ficheros.
3.7.5 − Compresión de ficheros
NTFS soporta compresión de ficheros transparente. Un fichero puede ser creado en modo comprimido, que
significa que automáticamente NTFS intenta comprimir los bloques como están escritos en el disco y
automáticamente los descomprime cuando son leídos posteriormente. Los procesos que leen o escriben en
ficheros comprimidos son ignoran completamente el hecho de que se este comprimiendo y descomprimiendo
en ese momento.
Cuando NTFS escribe en un fichero marcado como comprimido, examina los 16 primeros bloques (lógicos)
en el fichero. Entonces ejecuta un algoritmo de compresión sobre ellos. Si el resultado puede ser almacenado
en 15 ó menos bloques, los datos comprimidos son escritos en el disco. Si los bloques comprimidos todavía
ocupan los 16 bloques, los 16 bloques son escritos de forma no−comprimida. Entonces los bloques del 16 al
31 son examinados para ver si ellos pueden ser comprimidos como 15 bloques o menos y así sucesivamente.
33
Cuando el fichero va a ser leído NTFS debe saber si esta comprimido o no, para realizar esto debe mirar en las
direcciones de disco, si la dirección de disco es un 0 significa que es el final de la compresión de 16 bloques.
El bloque 0 no debe ser usada para guardar datos para evitar ambigüedad, dado que el bloque 0 contiene el
sector de arranque, usarlo para almacenar datos es imposible.
El acceso aleatorio a ficheros comprimidos es complicado. Si un proceso quiere acceder al bloque 35 de un
fichero y esta comprimido no podrá localizarlo. Por tanto NTFS deberá descomprimir todos los bloques y
localizar el bloque 35 para pasarlo al proceso que lo solicito. La elección de 16 para la unidad de compresión
es un compromiso. Si hubiera sido más corta la compresión sería menos efectiva, en cambio si fuera más larga
el acceso aleatorio sería muy costoso.
3.7.6 − Encriptación de ficheros
En Windows NT 4 se podía robar la información del disco duro bien robando el propio disco duro o bien
arrancando mediante un disquete de arranque de MS−DOS o accediendo desde otros sistemas operativos
como Linux. Para evitar el robo de información Windows 2000 incluye la encriptación de ficheros como una
de sus mayores novedades, de forma que si se arranca mediante MS−DOS los datos sean ilegibles.
La forma más normal de usar este sistema de encriptación es marcar un fichero como encriptado de forma que
todos los ficheros que contiene serán encriptados. La encriptación y desencriptación en realidad no es
realizada por NTFS si no por un driver llamado EFS (Encrypting File System) que actúa entre NTFS y los
procesos de usuario. De esta forma las aplicaciones no intervienen en la encriptación y solo interviene una
parte de NTFS
Cuando el usuario encripta un fichero, se genera una clave de fichero aleatoria de 128 bits usada para
encriptar el fichero bloque por bloque usando un algoritmo simétrico parametrizado para esta clave. Cada
nuevo fichero encriptado tendrá una clave diferente, de forma que no haya 2 ficheros usando la misma clave
de encriptación, aumentando así la seguridad en caso que una clave sea desvelada. El algoritmo de
encriptación actual es una variante del DES (Data Encription Estándar) pero la arquitectura del EFS soporta la
adición de nuevos algoritmos en el futuro. Encriptar cada bloque independientemente es necesario para
permitir accesos aleatorios al fichero.
La clave de fichero tiene que ser guardada en algún lugar de forma que el fichero pueda ser desencriptado más
tarde. Si la clave fuera guardada en formato de texto esta podría ser robada y por tanto los datos podrían
desencriptarse. Por tanto la clave también debe ser encriptada, empleando para ello criptografía de clave
pública.
Después de que el fichero sea encriptado, la localización de la clave pública se consigue mediante
información en el registro. No hay peligro de guardar la clave pública en registro ya que a partir de ella no es
posible deducir la clave privada. La clave de fichero de 128 bits se encripta con la clave pública y se guarda el
resultado en el disco junto al fichero.
Para desencriptar un fichero, la clave de fichero de 128 bits que está encriptada con la clave pública debe ser
desencriptada con la clave privada. Idealmente esta clave debería estar guardada fuera del ordenador. Dado
que Windows 2000 no soporta que esta clave sea guarda en tarjetas inteligentes, debe utilizar otro método.
Cuando un usuario encripta un fichero por primera vez genera una par de claves (pública y privada) y guarda
la clave privada con un algoritmo simétrico. La clave usada para el algoritmo simétrico se obtiene a partir del
login y password del usuario. De esta forma EFS puede desencriptar la clave privada cuando entra el usuario
en el sistema y guardarla en el espacio de direcciones virtual para poder desencriptar los ficheros rápidamente.
Cuando la sesión termine la clave privada se borrara del espacio de direcciones virtual.
3.8 − SEGURIDAD DE WINDOWS 2000
34
Uno de los puntos fuertes de Windows 2000 es la facilidad de control de acceso de que dispone, que
aprovecha los conceptos de orientación a objetos esto proporciona una poderosa y flexible capacidad de
control de acceso.
Windows 2000 proporciona una facilidad uniforme de control de acceso que es aplicable a procesos, hebras,
ficheros, semáforos, ventanas y otros objetos. El control de acceso es realizado por dos entidades: un token de
acceso asociada con cada proceso y un descriptor de seguridad asociado con cada objeto para permitir que el
acceso por otros procesos sea posible.
Esquema de control de acceso
Cuando un usuario se identifica al entrar en un sistema Windows 2000, Windows 2000 utiliza un esquema
nombre/contraseña (login/password) para autenticar al usuario. Si el identificación es correcta, se crea un
proceso para el usuario y se asocia un token de acceso con ese objeto proceso. El token de acceso incluye un
identificador (ID) de seguridad (SID), que es el identificador por el cual el usuario es conocido por el sistema
para propósitos de seguridad. Cuando algunos procesos adicionales son creados por el proceso inicial del
usuario (a partir de él), los nuevos objetos proceso heredan los mismos token de acceso.
Los token de acceso sirven para dos propósitos:
• Guardan agrupada toda la información de seguridad acelerando así la validación para el acceso.
Cuando algún proceso asociado a un usuario intenta acceder, el subsistema de seguridad puede hacer
uso del token asociado a ese proceso para determinar los privilegios de acceso del usuario.
• Permiten a cada proceso modificar sus características de seguridad de forma limitada sin que afecte a
otros procesos ejecutándose en nombre del usuario.
La principal característica del segundo punto es que estos privilegios de seguridad pueden ser asociados a un
usuario en particular, el token de acceso indica que privilegios tendrá cada usuario. Generalmente, el token se
inicializa con cada uno de estos privilegios en estado deshabilitado. Después si un proceso de usuario necesita
realizar una operación privilegiada, el proceso puede habilitar el privilegio apropiado e intentar el acceso. No
seria deseable guardar toda la información de seguridad para un usuario en un gran espacio del sistema,
porque en ese caso habilitar un privilegio para un proceso lo haría para el resto de procesos.
Asociado a cada objeto que puede ser accedido por otros procesos hay un descriptor de seguridad. El
componente más importante del descriptor de seguridad es una lista de control de acceso (ACL) que
especifica los derechos de acceso para varios usuarios y grupos de usuarios para este objeto. Cuando un
proceso intenta acceder a este objeto, el SID del proceso se compara con la lista de control de acceso del
objeto para determinar si se permite el acceso.
Cuando una aplicación abre una referencia a un objeto seguro, Windows 2000 verifica que el descriptor de
seguridad del objeto permite el acceso a la aplicación de usuario.
Un importante aspecto de la seguridad de Windows 2000 es el concepto de suplantación (impersonation), que
simplifica el uso de la seguridad en un entorno cliente/servidor. Si cliente y servidor se comunican a través de
una conexión RPC, el servidor puede temporalmente asumir la identidad del cliente y así poder evaluar una
petición para acceso relativo a los derechos de ese cliente. Después del acceso, el servidor vuelve a tomar su
propia identidad.
Token de acceso
La siguiente figura muestra la estructura general de un token de acceso:
35
• Identificador de seguridad o SID (Security Identifier): Identifica al usuario de forma única a través
de todos los ordenadores de la red. Generalmente corresponde con el login del usuario.
• SIDs de grupo: Una lista de grupos a los cuales pertenece el usuario. Un grupo es simplemente un
conjunto de identificadores de usuario (SIDs) que son identificados como un grupo para propósitos de
control de acceso. Cada grupo tiene un único identificador de grupo (SID). El acceso a un objeto
puede ser definido en base a un grupo de SIDs, a in SID individual o a una combinación de los dos.
• Privilegios: Una lista de servicios de sistema de seguridad delicada que el usuario puede solicitar. Un
ejemplo es el privilegio de hacer backups; los usuarios que tienen este privilegio se les permite utilizar
la herramienta de backup para hacer copias de seguridad de archivos que normalmente no podrían ser
leídos. La mayoría de los usuarios no tendrán privilegios.
• Propietario por defecto: Si este proceso crea otro objeto, este campo especifica quien es el
propietario del nuevo objeto. Generalmente el propietario del nuevo proceso es el mismo que el
propietario del proceso que lo ha creado. Sin embargo, un usuario puede especificar que el propietario
por defecto de los procesos creados por este proceso sea un identificador de grupo al cual el usuario
pertenece.
• Lista de Control de Acceso (ACL o Access Control List) por defecto: Es una lista inicial de
protecciones aplicadas a los objetos que el usuario ha creado. El usuario puede consecuentemente
alterar el ACL de objetos que le pertenezcan o que pertenezcan a su grupo de usuarios.
Descriptores de seguridad
La siguiente figura muestra la estructura general de un descriptor de seguridad:
36
El descriptor de seguridad se compone de:
• Banderas: Define el tipo y el contenido de un descriptor de seguridad. Las banderas indican si está
presente o no el SACL y el DACL, si están o no en el objeto por un mecanismo por defecto, y si los
punteros en el descriptor usan direccionamiento absoluto o relativo. Los descriptores relativos son
utilizados por objetos que se trasmiten a través de la red, como por ejemplo la información trasmitida
mediante RPC.
• Propietario: El propietario de un objeto puede realizar generalmente cualquier acción en el descriptor
de seguridad. El propietario puede ser un ID individual o de grupo. El propietario tiene la autoridad
para cambiar el contenido del DACL.
• Lista de control de acceso del sistema (SACL o System Access Control List): Especifica que clase
de operaciones sobre el objeto deberán registrarse en el registro de auditoría de seguridad. Una
aplicación debe tener el privilegio correspondiente en su token de acceso para leer o escribir el SACL
de cualquier objeto. Previniendo así que aplicaciones no autorizadas lean o escriban SACLs.
• Lista de control de acceso discrecional (DACL o Discretionary Access Control List): Determina
que usuarios y grupos de usuarios pueden acceder a este objeto por medio de operaciones. Consiste en
una lista de entradas de control de acceso (ACEs).
Cuando se crea un objeto, el proceso que lo creo puede asignar como propietario su propio SID o algún SID
de grupo en su token de acceso. El proceso que lo crea no puede asignar un propietario que no esté en el token
de acceso actual. Consecuentemente, cualquier proceso al que se le ha concedido el privilegio de cambiar el
propietario del objeto, podrá hacerlo pero con la misma. La razón de esta restricción es prevenir que un
usuario cubra sus huellas después de haber hecho alguna acción desautorizada.
Lista de control de acceso (ACL):
Las listas de control de acceso son el corazón del control de acceso de Windows 2000. Cada lista consiste en
un encabezamiento y un número variable de entradas de control de acceso. Cada entrada especifica un SID
individual o de grupo y una máscara de acceso que define los privilegios que son asignados a este SID.
37
Cuando un proceso intenta acceder a un objeto el administrador de objetos del Ejecutivo de Windows 2000
lee el SID y los SIDs de grupo del token de acceso y entonces comprueba el DACL del objeto. Si se encuentra
una entrada igual, es decir si se encuentra una ACE con un SID que sea igual a uno de los SIDs del token de
acceso, entonces los privilegios de acceso del proceso son especificados por la máscara de acceso en esa ACE.
La siguiente figura muestra el contenido de la máscara de acceso. Los 16 bits de menor peso especifican los
privilegios de acceso aplicables a un tipo de objeto en particular. Por ejemplo, el bit 0 para un objeto archivo
es acceso para File_Read_Data y el bit 0 para un objeto evento es acceso para Event_Query_Status.
38
Los 16 bits de mayor peso de la máscara contienen bits que son aplicables a todo tipo de objetos. Cinco de
estos bits hacen referencia a los tipos de acceso estándar, éstos son:
• Synchronize: Da permiso para la ejecución sincronizada con algunos eventos asociados con este
objeto.
• Write_Owner: Permite a un programa modificar el propietario del objeto. Este es útil porque el
propietario de un objeto siempre puede cambiar la protección de dicho objeto (al propietario no se le
podrá negar el acceso al Write_DAC).
• Write_DAC: Permite a la aplicación modificar el DACL y por lo tanto la protección sobre este
objeto.
39
• Read Control: Permite a la aplicación preguntar al propietario y a los campos de la DACL sobre el
descriptor de seguridad de este objeto.
• Delete: Permite a la aplicación borrar este objeto.
Esta mitad de mayor peso de la máscara de acceso también contiene los cuatro tipos de acceso genéricos.
Estos bits proporcionan una manera conveniente para establecer los tipos de accesos específicos en un numero
de tipos de objetos diferentes. Por ejemplo, que una aplicación desee crear varios tipos de objetos y asegurar
que los usuarios tengan acceso de lectura hacia los objetos, teniendo en cuenta que leer tiene un diferente
significado para cada tipo de objeto. Para proteger cada tipo objeto sin los bits de acceso genérico, la
aplicación tendría que construir una ACE diferente para cada tipo de objeto y tener cuidado para pasar la ACE
correcta cuando creamos cada objeto. Es más conveniente crear una ACE solamente, que exprese el concepto
general de permiso de lectura, así simplemente aplicando esta ACE a cada objeto que se crea, tenemos esto
resuelto. Este es el propósito de los bits de acceso genérico que son:
• Generic_all: Permite todos los accesos.
• Generic_execute: Permite ejecución si es ejecutable.
• Generic_write: Permite acceso de escritura.
• Generic_read: Permite acceso de solo lectura.
Los dos bits que faltan por explicar en la máscara de acceso tienen un significado especial. El bit
Acces_System_Security permite modificar la revisión y el control de alarma para este objeto. Sin embargo, no
solo debemos haber ajustado este bit en la ACE para un SID, sino que el token de acceso para el proceso con
ese SID debe tener el correspondiente privilegio habilitado.
Finalmente está el bit Maximum_Allowed, este bit en realidad no es un bit de acceso, sino un bit que modifica
el algoritmo de Windows 2000 para escanear la SACL para este SID. Normalmente, Windows 2000 escaneará
a través la DACL hasta encontrar una ACE que específicamente conceda (bit a 1) o deniegue (bit a 0) el
acceso solicitado por el proceso solicitado o hasta que encuentre el final de la DACL, en este último caso el
acceso será denegado. El bit Maximum_Allowed permite al propietario del objeto definir un conjunto de
privilegios de acceso que es el máximo que se le permite dar a un usuario. Teniendo esto en cuenta, si una
aplicación no conoce todas las operaciones que deberá realizar sobre un objeto durante una sesión tendrá
entonces tres opciones para solicitar el acceso:
• Intentar abrir el objeto por todos los accesos posibles. El inconveniente de esta aproximación es que el
acceso puede ser a pesar de que la aplicación puede tener todos los privilegios que se necesitan para
esta sesión.
• Abrir solo el objeto cuando se solicite un acceso especifico y abrir un nuevo manejador para el objeto
para cada tipo de solicitud diferente. Este es generalmente el método preferido porque no denegará
accesos innecesariamente, ni permitirá más accesos de los que son necesarios.
• Intentar abrir el objeto para más accesos de los que el objeto permite a este SID. La ventaja es que al
usuario no se le puede denegar el acceso artificialmente, pero la aplicación puede tener más accesos
de los que necesite. Esta última situación puede enmascarar bugs en la aplicación.
4 − NOVEDADES DE WINDOWS 2000
El kernel de Windows 2000 es una versión mejorada del kernel de NT 4.0, mejorando la escalabilidad,
estabilidad, seguridad y con la adición de dos subsistemas nuevos, el administrador de Plug and Play y el
administrador de energía, aunque no pertenezca al modo kernel de Windows 2000 también comentaremos el
directorio activo, una de las principales incorporaciones respecto a NT 4.0. A continuación describimos las
principales mejoras.
4.1 − MEJORAS EN LA ESCALABILIDAD
40
Uno de los principales defectos que padecía NT 4.0 era la pobre escalabilidad en sistemas multiprocesador, en
los que el rendimiento bajaba mucho en sistemas de más de cuatro procesadores. Esta limitación impedía el
acceso de Windows a los sistemas de grandes y medianas empresas.
Para mejorar la escalabilidad en Windows 2000 se han realizado diversas mejoras. Windows 2000 permite a
las aplicaciones que consumen grandes cantidades de memoria usar una mayor cantidad de memoria física y
virtual de lo que era posible en NT 4.0. Para ello Windows 2000 incorpora cuatro APIs nuevas bajo el
llamado AWE (Address Windowing Extensions), estas APIs son usadas por las aplicaciones para asignar
memoria física y para obtener referencias o ventanas, en su espacio de direcciones.
Otra modificación ha sido el cambio en la duración de los quantums de las hebras. En NT 4.0 los quantums
eran fijos y no se podían modificar, sin embargo en Windows 2000 la duración de los quantums puede ser
configurada por el administrador de forma que pueda asignar quantums más largos o más cortos según si se
ejecuta en Windows 2000 Pro, Server, Advanced Server o Datacenter y según el tipo de aplicaciones a
ejecutar.
Para mejorar el acceso concurrente a determinados componentes del sistema, como por ejemplo la base de
datos del planificador, se han mejorado los spinlocks, elementos encargados de proteger las estructuras de
datos globales de estados inconsistentes debido al acceso concurrente.
También se ha incrementado los limites de memoria de muchos de los componentes del sistema, por ejemplo
el limite de memoria no paginable utilizada por el kernel se ha incrementado de 128 MB a 256 MB−
Por último, el Administrador de memoria virtual y el Administrador de caché han sido mejorados permitiendo
un mayor rendimiento que NT4.0 en las maquinas multiprocesador.
4.2 − WINDOWS DRIVER MODEL (WDM)
Uno de los cambios significantes en el Kernel de Windows 2000 respecto a NT 4.0 es el soporte para el
Windows Driver Model (WDM). WDM es un estándar que Microsoft ha adoptado para separar la
funcionalidad de las clases de dispositivos generales de la funcionalidad especifica de dispositivos en
concreto. Por ejemplo, los interfaces de usuario como los ratones o teclados comparten algunas caracteristicas
comunes pero difieren en detalles de configuración y control. Basandose en este concepto Microsoft aportara
una clase general para estos dispositivos y los fabricantes de Hardware se encargaran de desarrollar unos
minidrivers para sus dispositivos que soporten sus funcionalidades particulares. La lista de clases de
dispositivos que soporta WDM es la siguiente:
Clases de dispositivos con soporte WDM
Clase
Tipo de dispositivo
Audio
Dispositivos de entrada y salida de audio, como las tarjetas de sonido
Human Interface Device (HID)
Teclados, ratón y joysticks
Still image
Cámaras y scanners
Streams
Corrientes de flujo (streaming) de Audio y Video.
Video
Hardware de vídeo como cámaras y dispositivos de edición de vídeo.
4.3 − MEJORAS EN LA ESTABILIDAD
Windows 2000 incorpora varias novedades para prevenir, evitar y resolver las caídas del sistema. En NT 4.0
los drivers de dispositivos pueden escribir en cualquier parte de la memoria del modo kernel. Los drivers de
dispositivos y el kernel de NT residen ambos en la zona de memoria reservada para el modo kernel, lo que
crea la posibilidad de que un driver pueda dañar otro driver el sistema operativo. Con la ayuda del
41
Administrador de memoria del procesador (MMU), Windows 2000 marca como protegido contra escritura los
drivers y las zonas de memoria del sistema operativo. Si algún driver intenta modificar estas zonas, el
Administrador de memoria de Windows 2000 detecta el error y puede ser fácilmente detectado.
Una nueva herramienta llamada Driver Verifier permite prevenir otros errores debidos a los drivers de
dispositivos. Cuando el sistema aplica el Driver Verifier a algún driver sospechoso, el Verifier vigila el uso
del driver de los buffers de memoria del kernel y las interacciones del driver con el kernel. El Driver Verifier
permite detectar violaciones en las reglas básicas de programación de drivers. De esta forma el administrador
puede identificar inmediatamente al driver que esta dando problemas.
Para ayudar a resolver las caídas del sistema Windows 2000 incorpora el Arranque Seguro y la Consola de
Reparación. El arranque seguro es una opción de arranque que Windows 2000 presenta al usuario cuando esta
preparando la carga del sistema. El arranque seguro permite a los usuarios cargar Windows 2000 con una
mínima parte de los drivers y servicios, existiendo dos tipos de arranque: mínimo y con red. La Consola de
reparación es una opción para recuperar el sistema sí el Arranque Seguro fallo. El CD−ROM de instalación de
Windows 2000 da la opción de arrancar desde el CD−ROM con una prompt desde el cual se puede acceder a
una instalación de reparación. Y se pueden usar comandos del prompt para habilitar y deshabilitar drivers y
copiar o borrar ficheros del sistema o de drivers.
4.4 − NTFS 5
Como ya hemos comentado la versión 5 de NTFS incorpora varias novedades como una mayor seguridad, el
control de cuotas de usuario o la implementación de enlaces simbólicos.
4.5 − SISTEMAS DE FICHEROS SOPORTADOS
Windows 2000 soporta completamente el sistema de archivos FAT32, que no podía ser entendido por NT4.0
sin la ayuda de otras aplicaciones independientes del sistema operativo, además era totalmente imposible
arrancar desde una partición FAT32. Dado que NT 4.0 ya entendía FAT12 y FAT16 simplemente se modificó
este driver (fastfat.sys) para que soportara FAT32.
También se ha incorporado el sistema de ficheros UDF (Universal Data Format) con el driver udfs.sys que
reemplazara al actual sistema de ficheros para CD−ROMs y que será el usado por el formato DVD−ROM.
4.6 − SERVICIOS DE TERMINAL
Para soportar múltiples sesiones de usuario interactivas Windows 2000 incorpora cambios en el kernel ya
introducidos en la versión NT Server 4.0 Terminal Server Edition (WTS). Estos cambios requieren que el
kernel soporte el concepto de sesión (en el cual la sesión incluye una copia privada del subsistema Win32,
drivers gráficos y dispositivos de entrada) para cada usuario conectado al servidor.
Especificando que cada usuario tenga asociado un estado completo del escritorio, Windows 2000 puede
implementar un entorno multiusuario con mínimos cambios en la arquitectura del kernel, los drivers de
dispositivos y las aplicaciones de modo usuario. Para ello se modifico el esquema de nombres del
Administrador de objetos para permitir especificar objetos que son de una sesión local o global.
4.7 − PLUG AND PLAY
Plug and Play es una combinación de software y soporte de hardware que permite al ordenador reconocer y
adaptar los cambios de configuración de hardware con muy poca o ninguna intervención del usuario. Con
Plug and Play un usuario puede añadir o quitar drivers dinámicamente sin conocimiento del hardware del
ordenador.
42
Plug and Play permite al usuario cambiar la configuración de su ordenador con la seguridad de que todos los
dispositivos van a trabajar y que la maquina va a arrancar sin problemas después de realizar los cambios.
Evolución del PnP
El soporte para Plug and Play apareció primeramente en Windows 95, sin embargo desde entonces el Plug and
Play ha evolucionado totalmente. Esta evolución es el resultado de la iniciativa OnNow, la cual define la
manera de controlar al Sistema, la configuración de dispositivos y la Administración de Energía. Un producto
de la iniciativa OnNow es el ACPI (Advanced Configuration and Power Interface). La especificación 1.0
define una nueva placa madre y una nueva interfaz de la BIOS la cual extiende los datos a incluir en la
administración de energía del Plug and Play y otras nuevas configuraciones, todas bajo el completo control
del sistema operativo.
Al contrario que el soporte a Plug and Play en Windows 95, la implementación del Plug and Play en Windows
2000 no está basada en una BIOS APM o en una BIOS Plug and Play. Estas dos implementaciones de BIOS
fueron diseñadas para Windows 95 para el antiguo soporte de Plug and Play y de la Administración de
Energía. Estas dos se mantienen en Windows 98 únicamente por compatibilidad hacia atrás (compatibilidad
descendente con Windows 95). ACPI nos da estos servicios para ambos sistemas: Windows 98 y Windows
2000.
El primer diseño del Plug and Play fue una iniciativa de la industria para simplificar los ordenadores a los
usuarios finales. Actualmente Plug and Play en Windows 2000 está diseñado para:
• Extender la existente infraestructura creada en Windows NT para soportar Plug and Play y la
Administración de Energía.
• Poder utilizar interfaces comunes que soporten Plug and Play y la Administración de Energía para
ciertas clases de dispositivos tanto en Windows 2000 como en Windows 98.
En Windows 2000, el soporte para Plug and Play ha sido optimizado para los ordenadores portátiles,
estaciones de trabajo y servidores que incluyan placas madre y bios ACPI. Como un añadido al soporte de los
controladores de dispositivos para muchas de las clases de dispositivos está el modelo WDM, el cual soporta
Administración de Energía y otras nuevas capacidades que pueden ser configuradas y controladas por el
sistema operativo.
Cambios en los controladores
Para incorporar soporte Plug and Play en Windows 2000, una implementación nativa de Plug and Play fue
integrada en el código base del Windows NT existente. Se producen los siguientes cambios:
• Controladores de Bus (Bus Drivers): Lo controladores de bus se han separado del HAL. Los
controladores de bus controlan un bus de Entrada / Salida (I/O). En la nueva arquitectura los
controladores de bus han sido movidos fuera de la capa de abstracción de hardware (HAL)
coordinándose con los cambios y extensiones realizadas en los componentes existentes en modo
kernel como son el Ejecutivo, los controladores de dispositivos y el HAL. Los controladores de Bus,
son suministrados generalmente por Microsoft.
• Instalación y configuración de Dispositivos: Nuevas capacidades y métodos se han añadido al
soporte de la configuración e instalación de dispositivos. El nuevo diseño incluye cambios y
extensiones a los componentes existentes en modo usuario como instaladores de clase, aplicaciones
del Panel de Control, e Instalación.
• Plug and Play APIs: Nuevas APIs para Plug and Play son creadas para leer y escribir información en
el registro. En el nuevo diseño se han realizado cambios y extensiones en la estructura del registro.
Esta estructura permite al registro ser ampliado en futuras versiones de Plug and Play en Windows
43
2000, soportando además compatibilidad hacia atrás.
Windows 2000 soporta drivers heredados de Windows NT, pero estos no van a tener las funcionalidades de
Administración de Energía y Plug and Play. Los fabricantes que quieran soporte completo a las capacidades
Plug and Play para sus dispositivos y quienes quieran que los mismos drivers funcionen en Windows 2000 y
Windows 98 necesitarán desarrollar nuevos drivers para integrar las últimas funcionalidades de
Administración de Energía y Plug and Play.
Soporte de Windows 2000 para Plug and Play
Windows 2000 nos da el siguiente soporte para Plug and Play:
• Reconocimiento del hardware instalado automáticamente y dinámicamente: Esto incluye la
instalación inicial en el Sistema, el reconocimiento de cambios en el hardware de Plug and Play que
pueden ocurrir entre reinicios del sistema y responder a los sucesos de hardware en tiempo de
ejecución (ej. insertar una tarjeta PCMIA o bien pinchar un nuevo dispositivo USB, etc...).
• Asignación y reasignación de los recursos de hardware: Los controladores (drivers) para los
dispositivos no asignan sus propios recursos. Al contrario, los recursos para los dispositivos se
identifican cuando el dispositivo es enumerado por el sistema operativo. El Administrador de Plug
and Play recupera los recursos para cada dispositivo durante la fase de asignación de recursos. Basado
en las configuraciones de los recursos que necesita cada dispositivo, el Administrador de Plug and
Play asigna los recursos necesarios como los puertos de I/O, las IRQs, canales de DMA y
localizaciones de memoria. El Administrador de Plug and Play reconfigura la asignación de recursos
cuando es necesario, por ejemplo cuando un dispositivo es añadido al sistema y solicita recursos que
ya están en uso.
• Carga de los controladores apropiados: El Administrador de Plug and Play determina que
controladores (drivers) son requeridos para soportar un dispositivo particular y es el encargado de la
carga de dichos controladores.
• Interfaz de control con el Sistema Plug and Play: La interfaz consiste fundamente en rutinas de
I/O, es decir, paquetes de petición de I/O (IRPs) al sistema Plug and Play, así como entry−points
(puntos de entrada) a los controladores e información del registro.
• Interacción con la Administración de Energía: Una de las características claves del Plug and Play y
de la Administración de Energía es el manejo dinámico de sucesos. El añadir o quitar un dispositivo
es un ejemplo de un suceso dinámico así como la capacidad de dormir un dispositivo. Ambos, Plug
and Play y la Administración de Energía usan funciones basadas en WDM y tienen métodos similares
para responder a los sucesos dinámicos.
• Registro de los sucesos de notificación de los dispositivos: Plug and Play activa código en modo
usuario para notificar de ciertos sucesos Plug and Play. La rutina `RegisterDeviceNotification' permite
a los sucesos invocantes filtrar exactamente la clase o dispositivo que se desea que reciba la
notificación. Esta puede ser específica como por ejemplo un manejador (handle) de archivos o en
general como una clase de dispositivos. Los métodos de notificación de dispositivos heredados de
Windows NT van a continuar trabajando como antes.
Dispositivos y niveles de soporte del controlador
Dispositivo PnP
Dispositivo no PnP
Controlador PnP
Plug and Play completo
Posible Plug and Play parcial
Controlador no PnP
No hay Plug and Play
No hay Plug and Play
La lista que damos a continuación, explica las posibles configuraciones:
44
• Dispositivo y controlador Plug and Play. Soporte de Plug and Play completo (full): Esta es la
configuración optima al soporte Plug and Play, la implementación en el hardware debe cumplir con la
iniciativa de diseño OnNow, incluyendo ACPI. Únicamente en placas madre y BIOS que sean ACPI.
• Dispositivo Plug and Play y controlador no Plug and Play: Sin soporte Plug and Play en este caso.
Sí el controlador no soporta Plug and Play, el dispositivo se comportará como un dispositivo no PnP.
Esta situación influirá negativamente en las capacidades de todo el sistema.
• Dispositivo no Plug and Play y controlador Plug and Play: Posible soporte parcial al Plug and
Play. Un dispositivo no Plug and Play puede tener un soporte parcial Plug and Play. Sin embargo no
es posible para el sistema el reconocimiento automático y dinámico del hardware y la carga de los
controladores apropiados, es posible tener un manejo y asignación de recursos mediante una interfaz
para interactuar con el controlador y el sistema Plug and Play, interactuar con la Administración de
Energía y registrar los sucesos de notificación del dispositivo. También, si un dispositivo no Plug and
Play tiene un controlador Plug and Play el dispositivo aparecerá correctamente en el Administrador de
Dispositivos y sus propiedades estarán igualmente disponibles.
• Dispositivo no Plug and Play y controlador no Plug and Play: No existe soporte Plug and Play en
este caso. Los controladores de dispositivos heredados escritos antes de que el soporte Plug and Play
fuese incorporado al sistema operativo continuarán funcionando tal y como lo hacían anteriormente
(sin ninguna capacidad Plug and Play). Todos los nuevos controladores deben soportar Plug and Play.
4.7.1 − Arquitectura de Plug and Play
Administrador de Plug and Play en modo kernel
El administrador de Plug and Play en modo kernel mantiene el control central permitiendo a los controladores
de bus la enumeración y la configuración y permitiendo a los controladores de dispositivo añadir un
dispositivo, arrancarlo y utilizarlo.
Por ejemplo, el administrador de Plug and Play puede enviar peticiones para determinar cuando un dispositivo
puede ser parado o quitado a salvo. El administrador de Plug and Play coordina con el modo usuario de Plug
and Play la pausa o el quitar los dispositivos que estén disponibles para estas acciones.
Administrador de directivas y Administrador de Energía.
El Administrador de Energía es el componente en modo kernel que trabaja en combinación con el
Administrador de Directivas para manejar las APIs del Administrador de Energía. Coordinando sucesos de
energía y generando IRPs para dicha administración. Por ejemplo, cuando varios dispositivos solicitan ser
apagados, el Administrador de Energía colecciona dichas peticiones. Determina que peticiones deben ser
serializadas y genera las correspondientes IRPs de administración de esta energía.
El Administrador de Directivas vigila la actividad en el sistema e integra el estado de usuario, el estado de
aplicación y el estado del controlador de dispositivos en la Política de Energía. Bajo determinadas
circunstancias o bajo petición, el Administrador de Directivas genera IRPs para cambiar el estado del
dispositivo de Energía.
Componentes en modo usuario del Plug and Play.
Las APIs para controlar los dispositivos Plug and Play en Windows 2000 en modo usuario son versiones
extendidas de 32 bits del API del Administrador de Configuración en Windows 95. El Administrador de
Configuración es un controlador de dispositivo virtual (VXD) el cual suministra sus rutinas como servicios
tanto en modo kernel como en modo usuario (componentes en ring 0 y ring 3 del procesador).
En Windows 2000, estas rutinas nos dan la funcionalidad desde el modo usuario del Administrador de Plug
45
and Play y son exclusivamente APIs en modo usuario. El instalador de Windows 2000 instala estos
controladores.
Windows 2000 nos suministra una APIs que las aplicaciones pueden usar para ciertos tipos de hardware
personalizado, administración de sucesos y crear nuevos sucesos (eventos) de hardware.
4.7.2 − Interfaz WDM para Plug and Play.
El sistema de Entrada / Salida (E/S) nos suministra una arquitectura de capas para los controladores. Vamos a
introducir los tipos de controladores de WDM, capas de drivers y objetos sobre los dispositivos.
Tipos de controladores
Desde la perspectiva Plug and Play hay tres tipos de controladores de dispositivos:
• Un controlador de bus (bus driver): es un controlador de los servicios de bus, adaptador, puente
(bridge) o cualquier dispositivo que tiene dispositivos "hijos". Los controladores de bus, son
controladores necesarios y son suministrados generalmente por Microsoft. Hay un controlador de bus
por cada tipo de bus en el sistema.
• Un controlador de función (function driver): es el controlador principal y suministra la interfaz
operacional para un dispositivo. Este controlador, es totalmente necesario a no ser que el uso del
dispositivo sea directo (una implementación en la que la E/S la efectúa el controlador de bus o
controladores de bus con filtro). Esto puede hacerse en ciertos dispositivos cuya implementación es
dada en E/S por el controlador de bus y cualquier numero de controladores de "filtro". Los drivers de
función para un dispositivo están típicamente implementados como un par de
controlador/minicontrolador (driver/minidriver). En estos controladores pares, el controlador de clase
(class driver) es usualmente escrito por Microsoft, y nos da la funcionalidad requerida para todos los
dispositivos de una clase o tipo. Y el minidriver, escrito usualmente por el fabricante de hardware,
permite utilizar la funcionalidad especifica del dispositivo.
• Un controlador de filtro (filter driver): ordena peticiones de E/S para un bus, un dispositivo o una
clase de dispositivos. Los controladores de filtro son opcionales y pueden existir en cualquier número,
colocado además, encima o debajo del driver de función y por encima del driver de bus.
Normalmente, los controladores de filtro serán suministrados por los montadores (OEMs) o por los
vendedores independientes de hardware (IHVs).
En algunos casos, los controladores de filtro de bajo nivel modifican las salidas de un dispositivo hardware.
Los controladores de filtro de alto nivel, normalmente nos dan valores añadidos o características para un
dispositivo. Por ejemplo, un controlador de dispositivo de filtro de alto nivel para un teclado pudiera hacer
cumplir chequeos adicionales de seguridad.
Interfaces adicionales de Windows 2000.
Los controladores de Plug and Play en Windows 2000 no están limitados a usar interfaces WDM. Los
controladores pueden llamar a otras interfaces para soportar dispositivos heredados (legacy devices) en
Windows 2000, u otras capacidades especificas que Windows 2000 que no son suministradas bajo WDM.
Debemos tener presente que un driver que soporte características especificas de Windows 2000, no será
compatible con Windows 98. Si un controlador va a ser usado en ambos sistemas, solo deberán usarse
interfaces WDM.
Controladores de bus WDM.
46
La Administración de Energía del bus y el Plug and Play están manejadas por controladores de bus WDM, los
cuales con controladores estándar WDM que tienen esas capacidades especificas para el bus. Un controlador
de bus responde ahora a las nuevas peticiones de Plug and Play y Administración de Energía mediante
paquetes de petición de E/S es decir: IRPs (I/O Request Packets) que además pueden extender sus
capacidades, usando controladores de filtro.
El controlador de bus, es el primer responsable de lo siguiente:
• Enumerar los dispositivos en el bus
• Informar dinámicamente de los sucesos en este bus al sistema operativo.
• Responder a las peticiones de los IRPs de Plug and Play y Administración de Energía.
• Multiplexar el acceso al bus (en algunos buses)
• Generalmente, administrar los dispositivos que cuelgan de ese bus.
• Durante la enumeración, un controlador de bus identifica los dispositivos en este bus y creo
dispositivos "objetos" para ellos. El método usado por un controlador de bus para identificar los
dispositivos depende del bus en particular.
Microsoft suministra controladores de bus para los buses más comunes, incluidos los PCI, PnP ISA, SCSI y
USB
El controlador de ACPI realiza plenamente el papel de ambos: controlador de bus y controlador de función.El
ACPI permite al sistema conocer los dispositivos que no tienen un método estándar de enumeración en si
mismos (como los dispositivos heredados) o no han sido correctamente construidos bajo las nuevas normas
ACPI para ser enumerados por el ACPI (como por ejemplo, un dispositivo LID o un dispositivo controlador
embebido).
Controladores de dispositivos WDM
Los controladores de dispositivos WDM son usualmente el par `driver/minidriver' y los controladores de filtro
que hemos visto previamente. Además para darnos la interfaz operativa para un dispositivo los controladores
de función juegan un papel importante en el manejo de Energía en el sistema, añadiendo información como
puede ser el propietario de la política para el dispositivo y los posibles estados desde la situación de
"dormido" a la situación de totalmente operativo.
4.8 − AdministraDOR de Energía.
La Interfaz ACPI
La interfaz ACPI permite al sistema operativo un control directo sobre la Administración de Energía y las
funciones Plug and Play del ordenador. Cuando está operativo, toma control sobre las funciones de las
interfaces de las BIOS legadas como las APM BIOS y PnPBIOS. Una vez realizado esto, el sistema operativo
toma la responsabilidad del manejo de los sucesos Plug and Play como el control de Energía y estado de la
temperatura basado en las opciones del usuario y en peticiones de las aplicaciones. ACPI nos da el control a
bajo nivel que el sistema puede tener con esas funciones. Las áreas funcionales manejadas por las
especificaciones ACPI son:
• Administración de Energía del Sistema: ACPI define los mecanismos para poner al ordenador en
situación de espera (dormido). También nos da un mecanismo general para que cualquier dispositivo
pueda "despertar" al ordenador.
• Administración de Energía de los dispositivos: Las tablas del ACPI, describen los dispositivos de la
Placa Madre, sus estados de Energía y los posibles estados de Energía de los dispositivos que están
conectados y controla la situación de los dispositivos en los diferentes estados de Energía. Esto
47
permite al sistema operativo para poner a cualquier dispositivo en situación de ahorro de energía
basándose en el uso de él por parte de las aplicaciones.
• Administración de Energía del procesador: Cuando el sistema operativo no está ocupado (pero
tampoco está durmiendo), puede usar los comandos descritos por la especificación ACPI para poner a
los procesadores en estados de bajo consumo.
• Plug and Play: El ACPI especifica la información usada para enumerar y configurar los dispositivos
conectados a la placa madre. Esta información es del tipo jerárquico. Cuando existen sucesos como
conectar o desconectar un dispositivo de su sitio, el sistema operativo precisa conocer que otros
dispositivos van a ser afectados por el suceso. Por ejemplo, al eliminar un HUB USB, todos los
dispositivos que cuelgan jerárquicamente de él, serán eliminados.
• Sucesos del Sistema: El ACPI nos da un mecanismo general de sucesos que puede ser usado por los
sucesos del sistema como son: sucesos térmicos, sucesos de administración de energía, pinchar un
dispositivo o quitarlo, etc. Este mecanismo es verdaderamente flexible y en sí mismo, no especifica
explícitamente cuantos sucesos son encaminados al núcleo lógico del chipset.
• Administración de la batería: La política de la Administración de la batería desplaza el control de
las bios APM al ACPI. El sistema operativo determina el estado de batería baja y avisos de la batería
y calcula la capacidad remanente en ella. Un dispositivo de batería ACPI compatible necesita la
interfaz del subsistema Smart Battery que es controlado directamente por el sistema operativo a través
de una interfaz de controlador embebido o un Control Method Battery (CMBatt) Interfaz. Una
interfaz CMBAtt está totalmente definida por los métodos de control, permitiendo a los OEM escoger
cualquier tipo de batería y cualquier tipo de interfaz de comunicación soportada por el ACPI.
• Administración de Temperatura: El sistema operativo controla los estados de Energía de los
dispositivos y los procesadores. ACPI también dirige la administración de los sucesos de temperatura.
Suministra un modelo simple y escalable para permitir a los OEMs definir zonas calientes.
Indicadores térmicos y métodos para la ventilación de las zonas calientes.
• Controlador Embebido: ACPI define una interfaz estándar de comunicaciones hardware y software
entre un enumerador de bus del sistema operativo y un controlador embebido. Esto permite a
cualquier sistema operativo a dar un enumerador de bus estándar que puede comunicarse directamente
con un controlador embebido en el sistema permitiendo a los otros controladores comunicarse y usar
los recursos de los controladores embebidos del sistema.
• Control del Administrador del Bus del Sistema: ACPI define una interfaz estándar de
comunicaciones hardware y software entre un controlador de bus del sistema y un controlador
SMBus. Esto permite a cualquier sistema operativo el poder comunicarse directamente con
dispositivos SMBus en el sistema.
Administrador de Energía OnNow
En un PC, que ya empieza a formar parte diariamente de nuestra vida cotidiana tanto en el lugar de trabajo
como en nuestra casa, el PC debe responder inmediatamente y estar disponible instantáneamente para
responder al teléfono, ver un nuevo correo, o navegar por Internet. Con estas necesidades, el PC debe estar
siempre encendido y listo para su uso, pero debe aparecer como apagado cuando no está en uso. El hardware y
el software del PC deben ser capaces de responder inmediatamente al botón de encendido, o a los sucesos de
redes y comunicaciones y posiblemente a otras acciones. Finalmente el PC debe ser capaz de volver al modo
de "apagado, pero listo automáticamente y debe ser capaz igualmente de sobrevivir a los posibles abusos en el
uso en la vida diaria.
La iniciativa OnNow es el intento de poner la plataforma PC al más alto nivel de uso y robustez que permita
usar en el PC estas nuevas capacidades. Para la iniciativa OnNow el termino plataforma PC envuelve no solo
el hardware del PC, sino también el software que se está ejecutando en él. La clave de creación del PC
OnNow es la integración. Es esencial que el hardware, el Sistema Operativo y las aplicaciones trabajen
siempre para asegurar que el PC opera como se espera de él.
48
La plataforma PC OnNow sigue estos dos principios:
• El PC está preparado para usarse inmediatamente cuando el usuario pulsa el botón de encendido.
• El PC debe ser capaz de apagarse cuando no es utilizado y ser capaz de responder a los sucesos de
aviso para despertarle. Los sucesos para despertarle, pueden ser disparados por un dispositivos que
recibe una entrada como por ejemplo una llamada telefónica o por un software que ha solicitado al PC
el despertarse a una determinada hora.
El sistema operativo y las aplicaciones trabajan conjunta e inteligentemente en el manejo de la Administración
de Energía de acuerdo con lo que el usuario necesita y espera. Por ejemplo, las aplicaciones no deben dejar
inadvertidamente el PC ocupado cuando no sea necesario y de esta manera participan en el apagado del PC
para ahorrar energía y reducir costo.
Todos los dispositivos participan en el esquema de la Administración de Energía, bien los originalmente
instalados en el PC, o bien los añadidos posteriormente por el usuario. Todos los nuevos dispositivos deben de
poder cambiar su estado de Energía.
La actual plataforma del PC, no satisface las demandas del PC OnNow por varias razones. Los actuales PCs
deben iniciarse al ser encendidos y este es un proceso bastante lento. Una vez encendido, el PC debe estar
totalmente preparado para poder responder a los sucesos asíncronos o a los sucesos planificados. Para
solucionar los actuales problemas que presenta el PC, la industria debe colaborar y fijar todos estos
problemas.
Arquitectura OnNow
Para poner en practica las especificaciones OnNow es necesario eliminar los tiempos de demora tanto en el
inicio como en el apagado del sistema, permitir que se ejecuten tareas automatizadas cuando el PC está
apagado y dar al PC un mayor control sobre al Energía. Y como complemento, los desarrolladores deben
desarrollar un colección simple de hardware y software en sus sistemas de tal manera que los controladores
puedan trabajar tanto en entorno Windows 98 como Windows 2000.
Los cambios específicos deben ser incorporados en varios niveles en la arquitectura del sistema. Estos
cambios requeridos son los siguientes:
• Mejorar la funcionalidad del núcleo del sistema operativo para la Administración de Energía. En la
arquitectura OnNow el sistema operativo asume el papel central de coordinar las actividades de
administración de energía en todos los niveles y tiene además la responsabilidad de definir las
transiciones de los estados de energía del sistema.
• Crear y unificar el modelo de controladores de dispositivos para la Administración de Energía y el
Plug and Play. Esto implica la creación de un único modelo para los controladores de dispositivos
para ambos sistemas: Windows 98 y Windows 2000 que soporte la administración de energía por
dispositivo además de soportar el Plug and Play.
• Implementar una nueva interfaz en el sistema para la Administración de Energía y el Plug and Play.
Es necesario un diseño del sistema que incorpore un sistema operativo dirigido a la política de la
Administración de Energía y permitir su control por cada dispositivo incorporado en la placa madre.
Con una arquitectura del sistema simple, la funcionalidad de la interfaz del sistema en tiempo de
ejecución puede ser repartida para soportar una complejidad adicional, poder dar soporte a futuras
expansiones y seguir suministrando integración.
• Define los estándares para la Administración de Energía en el bus y en los dispositivos hardware. De
la misma manera que el Plug and Play estandarizó los mecanismos de configuración en el PC,
OnNow debe dar unos estándares comprensivos para las interfaces de la Administración de Energía y
las definiciones de cambios de estado.
49
• Define una arquitectura de aplicación para integrar las aplicaciones en la Administración de Energía.
Integrándose en los mecanismos existentes de lug and Play para las aplicaciones estas mejoras deben
hacerse en el flujo de información y control a las interfaces de las aplicaciones para poder permitir
que el entorno de usuario se integre completamente bajo las capacidades del PC.
4.9 − EL DIRECTORIO ACTIVO
Aunque no pertenece al Ejecutivo ni existe ningún subsistema asociado al directorio activo, esta es una de las
principales novedades de Windows 2000 Server en lo que a la red se refiere, por tanto a continuación
realizaremos una pequeña aproximación de que es el Directorio Activo.
4.9.1 − Introducción a los servicios de directorio
Un directorio es una colección almacenada de información acerca de objetos que están relacionados unos con
otros de alguna manera. Un directorio telefónico almacena información acerca de números de teléfono y
nombres por ejemplo.
En un sistema de ordenadores distribuido, o bien en una red pública, como Internet, existen multitud de
objetos, como por ejemplo, servidores de ficheros, impresoras, servidores de fax, aplicaciones, bases de datos,
usuarios... Los usuarios quieren localizar estos objetos y utilizarlos. Los Administradores quieren administrar
como son usados estos objetos. Si toda la información necesaria para usar y administrar estos objetos
(usuarios, grupos, recursos, etc ) está almacenada en una localización centralizada, entonces el proceso de
localizar y administrar estos recursos puede ser realmente sencillo. Esto es cuando un servicio de directorio
nos resulta de gran utilidad.
Un servicio de directorio nos da el medio de organizar y simplificar un acceso a los recursos en cualquier
sistema basado en red. Usuarios y administradores, pueden no conocer el nombre exacto de los recursos que
necesitan. Pero seguro que conocen uno o más atributos de los objetos que desean encontrar. Con un servicio
de directorio se puede preguntar que muestre una lista de objetos que coincidan con atributos que conocemos.
Por ejemplo: Dime todas las impresoras de color de la tercera planta. Un servicio de directorio hace posible
encontrar un objeto basándose en uno o más de sus atributos. Otros servicios suministrados por un directorio
son:
• Refuerza la seguridad para proteger los objetos de intrusos o de usuarios internos que no tienen
permiso para acceder a estos objetos.
• Realiza una copia de si mismo (replicación) en otros ordenadores para estar siempre disponible en
caso de fallo o caída en el ordenador en donde reside.
• Dividir un directorio en múltiples almacenamientos que están localizados en diferentes maquinas a lo
largo de la red.
• Un servicio de directorio son ambas cosas: una herramienta de administración y una herramienta de
usuario final.
Después de crear un directorio de este tipo, es posible poner en marcha varias aplicaciones que lo utilicen. Es
posible crear aplicaciones sencillas, como un servicio de directorio de información personal o aplicaciones
complejas para gestionar un sistema operativo de red. Al igual que otros servicios de directorio como Novell
Directory Services (NDS) o StreetTalk, de Banyan, el Directorio Activo proporciona un directorio de objetos
específicos para el sistema operativo de red que permiten manejar, no sólo los usuarios y sus propiedades,
sino también otra gran cantidad de prestaciones específicas como los GPO (Group Policy Objects o objetos de
directiva de grupos) e infraestructura de claves públicas (Public Key Infraestructure o PKI). El tipo de objetos
que puede contener un directorio es prácticamente ilimitado. Aun así, es necesario tener en cuenta
consideraciones de rendimiento y replicación.
50
El protocolo X.500, basado en la Organización Internacional para la Estandarización (ISO), es el estándar de
servicios de directorio más conocido. X.500 especifica un esquema por defecto que describe clases de objetos
y sus atributos asociados. Los directorios basados en X.500 comparten diversas características. La más
importante de los directorios basados en X.500 es la unidad organizacional (Organizational Unit u OU). La
OU recibe el apelativo de "objeto contenedor" dentro de un directorio, debido a que la OU puede contener
otros objetos (que pueden ser, a su vez, nodos finales u otros contenedores). Dado que los directorios basados
en X.500 permiten crear objetos que pueden contener otros objetos, estos directorios permiten el uso de
relaciones jerárquicas. Por tanto, es posible relacionar árboles de OU situando a cada árbol como subordinado
del anterior. Esta potente posibilidad de Directorio Activo permite delegar tareas de administración a un
subconjunto de usuarios dentro de un dominio Windows 2000. La OU proporciona un control granular de la
delegación de la gestión de recursos. En Windows 2000, la unidad de delegación es la OU, mientras que en
NT 4.0, este papel lo cumple el dominio.
Otra parte fundamental del servicio de directorio es el esquema, que define la estructura interna de un
directorio. El esquema define las relaciones entre las clases de objetos. Cada clase de objeto tiene asociado un
conjunto de atributos. Una clase llamada Persona podría tener un atributo llamado Nombre, lo que
especificaría que los objetos de la clase Persona contienen información sobre su Nombre, por ejemplo.
Adoptando un modelo orientado a objetos, las clases heredan de otras clases, formando una jerarquía. El
esquema del Directorio Activo es extensible. Esto significa que es posible modificar el esquema para crear
nuevas clases y nuevos atributos para las clases existentes.
4.9.2 − Características del Directorio Activo
Un Directorio Activo en el servicio de directorio incluido en Microsoft Windows 2000 Server. El Directorio
Activo, incluye al directorio, el cual almacena la información acerca de los recursos de red, así como los
servicios que hacen que dicha información es disponible y pueda utilizarse. Los recursos almacenados en el
directorio, como los datos de un usuario, impresoras, servidores, bases de datos, grupos, ordenadores y
políticas de seguridad son objetos conocidos.
Facilidades que incorpora el directorio activo:
• Es un único punto de conexión a la red para todos los recursos de red.
• Hace que la estructura física de la red sea transparente a los usuarios.
• Hace que las aplicaciones sean independientes de su localización.
El Directorio Activo está integrado en Windows 2000 Server y ofrece:
• Administración simplificada.
• Escalabilidad.
• Soporte abierto a estándares.
• Soporte para formatos estándar de nombres.
Administración simplificada.
Un Directorio Activo, nos da un único punto de Administración para todos los recursos de la red. Por tanto,
podemos acceder a recursos localizados en cualquier lugar de la red con una simple conexión a la red.
El Directorio Activo organiza los recursos jerárquicamente en dominios. Un dominio es un grupo lógico de
servidores y otros recursos de red bajo un único nombre de dominio. El dominio es la unidad básica de
replicación y seguridad en la red de Windows 2000.
Cada dominio incluye uno o más controladores de dominio. Un controlador de dominio es un ordenador
51
ejecutando Windows 2000 Server que almacena una replica completa del directorio del dominio. Para
simplificar la Administración, todos los controladores de dominio son iguales en un Directorio Activo, por
tanto pueden realizarse cambios en cualquier controlador de dominio y las actualizaciones son replicadas a
todo el resto de controladores de dominio en el dominio.
Escalabilidad
En un Directorio Activo, el directorio almacena información usando particiones, los cuales son divisores
lógicos para organizar el directorio en secciones y permitir el almacenamiento de un elevado numero de
objetos. Como resultado de lo anterior, el directorio puede expandirse como los grupos de una organización,
permitiendo escalar desde una pequeña instalación con pocos cientos de objetos a una gran instalación con
millones de objetos.
Soporte abierto a estándares.
Un Directorio Activo integra el concepto Internet de un espacio de nombres (namespace) con los servicios de
directorio de Windows 2000. Esto permite unificar y manejar múltiples namespaces que actualmente existen
en entornos de software y hardware heterogéneos en las redes corporativas. Un Directorio Activo utiliza el
DNS (Domain Name System) para sus nombres del sistema y puede intercambiar información con cualquier
aplicación o directorio que utilice el protocolo LDAP (Lightweight Directory Access Protocol) o el protocolo
HTTP (Hypertext Tranfer Protocol).
• El Domain Name System: El Directorio Activo utiliza el DNS como nomenclatura de nombres de
dominio y localización de los servicios. Los nombres de Dominio de Windows 2000 son también
nombres DNS. Windows 2000 utiliza un DNS dinámico, con clientes activos a los cuales les son
asignadas direcciones dinámicamente registrándose directamente en el servidor de DNS y
actualizando las tablas del DNS dinámicamente. El DNS dinámico elimina la necesidad de otros
servicios de nombres Internet como por ejemplo el WINS (Windows Internet Naming Service).
• Soporte para LDAP y HTTP: El Directorio Activo abarca los estándares Internet para soporte
directo a los protocolos LDAP y HTTP. LDAP es un estándar Internet (RFC 1777) para acceder a los
servicios de directorio que fue desarrollado como una alternativa simple al protocolo X.500 DAP. El
Directorio Activo soporta tantos las versiones 2 y 3 de LDAP. HTTP es un protocolo estándar para
ver paginas en la red (WWW). Cada objeto en un Directorio Activo puede ser mostrado como una
pagina HTML en un navegador Web. Los usuarios por tanto pueden beneficiarse de un modelo de
visor familiar en la red cuando consultan o ven objetos en un Directorio Activo.
Soporte para formatos estándar de nombres.
Los Directorios Activos soportan varios formatos comunes de nombres. Por tanto, los usuarios y aplicaciones
pueden acceder a un Directorio Activo utilizando el formato con el cual estén mas familiarizados. La siguiente
tabla describe algunos formatos estándares de nombres soportados por el Directorio Activo.
Formato Descripción Ejemplo
Formato
usualmente
utilizado en
RFC822 las
Nombre@dominio
direcciones
de correo
electrónico
HTTP URLs
http://dominio/pagina
URL
(Uniform
52
LDAP
URLs
UNC
Resource
Locators),
utilizadas
para las
direcciones
de Internet
Los nombres
LDAP
utilizan los
atributos de
nombre
X.500. Una
URL LDAP
especifica el
LDAP://algun_servidor.myco.com/CN=pepeperez,OU=sys,OU=product,OU=division,O=myco
servidor que
contiene los
servicios del
directorio
activo y los
nombres de
atributos del
objeto.
El Directorio
Activo
soporta la
convención
universal de
nombres
utilizados en
file://myco.com/xl/budget.xls
las redes
Windows
para referirse
a volumenes
compartidos,
impresoras, y
ficheros.
4.9.3 − Infraestructura del Directorio Activo
EStructura lógica
En un Directorio Activo podemos organizar los recursos en una estructura lógica. Una agrupación lógica de
recursos, nos permite encontrar un recurso por su nombre o sus atributos en vez de por su localización física.
Objeto: Un Objeto es una única colección de atributos que representa un recurso de red y que podemos
asignarle un nombre. Los atributos del Objeto son características de los objetos en el directorio. Por ejemplo,
los atributos de un usuario, pueden ser su nombre, apellidos, departamento y dirección de e−mail.
En un Directorio Activo, podemos organizar los objetos en clases, las cuales son agrupaciones lógicas de
objetos. Ejemplos de clases son: usuarios, grupos, ordenadores, dominios, o unidades organizativas.
53
Algunos objetos, conocidos como objetos contenedores, pueden contener otros objetos. Por ejemplo: un
dominio es un objeto contenedor.
Unidad Organizativa (OU): Una Unidad Organizativa (OU) es un objeto contenedor que podemos utilizar
para organizar los objetos en un dominio en grupos lógicos administrativos. Un OU puede contener objetos
como: cuentas de usuarios, grupos, ordenadores, impresoras, aplicaciones, ficheros compartidos y otras OUs.
La jerarquía OU en un Dominio es independiente de la estructura de otros dominios. Cada Dominio puede
implementar su propia jerarquía OU. Podemos asignar permisos a las OU para delegar la Administración.
Dominio: La unidad central de la estructura lógica en un Directorio Activo es el Dominio. Agrupando objetos
en uno o más dominios, nos permite reflejar la organización de una empresa en la red.
Todos los objetos de red existen dentro de un dominio, y cada dominio almacena información únicamente de
los objetos que contiene.
El acceso a los objetos del dominio está controlado por las listas de control de acceso (Access Control Lists −
ACL−). Todas las políticas de seguridad y opciones, como derechos Administrativos, políticas de seguridad y
ACLs, no se transmiten de un dominio a otro. El Administrador del dominio, tiene derechos absolutos para
colocar las políticas solo en su dominio. A un Dominio se le denomina también partición de un Directorio
Activo. Todos los Dominios en un bosque (forest) forman el Directorio Activo.
En Windows 2000, las directivas de seguridad continúan vinculadas al dominio, y siguen existiendo grupos de
Administradores de Dominio. Sin embargo, los dominios Directorio Activo ya no utilizan el estándar de
denominación NetBIOS de 15 caracteres. Aunque los dominios Directorio Activo cuentan con un nombre
NetBIOS para mantener la compatibilidad, los dispositivos Windows 2000 reconocen a los dominios
54
Directorio Activo por sus nombres DNS. El servicio de nombres por defecto de Windows 2000 es DNS, y
todos los dominios Directorio Activo cuentan con un dominio DNS para identificarlos (por ejemplo,
dominio.com).
Árbol (Tree): Un tree (Árbol) es una agrupación jerárquica de uno o más dominios en Windows 2000 que
permiten compartir recursos globales.
Un árbol puede consistir en un único dominio Windows 2000. Los dominios en un árbol pueden unirse
transparente y bidireccionalmente con relaciones de confianza transitiva Kerberos. Una relación de confianza
Kerberos simple es, sí el Dominio A confía en el Dominio B y el Dominio B confía en el Dominio C,
entonces el Dominio A confía en el Dominio C.
Todos los dominio en un árbol simple, comparten un espacio para nombres (namespace) común y una
estructura de nombre jerárquica. Siguiendo al DNS estándar en nombre del dominio de un dominio hijo es el
nombre relativo de este dominio hijo añadiéndole el nombre del dominio padre.
Todos los dominios en un árbol simple, comparten un esquema común, el cual es la definición formal de
todos los tipos de objeto que podemos almacenar en un Directorio Activo. Además todos los dominios con un
árbol simple comparten un catálogo común global, el cual es el repositorio central o la información acerca de
los objetos en un árbol o en un bosque.
Un ejemplo de ámbito de denominación contiguo es un árbol de dominios que tenga como raíz al dominio
dominio.com, un dominio hijo bajo dominio.com denominado hijo.dominio.com, y un dominio hijo bajo
hijo.dominio.com denominado nieto.hijo.dominio.com. En este ejemplo, los tres dominios forman un espacio
de nombres contiguo, y, por tanto, constituyen un árbol de dominios.
Bosque (Forest): Un bosque es un grupo jerárquico organizado de uno o más arboles.
Los bosques permiten a las organizaciones agruparse en divisiones (o dos organizaciones pueden combinar
sus redes) esto no utiliza el mismo esquema de nombres y puede operar independientemente, pero necesita
comunicarse con la organización entera.
55
Los arboles en el bosque comparten el mismo esquema y reglas de cómo trabajan los objetos. Todos los
dominios en un bosque tienen el mismo catalogo global y el mismo contenedor de la configuración.
RELACIONES DE CONFIANZA
Una relación de confianza es un enlace entre al menos dos dominios en el cual un dominio de confianza
autentifica todas las conexiones para el dominio que confía en él.
En Windows NT 4 y versiones anteriores, las relaciones de confianza entre dominios están definidas en una
sola vía (no son bidireccionales) de confianza entre Controladores de Dominio. Cada confianza debe
establecerse u manejarse individualmente. La administración de estas relaciones explícitas entre dominios en
una red amplia es una tarea compleja.
Relaciones de confianza transitivas.
La confianza transitiva entre dominios simplifica la administración de confianza entre dominios. Los
dominios son ahora miembros de un árbol que tienen definida una relación bidireccional con el padre del
dominio en el árbol.
El administrador de red puede definir cuentas unidireccionales explícitas para dominios específicos cuando la
confianza bidireccional no sea la apropiada.
Cuando añadimos en Windows 2000 un dominio a un árbol, se establece automáticamente una relación de
confianza entre el nuevo dominio y el dominio principal o el dominio padre en el árbol.
El Directorio Activo de Windows 2000 también soporta confianza en una sola vía para clientes de bajo nivel.
56
estructura fisica
• Catálogo global. El catálogo global es un nuevo concepto de Windows 2000. El catálogo es un índice
separado de objetos en un bosque Directorio Activo. Por defecto, este índice contiene todos los
objetos en la base de datos completa de Directorio Activo, pero sólo una parte de los atributos de cada
objeto. El catálogo global permite a los usuarios encontrar rápidamente objetos de directorio a lo largo
de todo el bosque sin tener que ir al controlador de dominio del dominio en el que reside el objeto. El
catálogo global es especialmente útil cuando se cuenta con varios dominios y árboles de dominios
diseminados a lo largo de una red diversa. Para que los clientes puedan autentificarse en un domino
Directorio Activo, es necesario que exista, al menos, un servidor de catálogo global en cada red.
• Grupos Windows 2000. NT 4.0 cuenta sólo con dos grupos: global y local. Estos grupos existen
únicamente por motivos de seguridad (es decir, para controlar la seguridad de un recurso), y sólo
pueden contener objetos usuario. Windows 2000 cuenta con grupos globales y locales para un
dominio, así como un nuevo grupo de seguridad denominado "grupo universal". Los grupos
universales pueden contener grupos globales y otros grupos universales de cualquier dominio de un
bosque. En cambio, los grupos globales son específicos para un dominio: un grupo global puede
contener sólo usuarios, ordenadores u otros grupos del mismo dominio. Los grupos globales de un
dominio pueden ser miembros de los grupos locales de otro dominio. Los grupos universales también
permiten anidar grupos globales y universales de otros dominios de un bosque. En Windows 2000, es
posible crear grupos de seguridad que contengan objetos ordenador. Esto significa que es posible
asignar permisos sobre recursos utilizando grupos basados en máquinas en lugar de en usuarios.
Windows 2000 permite crear grupos no relacionados con la seguridad, denominados "grupos de distribución",
que cuentan con un ámbito similar al de los grupos de seguridad (es decir, locales, globales y universales).
Estos grupos actúan como Listas de Distribución (Distribution Lists o DL): carecen de características de
57
seguridad, pero permiten agrupar usuarios para otros propósitos, como, por ejemplo, el correo electrónico.
• Árbol de Información de Directorio (Directory Information Tree o DIT). En NT 4.0, la base de
datos del Administrador de cuentas de seguridad (Security Account Manager o SAM) almacena la
información sobre usuarios, grupos y equipos para un dominio. Dado que la SAM es una rama del
Registro, su escalabilidad se ve limitada por la del Registro. En los controladores de dominio
Windows 2000, la SAM se ve reemplazada por DIT. DIT se basa en el motor de base de datos
Microsoft. El archivo ntds.dit del directorio %systemroot%\ntds es el equivalente en Windows 2000
al archivo SAM. Este archivo almacena el grueso de la base de datos del directorio. En general, DIT
es superior a la antigua SAM, puesto que el Directorio Activo almacena más información y tipos de
objetos de los que utiliza el servicio de directorio de NT 4.0. Dentro de un dominio, los contenidos del
archivo ntds.dit se replican a todos los controladores de dominio.
• Replicación de directorios. Windows 2000 utiliza un nuevo modelo de replicación para asegurarse
de que todos los controladores de dominio de un bosque cuentan con información actualizada. Este
modelo se basa en el concepto de la replicación "multimaster. En Windows 2000, todos los
controladores de un dominio cuentan con copias de lectura/escritura de DIT. Los usuarios pueden
introducir cambios en cualquier controlador de dominio y éstos se propagan al resto de controladores
del dominio. Windows 2000 utiliza una característica denominada "Número de secuencia de
actualización" (Update Sequence Number o USN) para averiguar cuándo los cambios deben copiarse
de un controlador de dominio a otro: todo objeto y propiedad del Directorio Activo cuenta con un
USN, y los controladores de dominio utilizan este número para determinar cuándo se han producido
cambios en otro controlador. Durante un ciclo de replicación, los cambios para cada propiedad se
replican (sólo los cambios, no la información completa). Por ejemplo, si el número de teléfono de un
usuario se modifica en el controlador 1, sólo se copia al controlador 2 el nuevo número de teléfono,
no todo el objeto del usuario. Si se produce un cambio en una propiedad en dos controladores de
dominio, una marca de tiempo asegura que el cambio que tenga efecto sea el último en producirse.
Los controladores de dominio de un bosque utilizan tres contextos de denominación (naming contexts) para
replicar la información del dominio y de Directorio Activo. Es posible equiparar los contextos de
denominación a los caminos que toma la información. Cada contexto de denominación puede elegir distintos
caminos entre los controladores de dominio de un bosque, y cada contexto replica información distinta,
dependiendo del papel de esta información. El contexto de denominación "dominio" replica los cambios en el
DIT a los controladores de dominio del mismo dominio. El contexto de denominación "esquema" replica la
información del esquema a todos los controladores de dominio de un bosque. Por último, el contexto de
denominación "configuración", replica información de configuración, como la topología de replicación, a
todos los controladores de dominio de un bosque.
• Estructura de un controlador de dominio. En NT 4.0, el PDC es el único punto desde donde
pueden efectuarse cambios en la SAM, así como un punto centralizado de fallo. Como ya hemos
comentado, Windows 2000 no necesita el PDC para actualizar la SAM, ya que a que el sistema
operativo soporta la replicación multimaster del Directorio Activo. Sin embargo, sigue habiendo una
razón de ser para el PDC. Los bosques de Windows 2000 necesitan que los controladores de dominio
adopten las siguientes funciones como maestro de operaciones (operations master): PDC, Almacén de
Identificadores Relativos (Relative Identificer o RID), Infraestructura, Denominación de dominios y
Esquema. Anteriormente, Microsoft daba el nombre de FSMO a las funciones del maestro de
operaciones. FSMO significaba Flexible (o floating) single−master−operations (Operaciones de
maestro único flexibles/flotantes).
Funciones como la de Maestro de operaciones del PDC, Almacén de RID e Infraestructura deben estar
asignadas, al menos, a un controlador de dominio por dominio.
Las funciones de Denominación de dominios y Esquema residen en al menos un controlador de dominio
58
dentro de un bosque. La función de Denominación de dominios asegura que los nombres de dominio sean
únicos dentro de un bosque a medida que se añaden nuevos dominios. La función de Esquema define qué
controlador de dominio puede introducir cambios en el esquema de directorios, ya que permitir que varios
controladores realicen cambios de esquema en un directorio puede causar problemas.
5 − CONCLUSIONES
En cuanto a las conclusiones que vamos a comentar en este apartado decir que las hemos sacado a partir de la
documentación bibliográfica y a partir de las impresiones que nos ha producido Windows 2000 en cuanto a
pruebas realizadas en nuestros ordenadores.
La interfaz de Windows 2000
La primera impresión al entrar en Windows 2000 es que estamos en una interfaz propia de Windows 98,
Windows ME o Windows NT 4, quizás más parecida a las dos primeras, ya que el sistema de ventanas y
menús apenas ha variado, aunque ahora éstos son bastante más configurables, pudiéndose fácilmente arrastrar
accesos directos y variar el orden en que aparecen. Además, el escritorio también se puede personalizar por el
método del Escritorio Activo para que incluso se nos actualice automáticamente a través de Internet.
Las propiedades asociadas a cada archivo han sido mejoradas, permitiendo acceder a todo tipo de información
sobre el propietario de los ficheros y los derechos que sobre él tendrán el resto de los usuarios.
Windows 2000 permite personalizar el modo en que aparecen los submenús, eligiendo entre los diferentes
efectos de desplazamiento o transición según quiera el usuario.
Como sucedía en Windows 98, es posible modificar la apariencia con que se nos presentan las carpetas en el
explorador, aunque en Windows 2000 las opciones son mucho más completas, ya que se beneficia de la
utilización de plantillas generadas en HTML.
Por último cabe destacar, en cuanto a la interfaz, que es una interfaz integrada en la Red, potenciando el
contenido Activo, ya presentado en Windows 98. Así podemos destacar la posibilidad de integrar canales y
páginas web en el fondo del escritorio o elementos multimedia de todo tipo. Sin embargo si queremos ganar
en velocidad de sistema podremos utilizar el escritorio clásico de Windows.
Impresiones generales
Como ya hemos visto, Windows 2000 posee muchas mejoras con respecto a sus predecesores, sobretodo en
cuanto al soporte de nuevas tecnologías y gran cantidad de elementos multimedia (muchos más que Windows
NT 4.0), a pesar de eso en el aspecto multimedia el soporte es menor que con anteriores sistemas operativos
como Windows 9X y Millenium Edition.
Además siguiendo la vía de NT en cuanto a la facilidad en la gestión de recursos en red, que sigue siendo uno
de sus puntos fuertes, con la incorporación del Directorio Activo la gestión de redes empresariales se
simplifica enormemente e incorpora los servicios de directorios que ya estaban presentes en otros sistemas
operativos dirigidos a las grandes corporaciones y que son el principal objetivo de Microsoft.
Además de esto Windows 2000 cuenta como puntos fuertes como un nuevo gestor de arranque, que añade a
los dos ya conocidos de modo normal y modo VGA, los modos seguro, seguro con red y con símbolo del
sistema, así como la posibilidad de usar la última versión buena del sistema conocida. Otros puntos fuertes
serían mejoras en el explorador, la gestión recursos, que permite ejecutar varios programas a la vez con gran
soltura, el soporte software (gran compatibilidad con aplicaciones) y hardware (Plug & Play, Administración
de energía, gran cantidad de drivers), la simplificación de la administración tanto del sistema como de los
59
recursos en red, sin olvidar la inclusión del encriptado de datos de 128 bits.
La estabilidad del sistema es uno de los puntos a destacar y que más agradecemos los usuarios de Windows,
sobre todo con la eliminación de las odiosas pantallas azules de error. Los fallos son menos habituales,
suponemos que en parte gracias al mayor control sobre los drivers, y los mensajes mucho más claros. Además
pese a los errores, el sistema no se suele quedar colgado sino que tan solo el módulo o aplicación que ha
provocado el error.
En general creemos que Windows 2000 es un Sistema Operativo bastante seguro y fiable, y con gran facilidad
de manejo, gracias sobretodo a la interfaz. Sin embargo para el usuario medio quizás sea un sistema
demasiado exigente, especialmente en los requisitos hardware y con demasiadas opciones, esto quizá pueda
ser un lastre para la estrategia de Microsoft de aunar la plataforma NT con la plataforma 9X en su próxima
generación de sistemas operativos, Windows XP, que prevén lanzar antes de finales de año. En cambio los
usuarios más exigentes pueden echar en falta la potencia de otros sistemas en especial los de código libre y la
capacidad de control sobre el sistema que poseen estos sistemas operativos. Esto unido con los defectos antes
comentados para los usuarios medios y los polémicos certificados para el desarrollo de drivers podría
provocar una mayor tendencia del mercado hacia los sistemas operativos de código libre.
El trabajo
En cuanto a la realización del trabajo tenemos que decir que hemos tenido mucha dificultad en encontrar
documentación al respecto de Windows 2000, quizás por ser un producto relativamente nuevo, sobre todo en
valenciano o en castellano, ya que prácticamente todo lo que hemos encontrado estaba en inglés, con la
consiguiente dificultad de traducir lo que después teníamos que plasmar en el trabajo. Esto nos ha hecho
reflexionar, quizá un poco más de la idea que ya teníamos formada, de la importancia del inglés en el mundo
de la informática. Aclarar que el inglés del que hablamos es el inglés técnico de E.E.U.U. ya que hemos tenido
especial dificultad en traducir algunos términos y expresiones que no se utilizan ni corrientemente ni en el
inglés estándar. Así que se nos presentaba la dificultad de traducir algunos términos o bien dejarlos en inglés,
dependiendo de cada caso hemos optado por diferentes formulas, esperando que ello no complique la lectura
del trabajo. Además en el caso de los términos en castellano según las diferentes fuentes que se consultaran
los términos empleados podían variar.
Quizás en algún punto del trabajo hayamos entrado demasiado a fondo en la implementación del sistema e
incluso el tamaño total del trabajo haya sido execesivamente extenso, pero resultaba dificil dejar fuera muchos
temas. El tamaño del trabajo ha provocado que nos encontráramos con enormes dificultades tanto por falta de
información como para realizar una correcta coordinación entre los autores.
Sin embargo el esfuerzo ha merecido la pena ya que nos ha ayudado comprobar como se usan en la práctica
los conceptos explicados en clase y en anteriores asignaturas. Analizar un sistema operativo tan complejo ha
sido realmente interesante y consideramos que nos ha aportado nuevos conocimientos y nos ha ayudado a
entender mejor como funcionan los sistemas operativos, algo fundamental tanto para su uso diario como para
la programación o diseño de aplicaciones para este sistema operativo y por extensión a otros sistemas.
6 − Bibliografia
• A fondo la arquitectura de Windows NT. David A. Solomon. Ed − McGraw−Hill.
• Windows NT avanzado. Jeffrey Ritcher. Ed − McGraw−Hill.
• Microsoft Windows 2000 EDK (Evaluation & Deployment Kit). CD Temático PC−ACTUAL −
Marzo de 2000
• www.microsoft.com
• www.sysinternals.com
• www.w2000mag.com
60
• www.win2000mag.net
• www.winntmag.net
• PC−WORLD − Noviembre de 1997
• PC−ACTUAL − Febrero de 2000
• PC−ACTUAL − Marzo de 2000
• PC−ACTUAL − Noviembre de 2000
Arquitectura de Windows 2000
Página 27
Ficheros de metadatos
•
61
Descargar