Crédito:Pixabay/CC0 Dominio público
El núcleo de un sistema operativo actúa como traductor entre el usuario y la máquina. Para mejorar la confiabilidad de un kernel, los desarrolladores pueden aislar los controladores de dispositivos del sistema operativo y evitar que una falla en un componente afecte a otros componentes. El aislamiento, sin embargo, requiere cantidades poco prácticas de esfuerzo humano.
Un equipo de investigadores, dirigido por G. Gary Tan y Trent Jaeger, profesores de informática e ingeniería en Penn State, se dispuso a desarrollar un marco que pudiera automatizar y reducir la cantidad de trabajo manual necesario para el aislamiento de controladores de dispositivos en presencia de patrones de kernel desafiantes.
Los investigadores presentaron su marco en el 16º Simposio USENIX sobre Diseño e Implementación de Sistemas Operativos (OSDI '22), que tuvo lugar del 11 al 13 de julio en Carlsbad, California. OSDI es una conferencia de primer nivel en la investigación de sistemas operativos y reúne a profesionales de entornos académicos e industriales para discutir el diseño, la implementación y las implicaciones del software de sistemas, según su sitio web.
El núcleo del sistema operativo controla y coordina todo el hardware y el software de la computadora. Los controladores de dispositivos permiten que el kernel interactúe con el hardware sin conocer los detalles del componente. Por ejemplo, cuando un usuario indica a su computadora que imprima un documento, el kernel invoca ciertas funciones de interfaz proporcionadas por un controlador de impresora, que procesa los datos y envía el trabajo a la impresora.
Según Tan, para aislar de manera efectiva los controladores de dispositivos y mantener la comunicación kernel-driver, los desarrolladores necesitaban inspeccionar la interfaz de comunicación grande y compleja entre un controlador y el kernel y decidir qué datos debían sincronizarse examinando todas las interacciones entre el controlador y el kernel. núcleo. También necesitaban manejar patrones de sincronización desafiantes, como la concurrencia de datos, escribiendo miles de líneas de código para mantener las operaciones sin problemas.
"El aislamiento es una técnica efectiva para mejorar la confiabilidad en los sistemas de software, como el kernel, pero confiar en el esfuerzo humano para aislar los controladores no es realista, por lo que nos propusimos desarrollar un marco para automatizar el proceso", dijo Tan. "Con el aislamiento, la falla en un componente está restringida dentro de su propio dominio; los errores en un componente no pueden afectar directamente al resto del sistema. Esto mejora significativamente la confiabilidad".
Desarrollaron KSplit, un enfoque que puede analizar automáticamente el estado compartido del núcleo del controlador y calcular cualquiera de las necesidades de sincronización solo para este estado compartido. El programa también identifica áreas que necesitan intervención manual, reduciendo la carga de trabajo manual a una codificación y clasificación de datos mínimas.
"Antes de KSplit, el proceso requería mucha mano de obra y era propenso a errores", dijo Tan. "Con KSplit, la mayoría de estas complicadas tareas de aislamiento se manejan automáticamente".
Los investigadores evaluaron la solución con 354 controladores de dispositivos en nueve subsistemas en un kernel de Linux. Para un controlador complejo, KSplit requería actualizaciones manuales de 53 de las 2476 líneas de código, que eran especificaciones de interfaz generadas automáticamente, y 19 cambios adicionales en el código del controlador. Eso es menos del 3% del trabajo manual requerido sin KSplit.
"El análisis KSplit de los 354 controladores muestra que se espera una fracción similar de trabajo manual, lo que demuestra que KSplit es una herramienta práctica para automatizar tareas clave para permitir el aislamiento del controlador", dijo Jaeger. "Sin embargo, el marco se enfoca principalmente en mejorar la confiabilidad del sistema. Planeamos extender KSplit para fortalecer la interfaz entre el kernel y un controlador, con una garantía de seguridad para el kernel incluso en presencia de un controlador malicioso".
Según Jaeger, el conjunto de análisis estáticos proporcionados por KSplit, como el cálculo de los datos necesarios entre las diferentes partes del sistema, puede extenderse al software que requiere un análisis preciso de la información de acceso a los datos, destacando el potencial de protección contra violaciones de seguridad intencionales u otros ataques. . Aproximación a un núcleo de verdad