Informática


Microsoft Windows 2000


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

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 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.

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.

  • 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.

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

Función

Administrador de objetos

Administra los recursos e implementa un espacio de nombres global.

Monitor de referencia de seguridad

Implementa el modelo de seguridad de Windows 2000.

Administrador de memoria virtual

Define los espacios de direcciones de los procesos y asigna memoria física.

Administrador de E/S

Sirve de interfaz entre las aplicaciones y los drivers de los dispositivos

Administrador de caché

Implementa la caché global de archivos

Herramienta de llamada a procedimiento local

Proporciona una comunicación eficiente entre procesos

Administrador de configuración

Gestiona el registro

Administrador de procesos

Exporta la API de procesos y hebras

Win32

Implementa funciones de paso de mensajes y gráficas de Win32.

Administrador de energía

Controla el estado energético del sistema

Administrador de Plug and Play

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:

Microsoft Windows 2000

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.

Microsoft Windows 2000

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 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 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 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.

  • 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

Asynchronous Procedure Call

Utilizada para interrumpir la ejecución de una hebra y realizar la llamada a un procedimiento en modo asincrono.

Interrupt

Usada para comunicar el origen de la interrupción con una rutina de servicio de interrupciones mediante una entrada en la tabla de tratamiento de interrupciones (Interrupt Dispatch Table). Cada procesador tiene una tabla para tratar las interrupciones ocurridas en ese procesador.

Process

Contiene el espacio de direcciones virtual e información de control para la ejecución del conjunto de hebras.

Profile

Usada para medir la distribución del tiempo de ejecución de un 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.

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.

Microsoft Windows 2000

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 2000 y genera un objeto instancia de dicha clase, dando los valores adecuados a cada atributo.

Microsoft Windows 2000

La siguiente tabla da una breve descripción de cada uno de los atributos del objeto proceso:

Atributo del objeto proceso

Significado

Process ID

Valor asignado al proceso que lo identifica de forma única en el sistema operativo.

Security Descriptor

Describe quien ha creado el objeto, quien puede acceder o usar el objeto y quien no puede usarlo

Base priority

La prioridad base para las hebras del proceso

Default Processor affinity

Los procesadores por defecto sobre los que puede ejecutarse la hebra.

Quota limits

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

Execution time

El tiempo total consumido por todas las hebras del proceso.

I/O counters

Variables que contienen el numero y tipo de operaciones de E/S realizadas por las hebras del proceso.

VM operation counters

Variables que contienen el numero y tipo de operaciones sobre memoria virtual realizadas por las hebras del proceso.

Exception/debugging ports

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

Exit status

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

Significado

Thread ID

Valor asignado a la hebra que lo identifica de forma única cuando realiza llamadas al servidor.

Thread context

Conjunto de valores que definen el estado de ejecución de la hebra.

Dynamic priority

La prioridad de ejecución de la hebra en ese instante.

Base priority

El limite inferior del atributo Dynamic priority para las hebras

Thread Processor affinity

El conjunto de procesadores sobre los que la hebra puede ejecutarse, será un subconjunto del valor Default Processor affinity del objeto proceso.

Thread execution time

El tiempo total que la hebra se ha ejecutado en modo usuario y modo kernel.

Alert Status

Flag que indica cuando la hebra debería ejecutar una llamada a procedimiento asincrono.

Suspension count

El número de veces que la ejecución de la hebra ha sido suspendida.

Impersonation token

Token de acceso temporal que permite a una hebra realizar operaciones en nombre de otro proceso (usado por los subsistemas de entorno)

Termination port

Canal de comunicación entre procesos al cual el administrador de procesos envía un mensaje cuando la hebra finaliza (usado por los subsistemas de entorno).

Thread exit status

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.

Microsoft Windows 2000

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 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

Definición

En estado señalado cuando…

Efecto en las hebras en espera…

Process

Llamada a un programa, incluyendo el espacio de direcciones y los recursos necesarios para ejecutar el programa.

Termina su última hebra

Todas liberadas.

Thread

Una entidad ejecutable dentro de un proceso.

Termina la hebra

Todas liberadas.

File

Instancia de un fichero abierto o dispositivo de E/S

La operación de E/S finaliza.

Todas liberadas.

Console Input

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

File Change Notificatión

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

Mutex

Mecanismo que proporciona exclusión mutua para los entornos Win32 y OS/2

Una hebra libera el mutex

Una hebra liberada

Semaphore

Contador que regula el número de hebras que pueden usar un recurso

El contador del semáforo llega a cero

Todas liberadas.

Event

Aviso de que un evento del sistema ha ocurrido

Una hebra crea el evento

Todas liberadas.

Waitable Timer

Contador que registra el paso del tiempo

Se alcanza el tiempo fijado o expira el intervalo de tiempo

Todas liberadas.

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.

Microsoft Windows 2000

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

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.

Microsoft Windows 2000

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 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.

Microsoft Windows 2000

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.

  • 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:

Microsoft Windows 2000

  • 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.

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 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). 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

Sectores por cluster

Tamaño del cluster

< 512 Mbyte

1

512 bytes

512 Mbyte - 1Gbyte

2

1 K

1 Gbyte - 2 Gbyte

4

2 K

4 Gbyte - 4 Gbyte

8

4 K

4 Gbyte - 8 Gbyte

16

6 K

8 Gbyte - 16 Gbyte

32

16 K

16 Gbyte - 32 Gbyte

64

32 K

> 32 Gbyte

128

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.

Microsoft Windows 2000

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)

$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

Descripción

Standard information

Flag bits, timestamps, etc..

File name

Nombre del fichero en Unicode, puede estar repetido para el nombre MS-DOS

Security descriptor

Obsoleto. La información sobre la seguridad esta ahora en $Extend$Secure

Attribute list

Localización de registros adicionales del MFT, si son necesarios

Object ID

64 bits para el identificador de fichero, único para cada volumen

Reparse point

Usado para montar y links simbólicos

Volume name

Nombre de este volumen(Usado solo en $volume)

Volume information

Versión del volumen(usado solo en $Volume)

Index root

Usado para directorios

Index allocation

Usado para directorios muy largos

Bitmap

Usado para directorios muy largos

Logged utility stream

Controla el registro de usuarios para el $Logfile

Data

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.

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

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:

Microsoft Windows 2000

  • 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:

Microsoft Windows 2000

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. 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.

Microsoft Windows 2000

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.

Microsoft Windows 2000

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.

  • 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

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 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.

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 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

Controlador PnP

Controlador no PnP

Dispositivo PnP

Plug and Play completo

No hay Plug and Play

Dispositivo no PnP

Posible Plug and Play parcial

No hay Plug and Play

La lista que damos a continuación, explica las posibles configuraciones:

  • 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 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.

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 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.

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.

  • 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.

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 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

RFC822

Formato usualmente utilizado en las direcciones de correo electrónico

Nombre@dominio

HTTP URL

URLs (Uniform Resource Locators), utilizadas para las direcciones de Internet

http://dominio/pagina

LDAP URLs

Los nombres LDAP utilizan los atributos de nombre X.500. Una URL LDAP especifica el servidor que contiene los servicios del directorio activo y los nombres de atributos del objeto.

LDAP://algun_servidor.myco.com/CN=pepeperez,OU=sys,OU=product,OU=division,O=myco,C=US

UNC

El Directorio Activo soporta la convención universal de nombres utilizados en las redes Windows para referirse a volumenes compartidos, impresoras, y ficheros.

file://myco.com/xl/budget.xls

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.

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.

Microsoft Windows 2000

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 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.

Microsoft Windows 2000

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.

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.

Microsoft Windows 2000

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.

Microsoft Windows 2000

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 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 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 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

  • 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

Microsoft Windows 2000
Arquitectura de Windows 2000

Página 27

Ficheros de metadatos

Microsoft Windows 2000




Descargar
Enviado por:Ximo Tur
Idioma: castellano
País: España

Te va a interesar