Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo Windows implementa el estado del kernel y el estado del usuario

Cómo Windows implementa el estado del kernel y el estado del usuario

Para evitar que los procesos del usuario accedan o incluso modifiquen datos críticos del sistema operativo, Windows utiliza dos modos de acceso al procesador: modo de usuario y modo kernel. El código de la aplicación del usuario se ejecuta en modo de usuario, mientras que el código del sistema (como los servicios del sistema y los controladores de dispositivos) se ejecuta en modo kernel. El estado del kernel se refiere al estado de ejecución del procesador que está autorizado a acceder a toda la memoria del sistema y utilizar todas las instrucciones de la CPU. Este mecanismo del procesador permite a los diseñadores de sistemas operativos garantizar que las aplicaciones de usuario con comportamiento impredecible no desestabilicen el sistema al definir permisos más altos para el software del sistema operativo que para las aplicaciones de usuario.

Aunque cada proceso de ventana tiene su propio espacio de direcciones privado, el código del sistema operativo del estado del kernel y el código del controlador del dispositivo comparten el mismo espacio de direcciones virtuales. Cada página de memoria virtual establece el estado de ejecución del procesador requerido para leer o escribir esa página. Solo se puede acceder a las páginas en el espacio del sistema operativo desde el modo kernel; se puede acceder a todas las páginas en el espacio de direcciones del usuario desde el modo usuario. Las páginas de solo lectura (que normalmente contienen datos estáticos) no se pueden cambiar independientemente del estado del procesador. Además, en los procesadores que admiten la protección de la memoria pero no la aplican, Windows marcará las páginas que contienen datos como no ejecutables, evitando la ejecución de código que se activa inadvertidamente en las páginas de datos.

Windows de 32 bits no proporciona protección contra el uso de la memoria privada del sistema por parte de componentes que se ejecutan en estado de kernel, lo que significa que una vez en estado de kernel, el sistema operativo y el código del controlador del dispositivo tienen acceso total a la memoria del sistema. y Acceder a objetos evitando los mecanismos de seguridad de las ventanas. Debido a que el código del sistema operativo Windows se ejecuta en modo kernel, los componentes que se ejecutan en modo kernel deben diseñarse y probarse cuidadosamente para garantizar que no comprometan la seguridad del sistema ni provoquen inestabilidad.

La falta de protección significa que se debe tener mucho cuidado al cargar controladores de terceros, ya que el software del kernel tiene acceso completo a todos los datos del sistema operativo. Esta vulnerabilidad de Windows también es una razón importante para su mecanismo de firma de controladores, que advierte a los usuarios cuando se agregan controladores no autorizados al sistema. Asimismo, una tecnología llamada Driver

Verifier ayuda a los creadores de controladores a descubrir errores (como desbordamientos de búfer o pérdidas de memoria) que podrían causar problemas de seguridad o confiabilidad.

Además, en Windows de 64 bits, el esquema de marcado de código en modo kernel (KMCS) requiere que los controladores de dispositivos de 64 bits estén firmados utilizando una clave criptográfica obtenida de una autoridad certificadora de códigos autorizada. A diferencia de las versiones de 32 bits de Windows, los usuarios no pueden forzar descaradamente la instalación de controladores no autorizados, ni siquiera como administradores (a menos que presionen F8 al iniciar y seleccionen Opciones de arranque avanzadas para deshabilitar la aplicación de la firma de controladores)

Llamadas al sistema realizadas Las aplicaciones realizadas por el usuario se transferirán del modo usuario al modo kernel. Por ejemplo, la función ReadFile en Windows finalmente necesita llamar a una rutina del kernel que maneja la lectura de archivos. Esta rutina debe ejecutarse en estado de kernel porque accede a las estructuras de datos del sistema del kernel. La conversión del modo de usuario al modo kernel se completa mediante una instrucción especial del procesador que convierte el procesador al modo kernel. Después de que el sistema operativo capta esta instrucción, se da cuenta de que hay una solicitud de servicio del sistema, verifica los parámetros pasados ​​a la función del sistema y luego ejecuta la función del kernel. El procesador vuelve al estado de usuario antes de entregar el control al hilo del usuario. De esta manera, el sistema protege sus datos para que no sean leídos o incluso modificados por los procesos del usuario.

Por lo tanto, el hilo de usuario pasa parte del tiempo en modo usuario y parte del tiempo en modo kernel. De hecho, dado que los gráficos y el código del sistema de ventanas también se ejecutan en el kernel, las aplicaciones con uso intensivo de gráficos pasan más tiempo en el kernel que en el modo de usuario. Puede probar esto utilizando herramientas de rendimiento para monitorear la relación entre el tiempo en modo kernel y el tiempo en modo usuario para aplicaciones con uso intensivo de gráficos.

Puedes utilizar el Monitor de rendimiento que viene con Windows para observar la proporción de tiempo que el sistema pasa en diferentes estados operativos.

Los pasos son los siguientes:

1 Abre la herramienta

2 Haz clic en "+" en la barra de herramientas

3 Selecciona el procesador objeto de rendimiento Después de eso, haga clic en %

Contador de tiempo privilegiado, luego presione la tecla Ctrl, apunte a % Contador de tiempo del usuario

4 Haga clic en Agregar

y luego haga clic en Cerrar

5 Continúe moviendo el mouse hacia la izquierda y hacia la derecha, prestando atención al %

Tiempo privilegiado que aumenta rápidamente como se analizó anteriormente

.