Utilizamos Cookies de terceros para generar estadísticas de audiencia y mostrar publicidad personalizada analizando tu navegación. Si sigues navegando estarás aceptando su uso. Más información X
PortadaForo AyudaTutoriales
InicioForosForo Windows 98

Registro de Windows (registry)

Visitante
2005-01-10 10:10 - Respuestas: 13 - Tema nº: 2024


Quote:

On 2003-04-01 22:24, Mukycom wrote:
EL REGISTRO - PEDAZO FINAL
====================

Modos:

Windows es un sistema operativo, sólo se apoya en MS-DOS por cuestiones de
compatibilidad.
Comparándolo con NT o LinuX, éstos no se apoyan tampoco en MS-DOS, pero leen
la BIOS de la máquina. El paso previo siempre es arrancar la BIOS. En este caso
Windows 98 añade un paso intermedio, arranca la BIOS, posteriormente el MSDOS
y finalmente él mismo. Es un paso más y así debemos considerarlo... un "paso"
más.
NT y LinuX después de ese inicio cargan su propio HAL (Capa de abstracción del
Hardware - Hardware Abstraction Layout-) y pasan ya totalmente de la BIOS, no
utilizan los recursos de ésta para nada, no se creen los que les indica y estos S.O.
vuelven a verificar los recursos y se inician según sus propias indicaciones.
Hoy parece que existen distribuciones de LinuX que si se apoyan en la BIOS, y
también W2000, aunque éste último solo cuando se instala, olvidándose después.
Hecha esta pequeña introducción, los modos del procesador son "REAL", "PROTEGIDO"
y "VIRTUAL 8086".

Modo Real Y Modo Protegido
Repasemos con detalle ambos términos antes de la carga de Windows, ya que
Windows lo primero que realiza es poner al procesador en modo protegido.
El procesador siempre arranca en modo real (antes de Windows) y las características
fundamentales podríamos esquematizarlas de la siguiente forma:
· Restricción de la memoria, sólo se direccionan 20 líneas (2 elevado a 20 = 1
MEGA).
· Algunas zonas se usan por el hardware, especialmente vídeo o gráfica (posición
A000 a C000).
· Desde las posiciones 0 a la 1024 físicas, hay una zona de vectores de interrupción
(por software). 256 interrupciones a 4 bytes, 2 para el segmento y 2
para el desplazamiento. Aquí se contienen las direcciones de las rutinas a
las que saltará la CPU cuando se haga mediante una INT xx (xx= número)
de forma automática. Muchas de estas interrupciones software son diseñadas
por la BIOS y otras lo hacen por hardware (IRQ). El manejo lo hace el
procesador y está implementado por hardware. Saltará a la correspondiente
dirección de la tabla cuando se produce una interrupción y sabe (en modo
real) que la tabla empieza en el desplazamiento 0 de la memoria física.
Entonces, ¿que haríamos para que pase a modo protegido? Parece simple,
añadir en unos registros específicos la nueva dirección de la Tabla de interrupciones
(ahora excepciones). Se crea una tabla con des-c-r-i-p-tores de segmento en modo
protegido, se le pasa su dirección a registros esenciales del procesador, cambiamos
un bit en un registro de control del procesador y hacemos un salto largo.
Cuando vuelve del salto, "modo protegido". Ahora ya no parece tan simple.
¿Qué nos ofrece el modo protegido?
El procesador en modo protegido ofrece:
· Control de procesos, protección,
· Protección mediante la memoria virtual y su mecanismo,
· y, virtualización del hardware.

Control de procesos. Protección.
Recordemos que una dirección de memoria es un segmento y un desplazamiento
(4 bytes)
Supongamos que antiguamente el segmento(16 bits) ahora es un índice (1, 2, .......)
y que la dirección real de memoria es lo que consta en una tabla.(Global o Local de
direcciones)
Si nuestro segmento contiene un 1 querrá decir que nos estamos refiriendo a la
primera posición de la tabla, este contenido se toma igual que antes y sumado al
desplazamiento no da la dirección real.
Lo que se llamaba segmento (modo real) y que ahora contiene un índice, pasa a
llamarse "des-c-r-i-p-tor".
Además lo modificamos, aquí puede existir un número desde 0 a 65535, muchas
direcciones. Se limita y cambiando los bits utilizados nos quedamos con 8192 posibles
elementos en la tabla, suficientes, y que en cualquier momento podemos
apuntar los registros que definen la tabla a una nueva, sumando 8192 elementos
nuevos.
En realidad la importancia es el uso que le daremos a los bits que dejamos de utilizar,
y en particular en dos de ellos, tendremos los valores 0, 1, 2 y 3.
Estos bits en el des-c-r-i-p-tor nos indicarán el "modo" de funcionamiento del procesador
en el segmento de código que a su vez esté definido por el índice del des-c-r-i-p-tor
de la tabla.
El modo "0" es el más bajo y potente. Se realiza todo. Es el modo KERNEL. El código
del programa que se ejecute en este modo tiene acceso a todo. El núcleo del
S.O. funciona en modo KERNEL.
El modo "1" parece idéntico, pero no puede saltar a modo "0", así como el "2" no
puede saltar hacia atrás, mientras que el modo "3" sólo accede a segmentos de
uso propio, el menos potente y llamado también modo USER.
En caso de necesitar ejecución de código del sistema operativo y ante la negativa a
poder saltar a modo "0", lo hace mediante "excepciones", las cuales están totalmente
protegidas, por lo que en teoría (modo protegido) un programa de usuario no
podría afectar al sistema operativo o colgarlo.
Gráficamente pintaríamos unos círculos concéntricos, en que el más pequeño sería
modo "0" y el más grande el modo "3". Se puede saltar desde el interior al exterior
pero no al contrario. Para ello sólo se puede usando las excepciones.

Memoria Virtual. Su mecanismo.
Antes hemos comentado que una dirección, es un des-c-r-i-p-tor de segmento y un
desplazamiento. Este des-c-r-i-p-tor de segmento, es un índice que apunta a una tabla
y contiene el "segmento" real que sumado al desplazamiento inicial, nos da, la dirección
correcta. La dirección es ya la dirección real física de memoria que queremos
localizar. (memoria lineal)
De todo este "cisco" no hay que preocuparse. Todo esto lo tiene implementado directamente
la CPU. En general esto que estoy describiendo, no es una cosa de la
arquitectura 386 (es decir los actuales Pentium). Es algo de "todas" las CPUs. Intel
no descubrió nada nuevo con esto (tiene algunas matizaciones...). Todas las CPUs
trabajan básicamente con los conceptos descritos.
¿Y sí a este mecanismo de segmentación que nos da una dirección lineal y
que en lugar de ser la dirección física, hacemos que apunte a una tabla especial?
La llamaremos "paginación", y aquí cada elemento apuntará a una dirección en
memoria real o a una dirección en un archivo de paginación. (swp386 por ejemplo?,
o el pagefile.sys en NT??) Y además que se encargue la CPU del trasiego de
direcciones.
La memoria la dividimos en páginas de 4Kbs, la dirección de cada una va a una tabla,
además añadimos un indicador que marque si es memoria real o está en el archivo
de paginación.
El procesador accederá a esa tabla y saltará a la dirección real que se indica que
puede ser cualquier otra, o bien, si está en disco, carga la página en una zona libre
de la memoria real y le cede el control.
Estamos utilizando una memoria virtual, el programa sólo ve direcciones virtuales
que le muestra la tabla de paginación. El procesador se encarga del cambio de páginas
de memoria real con las páginas del archivo de paginación y a la inversa.
Los programas ni se enteran. Están en modo virtual. (Bueno la calidad de la memoria
virtual no es igual a la RAM, pero todo ayuda)

Virtualización del hardware
Bien, al igual que se puede poner un mecanismo por el cual las tareas están protegidas,
también puede ponerse un bit de marca que nos indique si un des-c-r-i-p-tor de
segmento (es decir el código, real o virtual) al que apunta ese des-c-r-i-p-tor, está autorizado
o no para ejecutar una entrada / salida directa al hardware. Es decir una instrucción
IN / OUT en ensamblador.
Si el bit está activo, se lo permite. Si no, lo que hace el procesador cuando encuentra
una instrucción de estas, es provocar una "excepción". Esta excepción,
tendrá su puerta de tarea y un manejador de esta excepción. Un "manejador" de
excepciones, no es nada mas que un "trozo" de código de programa (normalmente
perteneciente al sistema operativo, o implementado por algún driver), el cual es el
encargado real de ejecutar dicha instrucción o de prohibir su ejecución.
Por eso, por ejemplo, en Windows NT, que tiene virtualización completa del hardware,
no podemos realizar ninguna instrucción no permitida, y la mayoría de juegos
basados en DOS, que intentan acceder al hardware directamente, son expulsados
por la propia CPU. Se dispara una "excepción" y el manejador de dicha "excepción"
se lo prohibe. Recordar que una secuencia mal programada de IN/OUT directos a
un puerto, o bien intentando acceder a un puerto inexistente, es lo que provoca las
caídas de máquina. Un sistema operativo "serio" no puede dejar que se realicen
estas cosas (NT, Linux). Un sistema que quiera guardar compatibilidad con el "viejo"
MS-DOS, por desgracia, no virtualiza totalmente el hardware, y deja hacer la
mayoría de las cosas a casi todos los programas. Esto es lo que provoca "cuelgues"
en Windows 98 por programas mal codificados (o mal "educados").
La pregunta que surge es: ¿si únicamente es un bit, el que "indica" estas protecciones,
fácil, por que no lo cambiamos?
Y la respuesta mas fácil todavía: porque no se puede. No deja la CPU ejecutar una
instrucción de este tipo, cuando nuestro programa está en modo USER. únicamente
el sistema operativo que está en modo KERNEL es el que puede ejecutar
estas instrucciones privilegiadas. Y además si lo intentamos, se provocará otra excepción.
Y en esa excepción, el sistema operativo hará lo que considere oportuno:
normalmente "matar" a esa tarea.

Modo virtual 8086
Es el tercer modo de funcionamiento del procesador. Simplemente se le da un espacio
de direcciones virtuales de un mega y al poner a trabajar el procesador en
este modo es como si estuviese en modo real. Pero es "como" si estuviese. No lo
está y todas las llamadas podrían ser interceptadas por el sistema operativo.
Pongamos un ejemplo muy claro. Habíamos dicho que la dirección de memoria
gráfica para modo texto es el segmento B800. Pues bien, si físicamente "ponemos"
en la posición de memoria B800:0000 (una dirección absoluta de memoria), dos
bytes, uno de ellos con los atributos de color y otro con la letra "A", veremos instantáneamente
la letra "A" con el color seleccionado en la esquina superior izquierda
de la pantalla. Es instantáneo, como si la pantalla fuese una "ventana" a esa dirección
de memoria.
Esto es en modo real. Pero la pregunta es ¿cómo lo hace Windows cuando
abrimos una ventana MSDOS?. Es importante esto, ya que el escribir en esa posición
de memoria por un programa, implicaría que esa "A" saldría instantáneamente
en pantalla. Y no sucede esto, lo vemos, eso sí en la parte superior izquierda
de una "ventana" MS-DOS que puede estar además físicamente en cualquier
posición de nuestro monitor.
Bien, es fácil si hemos entendido un poco el mecanismo de memoria virtual. La solución
es "marcar" esas paginas de memoria como "paginadas" en la tabla de paginas.
Al ir a utilizar esa dirección, como está teóricamente paginada, ocurre una excepción
del procesador, entra a funcionar el mecanismo de excepciones, y un manejador
para esta excepción toma el control. Este manejador "se da cuenta" de lo
que quería hacer el programa y en vez de hacer lo "normal" que es buscar en el fichero
de paginación y traer a memoria física la pagina que falta, lo que hace, es
"dibujar" esa "A" que queríamos en la ventana MS-DOS en la esquina superior izquierda.
Parece un poco retorcido..... pero es la única solución, y funciona perfectamente.
De cara al programa que se está ejecutando, para él es como si estuviese funcionando
en modo real. Es exactamente lo mismo, pero en vez de hacer lo que el
quiere, se hace lo que quiere el sistema operativo. además, ese "mega" de memoria,
está en cualquier sitio de la memoria física, incluso troceado, da igual. únicamente
Windows, construye una tabla de memoria con las paginas que le interese,
lo pone en unos registros del procesador y cambia a modo virtual 8086.

Multitarea real
¿Real real? No claro, sólo con más de un procesador podría existir una multitarea
real. Pero se le acerca mucho.
El concepto de multitarea lo único que nos incorpora es la posibilidad de repartir el
tiempo en unas unidades muy pequeñas, llamadas "quantum", y ceder el control,
consecutivamente y por orden de esa cantidad de tiempo asignado a cada tarea de
la máquina.
Esto nos muestra "aparentemente" que hay varios programas en ejecución. Realmente,
en cada instante del tiempo, (en cada "quantum", dure lo que dure), solo
hay UN solo programa en ejecución. Pero en ese quantum, con las velocidades
actuales de las CPUs, se pueden hacer muchas cosas.
Evidentemente, aquí intervienen otros dos conceptos:
1 ) Intercambio de tareas.
2 ) Prioridad de las tareas.
El intercambio de tareas, es simplemente el guardar el estado de una tarea cuando
ha agotado su tiempo (sus quantums asignados), recuperar el estado de otra tarea
y cederle el control. Normalmente esto se puede realizar por el hardware de la CPU
(existe una instrucción especifica para ello, en "todas" las CPUs del mercado, incluidos
los mainframes). Pero Microsoft en vez de utilizar el mecanismo hardware,
lo hace por software, "a mano". Esto es muy costoso en ciclos de reloj, pero aparentemente,
Microsoft no se fiaba, al menos al principio, de la implementación de
este mecanismo en la CPU por parte de Intel.
Prioridad de las tareas, es simplemente un numero asignado a cada tarea, que indica
el numero de "quantums" que puede ejecutar antes de que el sistema operativo
tome control y le ceda el control a otra tarea.
Hay que hacer notar, que una tarea, puede "perder" el control, antes de agotar su
numero de quantums. Sí esa tarea hace una petición de entrada / salida a disco por
ejemplo, debido a que esa petición es muy costosa en tiempo (estamos hablando
de algunos milisegundos), mientras se ejecuta, evidentemente la CPU puede hacer
muchísimas mas cosas. Por tanto el sistema operativo toma el control y se lo cede
a otra tarea.
El sistema operativo, debe ser "listo". Debe jugar con las prioridades de tarea y variarlas
ligeramente. Es decir, a un programa que hace muchas entradas/salida, debido
a que está poco tiempo en memoria, el sistema operativo le debería subir la
prioridad. En cambio al revés, a un programa que chupa mucha CPU y no realiza
apenas entrada / salida, el sistema operativo debe bajarle la prioridad al objeto de
que no se apodere todo el tiempo de la CPU.
Evidentemente, el propio núcleo del sistema operativo debe ser el proceso de máxima
prioridad.
Bien, esta es la teoría de Multitarea REAL. Y esto es lo que realiza win95 / 98 con
las tareas de 32 bits.
Pero las tareas de 16 bits, se "inventaron" (heredado de Windows 3.1), la MULTITAREA
CORPORATIVA ("preemptive"). Realmente este no es un concepto informático.
Es un concepto Microsoft. Me explico: en este caso no existe la "cesión" de
una tarea a otra por el tiempo consumido en máquina, sino como por definición, las
tareas Windows, "generalmente" emiten muchos mensajes al sistema, (funcionan
por intercambio de mensajes), cada vez que se emiten por parte de un programa
ciertos tipos de mensaje, el sistema operativo toma control al recibir ese mensaje y
cede en algunos de ellos el control a otra tarea. Este es el funcionamiento de las tareas
de 16 bits. Y evidentemente, peligrosísimo, ya que si una tarea no emite esos
mensajes, y esa tarea está mal programada y se mete en un bucle infinito, entonces
Windows se nos quedará "colgado". No responderá ni el teclado.
Windows 95 / 98, por "herencia", debe permitir ambos tipos de "multitarea". La REAL
para tareas de 32 bits, y la "cooperativa" para tareas de 16 bits (y recemos, para
que realmente "cooperen" esas tareas). La manera de hacerlo, es crearse una máquina
virtual para cada tarea de 32 bits, y otra máquina virtual para "todas" las tareas
de 16 bits. Por tanto es importante recalcar que TODAS las de 16, comparten
la "misma" máquina virtual.
Esto ultimo implica, que la caída de una tarea de 16 bits, dejará, probablemente,
inutilizado TODA la máquina virtual de 16 bits. Y esto es importante, porque win 95
/ 98 tiene mucho código de 16 bits en su núcleo.
Por tanto nos inutilizará, probablemente, parte del sistema operativo, obligándonos
a reiniciar la máquina.
En cambio, la caída de un programa de 32 bits, únicamente, provocará la caída de
esa máquina virtual, y no afecta al resto del entorno Windows. Rearrancando la tarea,
esta seguirá en funcionamiento. Por ejemplo, la caída de Word (por lo que sea)
no pasa nada, se rearranca Word y sigue funcionando. La caída de una tarea de 16
bits, en el mejor de los casos, lo único que sucedería es que esa tarea ya no podremos
arrancarla hasta que reiniciemos la máquina.

Anexo 2: El BUG de Windows 98 y SE
Supongo que como yo mismo, mucha gente, habrá sufrido las pantallas azules de
Windows 98, y que como vimos en el proceso de inicio de windows98 vienen en su
casi totalidad provocadas por los diseños defectuosos de los VxD o controladores
de dispositivos y su modo de trabajo, modo real para ser exactos.
Recuerdo que investigué algunos errores que se me hacían inexplicables, la mayoría
de las pantallas azules que me sucedía a mí insinuaban que Vmm32.VxD era el
causante de los estropicios y en los momentos más inesperados.
Después de revisar con detenimiento las pistas, llegué a una conclusión: No entendía
el por qué, y el motivo era para mí simple, los controladores Vmm32 son del
propio sistema y muy útiles y necesarios, puesto que su falta o daño podían causar
que el sistema no arrancase de ninguna manera.
Los vmm32.vxd son controladores genéricos y normalmente son para sustituir a los
específicos en caso de no existir y así poder continuar su funcionamiento
(windows98 por supuesto), por ello trabajan en modo real (causa de las imperfecciones,
ya que son difícilmente aislables y que el sistema continue) y digamos que
no brillan por su optimización.
Cuando ya había cambiado de S.O. y estaba trabajando con NT y con el incipiente
W2000, cayó en mis manos cierta información sobre un BUG (error) en la instalación
de Windows, en ese momento mientras leía y releía se me hizo la luz, pensé
que era tonto, muy tonto, revisé todo el proceso montones de veces y no caí en
darme una vuelta en la instalación de Windows98. Ya a posteriori y no hace demasiado,
encontré un artículo referente al tema en una revista del sector (una de las
que aparecen los trucos, me parece a mí, Copiados de los grupos de la gente que
se los curra y que ni siquiera cita la procedencia), y recuerdo también que algo cité
en la lista, pero dejemos el enredo y pasemos a lo técnico.
La instalación de windows98 y 98SE tiene un error no reconocido por Microsoft
(que van a reconocer...)
1 ) Cuando Windows inicia busca lo mejor para su funcionamiento, en caso de
existir lo utiliza, en caso contrario carga los que están en el directorio
Vmm32 (recordemos, VxD en modo real, lentos y poco optimizados).
2 ) Estos controladores son básicamente de sistema, por tanto es el propio
Windows quien debe instalar los mejores.
3 ) ¿Que pasa entonces? ¿por qué siempre utiliza los genéricos?
4 ) El BUG!!!! Windows se instala, pero obvia un paso fundamental, NO COPIA
los controladores optimizados en el directorio Vmm32, controladores que por
otra parte están dentro de los CAB del sistema en el CD.
Solución: Debemos extraerlos manualmente e instalarlos en el directorio Vmm32
de c:windowssystem.
vcomm.vxd, vdmad.vxd, configmg.vxd, vdd.vxd, vmouse.vxd, ntker.vxd y vflatd.vxd.
Se encuentran en los cab 47 y 48 de windows98 y en los 53 y 54 de Windows
98SE.
¿Cómo?: Pues la herramienta SFC del propio sistema operativo.
Inicio Ejecutar SFC
Marcar Extraer un archivo del disco de instalación especificar el archivo
En restaurar de: ruta de los cabs de windows en el cd: ejemplo: D:win98 (unidad
cd)
Guardar archivo en: la ruta es C:WINDOWSSYSTEMVMM32
Se repite para la copia de los archivos mencionados.
Al iniciar Windows, al menos, usará los Vxd que más optimizados están para el
propio sistema y que son para cada dispositivo, y no utilizará los genéricos
Vmm32.Vxd si no es en caso de corrupción de los primeros.
El sistema funciona con "excepciones", es como ponerse en una cola para saltar
del anillo modo USER al anillo modo KERNEL.
Se está leyendo un disquete y a media marcha a propósito o sin quererlo, quitamos
el disquete, puede que nos dé un mensaje o puede que nos diga Excepción grave...
sobre un fondo azul.
La diferencia estará que la mayoría de las excepciones de este tipo se resuelven
volviendo a poner el disquete y pulsar cualquier tecla, mientras que las otras una
vez mostrado el azulón no nos va a dejar mojar más pan en la sopa...
Una excepción es una solicitud al sistema para que nos autorice cierta operación
con cierto dispositivo, puede que el dispositivo esté ocupado, puede que pille cabreado
al procesador, o incluso que pille cabreado al sistema por tanto trabajo y
que su respuesta, a falta de formas más sútiles, nos haga entender con ese color
tan azulón que está harto de todo, de su trabajo, de su sueldo, de nosotros, de la
RAM, de los buses, de los controladores, del registro, vamos que está harto.... y ya
sabemos que cuando uno está harto apaga de donde sea...

=====================

Agradecimientos
Agradezco enormemente la labor de José Manuel TELLA LLOP (JMT) por su trabajo
desinteresado por hacer llegar el conocimiento sobre Windows 98 a todos los
usuarios que participaron en los grupos de noticias de Microsoft Windows 98 entre
1998-2000,

====================

Pues yo ya estoy un pokito harto de copiar. Espero que haya sido instructivo.

Un salu2 a to2, to2.
Er Muky

[ Este mensaje fue editado por: Mukycom on 01-04-2003 22:28 ]

Posibles soluciones:
Registro de windows (registry)Registro de windows (registry)
Necesito ayuda con el registro de registry mechanic 2Necesito ayuda con el registro de registry mechanic 2
Necesito codigo de registro para registry mechanicNecesito codigo de registro para registry mechanic
Cómo editar registro de windows sin windowsCómo editar registro de windows sin windows
Registro so  windows xp.Registro so windows xp.
puercas

Re: Registro de Windows (registry) - 2005-02-03 22:30 - Respuesta 2

puercas
Nosferatus

Re: Registro de Windows (registry) - 2005-02-03 22:50 - Respuesta 3

Amén maestro sabio entre los sabios, Muky la verdad es que gracias a ti y gente como tú me doy cada día más cuenta de lo ignorante que puedo llegar a ser.

Sigue así peaso monstruo

Un saludo

piolin101371

Re: Registro de Windows (registry) - 2005-12-27 20:33 - Respuesta 4

Cuando inicio el sistema y trato de abrir cualquier programa no me lo carga, entro al panel de control y hago dobleclick en en cualquier icono y me sale ha ocurrido una excepcion al intentar ejecutar "shell32.dll, control_RunDLL. Que componete esta malo y como puedo resolver este problemita.
Página:1

Respuestas relacionadas:

Registro del windows xpRegistro del windows xpForo
El registro de windowsEl registro de windowsForo
Registro de windows??Registro de windows??Foro
Registro de windowsRegistro de windowsForo
Registro de windowsRegistro de windowsForo
Windows xp registroWindows xp registroForo
Registro de windowsRegistro de windowsForo
Registro de windowsRegistro de windowsForo
Registro de windows xpRegistro de windows xpForo
Registro de windowsRegistro de windowsForo
InicioSecciones
^ SubirAviso legal
Política Privacidad
Configurarequipos25 Noviembre 2024