Ahora sé que se debe evitar el desarrollo de una aplicación que se meta en el kernel, es difícil de depurar, complejo, etc. con eso fuera de la mesa ¿Cuáles son algunas de las ventajas de mover una aplicación? espacio de usuario para el kernel? después de todo, si no hubiera lados positivos, nunca se haría ... ¿qué son algunos?en kernel y espacio de usuario
Respuesta
Algunos posibles ventajas:
sistemapide podría ser más rápidos (es decir latencias más bajas), como la CPU no tiene que cambiar del modo de aplicación en modo de núcleo. (Esto no es necesariamente cierto, ya que la CPU puede hacer una distinción más fina que simplemente "espacio de usuario" y "espacio del núcleo". Las CPU Intel x86 por ejemplo tienen un modelo de anillo que abarca 4 niveles de privilegios distintos). 1)
puede obtener acceso directo al hardware del sistema a través de la memoria y puertos de E/S.
que podría ser capaz de suprimir la conmutación de tareas, si necesita hacer algo sin ser interrumpido
que podría ser capaz de mecanismos de seguridad eludir forzadas por el sistema operativo (por ejemplo, leer/modificar memoria de otros procesos). (Malware podría tomar ventaja de esto si se instala como un controlador de dispositivo de modo de núcleo.)
(Y, por supuesto, como saben, hay muchas muchas desventajas y riesgos de seguridad. La distinción entre el espacio de aplicaciones y el espacio del núcleo está ahí por buenas razones.)
1) Véase, por ejemplo el artículo Making system calls from kernel space from Linux mag:
Por ejemplo, un servidor web de alto rendimiento podría residir en el núcleo para un mayor rendimiento y menor latencia. Sin embargo, también existe un compromiso de seguridad [...]
Tiene la posibilidad de que un pequeño error en su programa garabatee toda la memoria y corrompa todo el sistema y todos sus procesos y funciones. Si tiene suerte, el sistema se bloqueará.
Algunas de las razones por las que me vienen a la mente en la búsqueda de opciones, es decir, el modo de núcleo vs modo de usuario:
1) Cuando el procesamiento dedicado es requerido y queremos utilizar las utilidades integradas en el sistema operativo. Ejemplo: si tuviéramos que diseñar un servidor IO. Aquí las latencias son de 1 a 5 ms. Uno no puede esperar los cambios de contexto debido a las compensaciones del modo kernel - usuario. Pero si uno tiene que confiar en el marco de IP de TCP dado por kernel. Tiene que implementarse en modo Kernel vinculando estrechamente la infraestructura de red/TCP/IP y su marco de transporte previsto.
2) Cuando desee poseer completamente el marco de programación.Si bien esto está disponible de forma intuitiva utilizando varias llamadas al sistema y pthread frameworks. Sin embargo, si su producto/subprocesos posee completamente el procesador, entonces hay casos de interbloqueos o bloqueos en vivo de los que puede querer recuperar. En tales situaciones, necesitaría un marco que tenga en cuenta el tiempo que le lleva cada hilo. Esto no se puede hacer desde el usuario lan y, por lo tanto, se requiere soporte del kernel scheduler/schedule subsystem.
3) Cuando desee sobrecargar el acceso a la memoria, nuevamente en entornos donde los recursos están dedicados a una operación en particular. Tiene sentido superponer la memoria física/memoria del kernel para hilos virtuales.
4) Cuando desee virtualizar el acceso al disco para agregar redundancia o mejorar el rendimiento de lectura/escritura.
Podría haber muchas más razones, pero la causa raíz central:
1) Cada vez que se desea reducir capas para obtener un rendimiento que mueve al núcleo. Desde kernel se agrega el marco de virtualización para compartir los recursos (cpu, ram, network, disk).
2) Cuando quiera usar la infraestructura del kernel para usar, es difícil transportarla al usuario lan (Tcp/ip o shceduler).
- 1. Netlink espacio de usuario y comunicación kernel-espacio
- 2. Del kernel al espacio de usuario (DMA)
- 3. Implementación de protocolos en espacio de usuario versus espacio de kernel - implicación de rendimiento
- 4. ¿Cómo acceder al espacio del kernel desde el espacio del usuario?
- 5. ¿Cómo usar kernel libcrc32c (o las mismas funciones) en programas de espacio de usuario?
- 6. std :: threads se gestionan en el espacio de usuario o kernel?
- 7. Cambiar marcadores de protección de memoria de espacio de usuario del módulo kernel
- 8. ¿Cómo acceder a la memoria de espacio de usuario desde el kernel de Linux?
- 9. Manejo de interrupción de Linux en el espacio de usuario
- 10. Cómo mapear un buffer del kernel de Linux al espacio del usuario?
- 11. modo kernel y protección de memoria
- 12. ¿Cómo remap_pfn_range reasigna la memoria del kernel al espacio del usuario?
- 13. Cómo usar ioctl() desde el espacio del kernel en Linux?
- 14. Volcado de kernel iniciado por el usuario en Windows XP
- 15. Cómo ocultar un control de usuario y eliminar su espacio
- 16. Ejecutando un ejecutable en modo usuario desde el modo kernel
- 17. ¿Cuál es la diferencia entre los modos de usuario y kernel en los sistemas operativos?
- 18. Comunicación entre el modo kernel y la aplicación en modo de usuario
- 19. ¿Barreras de memoria en el espacio de usuario? (Linux, x86-64)
- 20. ¿Cómo pasar del modo de usuario al modo kernel?
- 21. Implementando syscalls cancelables en el espacio de usuario
- 22. ¿Cuál es la diferencia entre kernel y programación en modo usuario?
- 23. traducción de dirección virtual del kernel
- 24. Uso de la comunicación ioctl entre el modo Kernel y el modo de usuario
- 25. Memoria del kernel (entradas de direcciones virtuales) en TLB?
- 26. ¿Se intercambian las páginas Kernel?
- 27. Tabla de símbolos del kernel mapeada en el espacio de direcciones virtuales - ¿por qué?
- 28. ¿Se pueden utilizar macros probables/improbables en el código de espacio de usuario?
- 29. ¿Cómo se lee el búfer de anillo dentro del espacio del kernel de Linux?
- 30. ¿En qué contexto Kernel Thread se ejecuta en Linux?
Puede organizar el acceso directo al hardware del sistema también en el espacio de usuario (al menos para puertos de E/S y regiones de memoria del dispositivo). Sin embargo, las rutinas de servicio de interrupción no se pueden hacer de esa manera. – caf