domingo, 19 de enero de 2014

El sistema operativo II

Algunos sistemas operativos tienen sus propias peculiaridades que no se encuentran en otros. En el sistema operativo Windows de Microsoft, una de tales peculiaridades es lo que se conoce como el Registro de Windows o Registry. Este recurso no existía cuando apareció la primera versión, Windows 1.0, cuando Windows era apenas una interfaz gráfica y no un sistema operativo. Tampoco hubo tal cosa en Windows 2.0. Fue hasta la introducción de Windows 3.0 (que la empresa Microsoft anunció como un sistema operativo en sus manuales de usuario aunque estrictamente hablando seguía siendo una interfaz gráfica) en que hace su aparición el Registro, en un archivo llamado REG.DAT. Este registro era tan solo una pequeña base de datos (de allí la extensión de archivo .DAT) concebido para mantener actualizadas las asociaciones de archivos. Las asociaciones de archivos son lo que permite que Windows pueda “recordar” que para abrir automáticamente con un procesador de palabras como Microsoft Word un documento basta con que dicho documento tenga como extensión de archivo “.doc” (en otros tiempos, estas extensiones de archivo siempre eran mostradas al usuario, pero posteriormente Microsoft adoptó la costumbre de ocultarlas haciendo que aparecieran únicamente si el usuario activaba la opción para mostrar las extensiones de archivo), o bien que para abrir un archivo fotográfico de imagen que tenga una extensión de archivo “.jpg” se presente una lista de aplicaciones como Paint y Photoshop instaladas en la máquina para que el usuario escoja la aplicación con la cual quiere abrir el archivo. Cada vez que un programa de aplicación nuevo era agregado a la máquina, como Word Perfect 5.1, la base de datos REG.DAT era actualizada para agregar el programa Word Perfect a la lista de programas asociados con la extensión de archivo “.doc”.

Las primeras computadoras personales usaban microprocesadores de 8 bits, de modo tal que sólo podían procesar un byte a la vez. La primera computadora personal IBM introdujo por vez primera el procesamiento de 16 bits, lo cual más que dobló la velocidad de procesamiento puesto que el doble de la cantidad de datos podían ser movidos al procesador usando la mitad de las operaciones anteriormente requeridas. Con la introducción del procesador Intel 80386 el hardware se volvió capaz de poder correr programas de 32 bits, aunque los sistemas operativos DOS de ventanas de líneas de comandos y Windows 3.x con interfaces gráficas seguían siendo de 16 bits. Aunque los sistemas operativos OS/2 de IBM. Windows NT de Microsoft y algunos “sabores” de UNIX ofrecían una capacidad de procesamiento de 32 bits, estos sistemas operativos nunca fueron recibidos con los brazos abiertos por las grandes masas de consumidores.

Es hasta 1995 cuando Microsoft introduce su primer sistema operativo Windows para computadoras domésticas, el sistema operativo Windows 95, el primer sistema operativo de Microsoft de 32 bits que logró ganar una aceptación casi universal. En este sistema operativo, el programa que proporcionó al usuario una interfaz con el sistema operativo fue Windows Shell (Concha de Windows), puesto en marcha mediante el código ejecutable contenido en SHELL32.DLL (una librería de enlace dinámico, como lo revela la extensión de archivo que simboliza Dynamic Link Library), siendo la “concha” lo que proporcionaba la interfaz gráfica de Windows 95 con el usuario y se encargaba de echar a andar programas de aplicación permitiéndole al usuario administrar los recursos de la computadora. El programa Explorador de Windows terminó reemplazando lo que en Windows 3.1 era conocido como el Administrador de Archivos, aunque reteniendo la apariencia y la familiaridad a la cual estaban acostumbrados los usuarios de Windows 3.1.

Con la introducción de Windows 95, la intención de Microsoft era que los dos “archivos de configuración del sistema”, conocidos como los archivos .ini (por la extensión que los identificaba), WIN.INI y SYSTEM.INI dejaran de ser utilizados. De cualquier modo, estos dos archivos continuaron siendo parte del sistema operativo Windows 95 porque eran necesarios para que Windows pudiera continuar funcionando correctamente, además de que eran necesarios para poder mantener compatibilidad “hacia atrás” con computadoras que no eran máquinas nuevas con Windows 95 instalado en ellas como su único sistema operativo sino máquinas “viejas” con Windows 3.x todavía instalado en ellas y para las cuales los usuarios habían comprado la “actualización” (upgrade) de la máquina del sistema combinado DOS/Windows 3.x a Windows 95 (en caso de que hubiera problemas inesperados con la actualización, el proceso de instalación de Windows 95 le daba a los usuarios la capacidad de poder dar marcha atrás y desinstalar Windows 95 regresando las cosas a su estado anterior, para lo cual obviamente se requería conservar en su lugar los dos archivos WIN.INI y SYSTEM.INI). A partir de la aparición de Windows 95, el Registro dejó de ser una simple base de datos para mantener actualizadas las asociaciones de archivos, encargándose de mantener también al día una lista de las configuraciones del hardware que las rutinas del sistema operativo Windows 95 iba descubriendo a través de sus rutinas de detección (por ejemplo, tras la instalación en el interior de la máquina de una tarjeta de sonido Sound Blaster, o la instalación de un modem interno, o el reemplazo de una tarjeta de gráficos por otra con una cantidad mayor de memoria). Cada vez que el hardware de la máquina cambiaba, el Registro era actualizado. Las “Llaves” (Keys, usándose una terminología propia de la manera en la que los datos son almacenados en una base de datos) en el Registro eran similares a las cabeceras encorchadas puestas en los archivos WIN.INISYTEM.INI. Sin embargo, las Llaves del Registro, a diferencia de las Llaves de los archivos .ini, podían contener y contenían sub-Llaves. Otra diferencia importante entre el Registro y los archivos .ini era que mientras que únicamente se permiten hileras de texto en los archivos .ini (los cuales por lo tanto podían ser leídos con el Bloc de Notas o cualquier procesador de palabras), los valores puestos en el Registro podían consistir de código ejecutable. Para poder ver los contenidos del registro e inclusive alterarlos (algo desalentado por Microsoft para la gran mayoría de los usuarios sin conocimientos detallados sobre el funcionamiento interno del sistema operativo Windows), Microsoft creó el Editor del Registro (Registry Editor). Obviamente, solo hay un Registro en cada computadora. Editar el Registro consistió en agregar o borrar Llaves, agregar nuevas constantes y sus valores a ser asociados con las Llaves así como la modificacián de constantes y valores ya existentes.

Tal vez algo que resultó frustrante para muchos usuarios de computadoras que estaban acostumbrados a poder inspeccionar y ver los contenidos de todos los directorios (carpetas, folders) y sub-directorios almacenados en los discos duros de sus computadoras era la ausencia aparente de algo a lo que se le pudiera haber llamado un “Registro”. En pocas palabras, ¿en dónde estaba el Registro? Después de todo, el Editor del Registro era simplemente una interfaz gráfica para tener acceso al Registro así como un editor de los contenidos del Registro, pero no era el Registro. Si lo buscaron en la carpeta WINDOWS o lo buscaron en el directorio raíz del disco duro bajo algún nombre como REGISTRY.EXE o REGISTRY.DAT o REGISTRY.INI, ciertamente no lo encontraron, creándose la falsa impresión de que el Editor de Registro era la interfaz con algo que aparentemente tenía que estar en algún lado de la computadora pero que no se encontraba por ninguna parte. La razón detrás de las búsquedas infructuosas es que el Registro estaba constituído por dos archivos, los archivos SYSTEM.DAT y USER.DAT, dos archivos puestos en la carpeta WINDOWS como archivos del sistema ocultos al usuario (para poder verlos era necesario activar la opción de “mostrar” archivos ocultos del sistema), de “lectura únicamente”. De este modo, la inspección así como la modificación de los valores contenidos en las bases de datos SYSTEM.DAT y USER.DAT se llevaba a cabo con la ayuda del Editor del Registro de Windows:



Así pues, los dos archivos SYSTEM.DAT y USER.DAT eran el Registro de la máquina, y dado lo crítico del Registro para poder hacer funcionar correctamente la computadora, a estos archivos siempre se les dió un respaldo: system.da0 y user.da0 (ampliar imagen para mayor detalle; obsérvese cómo en la barra inferior Windows se refiere a los cuatro archivos seleccionados usando la terminología de “objetos”, esto en conformidad con la tendencia de irle dando a todo un enfoque moderno desde la perspectiva de la programación orientada-a-objetos):




Los archivos del Registro de Windows no pueden ser leídos desde un prompt DOS o inclusive desde un editor de texto o un procesador de palabras, en virtud de que son bases de datos, y únicamente los programas REGEDIT.EXE, REGEDIT32.EXE (en Windows NT) así como la librería de enlace dinámico KERNEL32.DLL los pueden leer. Para poder “leerlos” en Windows es necesario introducir RegEdit en la ventana de “Ejecutar” (Run) accesible desde el botón de Inicio (Start).

Los dos archivos del Registro SYSTEM.DAT y USER.DAT fueron conservados en el sistema operativo sucesor de Windows 95, el estable y robusto Windows 98. En el sistema operativo Windows Me (Windows Millenium, llamado así en celebración del inicio del tercer milenio) que reemplazó a Windows 98, se agregó un tercer archivo para formar el Registro, el archivo CLASSES.DAT, con los tres archivos puestos bajo la carpeta C:\WINDOWS. La razón por esta innovación es que Microsoft encontró que con los recursos de hardware disponibles en aquél entonces si los archivos del Registro crecían demasiado, Windows no podía cargarlos en la memoria, razón por la cual Microsoft rompió al archivo SYSTEM.DAT subdividiéndolo en dos archivos, CLASSES.DAT y SYSTEM.DAT. El nuevo archivo fue agregado para permitirle al Registro poder ser mayor que 11 megabytes (en Windows 98 el sistema operativo reportaba la inhabilidad de poder cargar un archivo del Registro si el archivo era mayor que 11 megabytes, en Windows 95 el límite era de 8 megabytes). CLASSES.DAT es la Llave del Registro:

HKEY_LOCAL_MACHINE\Software\Classes

y es la misma Llave previamente almacenada en las versiones previas de Windows en el archivo SYSTEM.DAT.

La función de cada archivo del Registro es diferente. SYSTEM.DAT quedó encargado de almacenar toda la información acerca del software, el hardware, opciones de seguridad así como la configuración de ajustes (settings) estándard (default) de Windows y cómo se comportará Windows, mientras que USER.DAT quedó encargado de almacenar todos los ajustes personalizados seleccionados por el usuario los cuales toman prioridad sobre los ajustes almacenados en el archivo SYSTEM.DAT.

El sistema operativo Windows Me siempre fue un sistema operativo plagado de problemas, y varias de las cosas que salieron mal con dicho producto fueron corregidas y remendadas por Microsoft con la introducción de Windows XP, en el cual además de introducirse el nuevo sistema de almacenaje de archivos en el disco duro NTFS (con la intención de reemplazar el sistema operativo FAT32) el número de archivos con los que se constituía el Registro de Windows creció. A ninguno de estos archivos se le dió una extensión de archivo, y fueron puestos en la carpeta WINDOWS\system32\config. Se trata de los archivos DEFAULT, SAM, SECURITY, SOFTWARE, SYSTEM, y USERDIFF. Además de estos archivos, hay otro archivo del Registro que sí posee extensión de archivo, el archivo llamado NTUSER.DAT, puesto en la carpeta “Documents and Settings” bajo la carpeta “Default User”, la cual almacena todas las configuraciones seleccionadas por el usuario y las cuales toman precedencia sobre las configuraciones guardadas en el archivo SYSTEM. De este modo, a través de la interfaz gráfica proporcionada por el Editor de Registro, el acceso del usuario al conjunto de archivos que constituyen el Registro se puede esquematizar de la siguiente manera:




La función de cada archivo del Registro ampliado es diferente. El archivo SAM almacena información acerca del servicio del Administrador de Cuentas de Seguridad (Security Accounts Manager). Ninguno de los archivos SECURITY Y SAM son visibles a través de la interfaz Editor del Registro, a menos que se hayan reajustado los permisos. SYSTEM almacena toda la información acerca del hardware. SOFTWARE almacena toda la información acerca del software y cómo reaccionará Windows usando las configuraciones puestas en la máquina. El archivo DEFAULT almacena todas las configuraciones hechas por el usuario, mientras que el archivo NTUSER.DAT toma precedencia sobre los ajustes de usuario. Y el archivo USERDIFF almacena información acerca de las sub-Llaves correspondientes en el área HKEY_USERS para cada usuario registrado como usuario de la máquina. Estos archivos cuentan con sus respaldos respectivos puestos en la carpeta WINDOWS\system32\config con una extensión de archivo “.sav”, creados al final del proceso de primera instalación de Windows en el disco duro y los cuales nunca son actualizados. Estos archivos de respaldo solo son actualizados si el usuario lleva a cabo una reparación del sistema Windows al seleccionar la opción “R” durante el proceso de reinstalación de Windows en el disco duro.

Por razones de seguridad, el KERNEL32.DLL protege a los archivos que conforman el Registro de ser copiados o alterados sin el consentimiento de KERNEL32.DLL. El usuario no puede hacer manualmente respaldos, y tampoco puede alterar cierta información de las Llaves.

En rigor de verdad, el Editor del Registro no es la única manera de alterar algo en la configuración de la máquina, Microsoft proporcionó muchas otras maneras de poder cambiarle valores al Registro sin necesidad de tener que hacer los cambios a través del críptico y difícil de usar -excepto para los programadores de sistemas- Editor del Registro. Para cambiar muchos de los valores que son editados a través del Editor del Registro, Microsoft incluyó elementos de interfaz visual con los archivos que en conjunto forman parte del Registro, empezando por el Panel de Control que da el acceso a varias interfaces visuales diseñadas para permitirle al usuario cambiar los valores almacenados en el Registro sin necesidad de tener que editar esos valores directamente con el Editor del Registro. Los cambios efectuados a través de las hojas de propiedades y cajas de diálogos se reflejan de inmediato en cambios en el comportamiento del sistema operativo afectado por los valores que están almacenados en el Registro (o mejor dicho, los valores que están almacenados en los varios archivos que en conjunto común son llamados el Registro de Windows). Cuando un usuario cambia el aspecto visual en que el sistema operativo Windows le presenta el Escritorio (Desktop) en el cual se encuentra el fondo principal de la pantalla y el botón de Inicio, los cambios hechos son lo mismo que se puede hacer a través del Editor del Registro, excepto que de una manera mucho más intuitiva. Cuando el usuario instala un programa nuevo en su máquina, los cambios se reflejan de inmediato en los contenidos del Registro puesto que cualquier cambio en la configuración de la máquina así como los recursos de la misma en hardware y software se refleja en cambios que se llevan a cabo en el Registro.

Al ser introducido Windows XP, como parte de la publicidad promocional del producto se hizo hincapié en la creación de una función llamada “System Restore” con la cual supuestamente en caso de problemas serios (por ejemplo, una infección viral informática) el usuario podía recurrir a un respaldo previo del Registro hecho cada vez que se decidiera fijar un punto de respaldo (Restore Point) al cual volver, con una copia completa de los archivos del Registro puesta en el mismo lugar en el cual el sistema operativo Windows estaba instalado. Sin embargo, esa restauración solo funciona si el Registro no ha sido dañado ni ha sido corrompido, que es precisamente el tipo de situaciones en las cuales se requiere hacer una recuperación del sistema a un estado previo. En pocas palabras, el sistema no se puede reparar a sí mismo si la base de datos que el sistema requiere para poder repararse a sí mismo está dañada, en cuyo caso la única manera de reparar el sistema operativo tal vez sea reinstalarlo en el disco duro de nueva cuenta, si es que se cuenta con el disco de instalación original del sistema operativo.