9 repositorios
Operations for inserting page table entries to map physical frames into thread virtual address spaces.
Distinguishing note: None of the candidates relate to kernel-level virtual memory management; this is a core OS systems programming concern.
Explore 9 awesome GitHub repositories matching operating systems & systems programming · Virtual Memory Mapping. Refine with filters or upvote what's useful.
seL4 is a formally verified microkernel whose C implementation is backed by machine-checked mathematical proofs of correctness, confidentiality, integrity, and availability. It enforces strict isolation between processes through hardware-enforced address space separation and a capability-based access control system, where each process holds explicit rights only to the resources it has been granted. The kernel exposes hardware resources through a minimal API of system calls that manage threads, address spaces, and inter-process communication, with synchronous IPC supporting sender-identifying b
seL4 maps a physical frame into a thread's virtual address space by inserting a page table entry, requiring a page table to exist first.
Este proyecto es una colección de sistemas operativos mínimos, cargadores de arranque (bootloaders) y controladores de hardware utilizados para demostrar la programación de sistemas x86 de bajo nivel y la interconexión de hardware. Sirve como un kit de herramientas de desarrollo de kernel y un laboratorio de programación de sistemas diseñado para probar conceptos de arquitectura y comportamiento del hardware dentro de un emulador de sistema. El repositorio proporciona implementaciones de referencia para crear imágenes de disco arrancables y cargar etapas de kernel. Incluye guías para implementar transiciones de modo protegido, paginación de memoria, tablas de descriptores de interrupción y multiprocesamiento simétrico en hardware x86. La base de código cubre una amplia gama de primitivas de sistema, incluyendo mapeo de memoria virtual, manejo de interrupciones de hardware y detección de memoria física. También contiene controladores bare-metal para el altavoz de PC, teclado PS/2, puertos serie y búferes de texto VGA. El proyecto incluye una cadena de herramientas binarias crudas para compilar código fuente de ensamblador en imágenes para ejecución directa en hardware y admite pruebas mediante emulación de hardware y depuración remota.
Maps virtual addresses to physical memory frames using a multi-level page table structure.
Asterinas es un kernel de sistema operativo con seguridad de memoria diseñado para prevenir condiciones de carrera (data races) y corrupción de memoria. Funciona como un kernel compatible con la ABI de Linux, permitiendo la ejecución de binarios de Linux existentes y cargas de trabajo en contenedores mientras proporciona un modelo de distribución de sistema operativo declarativo. El proyecto se distingue por actuar como host de contenedores de máquinas virtuales y como SO invitado de computación confidencial, permitiendo su ejecución dentro de entornos de ejecución confiables (TEE) aislados por hardware como Intel TDX. Implementa una base de computación confiable mínima al aislar operaciones inseguras de bajo nivel y separa los mecanismos centrales del kernel de las implementaciones de políticas específicas. El sistema cubre una amplia gama de capacidades, incluyendo gestión de memoria física y virtual, multiprocesamiento simétrico y abstracción de hardware para varias arquitecturas de CPU. También incluye soporte para runtimes de contenedores seguros, un conjunto completo de primitivas de red y sockets, y una cadena de herramientas especializada para la compilación y emulación del kernel. El proyecto admite el despliegue en múltiples arquitecturas en plataformas x86-64, RISC-V 64 y LoongArch 64.
Provides low-level operations to create, modify, and remove private and shared memory mappings.
AsmJit es un generador de código máquina en tiempo de ejecución y backend de compilador JIT que traduce definiciones de alto nivel en instrucciones ejecutables para el procesador. Proporciona una API unificada de emisión de instrucciones y un gestor de memoria ejecutable para asignar y proteger páginas de memoria virtual a través de múltiples arquitecturas de CPU. La biblioteca funciona como un motor de ensamblador para x86 y ARM, soportando la generación de ensamblador multiplataforma a través de un backend unificado. Permite la creación de código máquina optimizado para diferentes CPUs manteniendo un único código base. El proyecto cubre abstracciones de sistema de bajo nivel, incluyendo asignación de registros, convenciones de llamada específicas de la arquitectura e instrumentación binaria dinámica. Gestiona la traducción de representaciones intermedias a código binario utilizando resolución de desplazamiento basada en etiquetas y emisión directa a búfer.
Implements dual-mapped memory allocation to comply with operating system security restrictions on executable pages.
Este proyecto es un framework educativo y kit de herramientas diseñado para desarrollar y probar kernels de sistemas operativos. Proporciona un entorno estructurado para implementar primitivas fundamentales del sistema, incluyendo gestión de memoria virtual, programación de procesos preventiva y organización de sistemas de archivos, utilizando Rust y C. El framework está orientado específicamente a arquitecturas RISC-V y x86, sirviendo como laboratorio para aprender a construir software de sistema central desde cero. El proyecto se distingue por admitir tanto el despliegue bare-metal como la emulación de hardware, permitiendo a los desarrolladores validar la lógica del kernel en hardware físico o dentro de entornos simulados. Incluye una cadena de herramientas de compilación completa que maneja la compilación entre arquitecturas y la inicialización del firmware, asegurando que el kernel pueda ser correctamente arrancado y ejecutado en diferentes plataformas objetivo. El sistema cubre una amplia gama de capacidades de bajo nivel, incluyendo capas de abstracción de hardware que desacoplan la lógica del sistema de diseños de procesadores específicos e interfaces de llamadas al sistema que gestionan el límite entre las aplicaciones de espacio de usuario y los servicios del kernel. También incorpora características de observabilidad, como registro en tiempo de ejecución y monitoreo de ejecución, para ayudar en el análisis del comportamiento del sistema durante el desarrollo.
Maps logical memory addresses to physical hardware locations to provide isolated and protected address spaces.
embedded-notes es una colección de guías de estudio técnicas y notas de desarrollo centradas en Linux embebido, los internos del kernel de Linux y programación en C. Sirve como referencia para el desarrollo de sistemas embebidos y un recurso de preparación para entrevistas técnicas en el campo. El proyecto proporciona documentación detallada sobre la escritura de drivers de dispositivos, gestión de memoria virtual y comprensión de los internos del kernel. También incluye guías sobre protocolos de red IoT, como MQTT y TCP/IP, y describe los detalles arquitectónicos de arquitecturas de chips y periféricos de hardware. El material cubre una amplia superficie de programación de sistemas, incluyendo gestión manual de memoria, gestión del ciclo de vida de procesos y la implementación de conceptos de sistemas operativos en tiempo real (RTOS). También incluye referencias para herramientas de bajo nivel, como compilación cruzada para ARM, análisis binario y scripting de shell para la automatización de compilaciones.
Documents the process of inserting page table entries to map physical RAM into virtual address spaces.
rCore is a Rust-based operating system kernel and microkernel designed for Linux compatibility. It functions as a self-hosted development kit that implements a system call interface to support the execution of standard Linux userspace applications. The system is designed for modularity, featuring a mechanism for loading and integrating kernel modules into the active environment without requiring a system reboot. The kernel provides core operating system capabilities, including virtual memory mapping for process isolation, a disk-based file system for data persistence, and a layered network p
Manages memory allocation and process isolation through a page table-based virtual memory mapping system.
Este proyecto es un entorno educativo basado en web diseñado para simular la arquitectura de procesadores de 8 bits y la ejecución de lenguaje ensamblador. Funciona como una máquina virtual que traduce código ensamblador simbólico en instrucciones de máquina, permitiendo a los usuarios observar el ciclo de búsqueda-decodificación-ejecución y su impacto en el estado del sistema en tiempo real. El simulador se distingue por una interfaz reactiva que vincula las pantallas visuales de registros y memoria directamente al estado del procesador subyacente. Incorpora un ensamblador de dos pasadas que gestiona la resolución de etiquetas simbólicas y el mapeo de direcciones de memoria, proporcionando una forma estructurada de organizar y navegar por los programas ensambladores. Los usuarios pueden controlar la frecuencia de reloj del procesador virtual, lo que les permite marcar el ritmo de ejecución de las instrucciones para una observación y depuración detalladas. La aplicación proporciona un conjunto integral de herramientas para monitorear banderas internas del procesador, valores de registros y contenidos de memoria. Admite un formato de datos flexible para la memoria y los registros, lo que permite ver los valores en notación hexadecimal o decimal. El entorno está construido como una aplicación basada en navegador, facilitando el estudio de conceptos informáticos de bajo nivel y la lógica de sistemas embebidos sin requerir hardware externo.
Manages a linear array of bytes as simulated system memory for direct addressing and label resolution.
Varnish Cache es un proxy inverso HTTP y acelerador de contenido diseñado para situarse frente a servidores web. Funciona como un motor de caché que almacena contenido web accedido frecuentemente en memoria para reducir la carga de procesamiento en los servidores de origen backend y acelerar los tiempos de entrega para los usuarios finales. El software se distingue por un lenguaje de configuración específico del dominio que compila la lógica de manejo de solicitudes en bytecode a nivel de máquina para su ejecución a velocidad de cable. Utiliza un bucle de eventos multihilo para gestionar conexiones concurrentes y emplea almacenamiento de objetos en memoria compartida junto con paginación de memoria virtual para facilitar la recuperación rápida de datos y el acceso al disco. Más allá de sus capacidades centrales de caché, el sistema proporciona una gestión integral del tráfico, incluyendo el procesamiento de pipelines de solicitud-respuesta y sondeos de salud del backend. Estas características permiten la distribución de solicitudes de red entrantes a través de múltiples servidores para garantizar una alta disponibilidad y el enrutamiento dinámico del tráfico lejos de la infraestructura sobrecargada.
Maps large cache files directly into the process address space to leverage kernel optimizations for disk access.