Desarrollo de un kernel académico para arquitecturas x86-64 en C++

Autor: Martínez García, Ernesto
Přispěvatelé: Corbí Bellot, Antonio Miguel, Universidad de Alicante. Departamento de Lenguajes y Sistemas Informáticos
Rok vydání: 2022
Předmět:
Zdroj: RUA. Repositorio Institucional de la Universidad de Alicante
Universidad de Alicante (UA)
Popis: El siguiente trabajo tiene como objetivo el desarrollo y documentación de alma, un kernel (núcleo) en C++ de funcionalidad muy reducida para manejar los recursos hardware de una máquina con arquitectura x86-64. En sus últimas versiones, alma puede ser arrancado en hardware real mediante un archivo iso, tanto en sistemas con UEFI como con BIOS. Al tratarse de un kernel no se dispone de biblioteca estándar, funciones base o llamadas a sistema (syscalls) sobre las que desarrollar. Cada píxel que aparece por pantalla, cada acción de los pistones del teclado, cada reserva de memoria: está todo gestionado exclusivamente por el kernel y plasmado en este trabajo. Para mejorar la calidad del software desarrollado se han implementado desde cero funciones conocidas como printf, malloc, scanf, etc. En conjunto con el kernel también se ha desarrollado un bootloader capaz de arrancar alma en máquinas que dispongan de UEFI. Se ha escrito en el lenguaje C junto con la librería de desarrollo posix-uefi [1] para comunicarnos con los servicios de UEFI mediante una interfaz POSIX. En las últimas versiones del proyecto, el desarrollo del bootloader ha sido reemplazado por la integración del protocolo de arranque stivale2 en el kernel. Ahora alma puede ser arrancado por cualquier bootloader que implemente el mismo protocolo. También se proporciona un sistema de construcción con cmake [2] capaz de compilar el proyecto de forma automatizada. Junto al sistema de construcción, se ha desarrollado un script capaz de construir gcc y otros programas de la toolchain del proyecto con las modificaciones necesarias para desarrollar un kernel. Puesto que construir alma es una tarea muy compleja, se ha configurado un entorno de desarrollo virtualizado preparado para construir el proyecto. El objetivo del proyecto no es desarrollar un kernel usable en hardware real ni útil para determinadas tareas. alma ha sido desarrollado con fines meramente académicos, al igual que otros proyectos similares desarrollados por otras universidades tales como xv6 [3] (Massachusetts Institute of Technology), OS/161 [4] (Harvard) y SWEB [5] (Graz University of Technology).
Databáze: OpenAIRE