Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

306
Vistas
En el arranque, ¿cómo asigna el kernel de Linux la memoria para su propio asignador de memoria?

Estoy construyendo un pequeño kernel x86-64 que escribo completamente desde cero. Estoy empezando a escribir un asignador de memoria muy simple en el que simplemente itero en las estructuras de la página para encontrar una página libre y romper el ciclo cuando encuentro una. Cuando comencé a escribir el asignador, me topé con un problema.

En mi kernel, logré obtener un mapa de memoria de RAM usando una llamada UEFI (GetMemoryMap()). Al iterar en el mapa de memoria, logré encontrar que tendría alrededor de 1021 MB de memoria utilizable (de 1024 MB). Pruebo mi kernel en QEMU.

Leí aquí y allá que el kernel de Linux tiene una estructura de página para cada página del sistema. Supongo que el asignador de memoria del kernel de Linux usa las estructuras de página para determinar qué página es gratuita y cuál no. Mediante el uso de una estructura binaria adecuada y un algoritmo eficiente, intenta encontrar una página libre lo más rápido posible para usar por sí mismo o para proporcionar a un proceso de modo de usuario.

Si mi suposición es correcta, el problema surge aquí. Si el asignador de memoria del kernel de Linux se basa en la estructura de la página para funcionar, ¿cómo asigna memoria para las estructuras de la página?

Pensé en un algoritmo simple en el que simplemente empiezo en la dirección física de la primera región de memoria utilizable. Si esta región de memoria tiene espacio suficiente para todas las estructuras de página (que representan toda la memoria), me detengo ahí. De lo contrario, uso la segunda región de memoria y así sucesivamente. Esto parece bastante simple, pero quería saber cómo el kernel de Linux maneja ese problema.

Incluso si mi suposición anterior es incorrecta, el asignador de memoria probablemente requiera algo de memoria para funcionar. En el arranque, ¿cómo asigna el kernel de Linux la memoria para su propio asignador de memoria?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Supongo que puedes buscar en Google algunas cosas sobre el asignador de memblock, que administra la memoria física en la fase de arranque del kernel.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda