0x04 - L’Allocation Dynamique
Afin d’allouer plus de mémoire que 4Kb, nous avons besoin d’allouer de la memoire en premier lieu! Puisque nous sommes le noyau, nous sommes le patron. Nous pouvons réserver la mémoire directement après les métadonnées de la page et la réserver pour notre pile de données . La taille à réserver est quelque peu arbitraire, donc nous choisissons 1 Mo parce que c’est assez spatieux pour être suffisant pour les besoins de la mémoire dynamique du noyau, et assez petit pour qu’il n’utilise pas une partie significatif de la mémoire que le code utilisateur pourrait utiliser.
Maintenant que nous avons une partie de la mémoire, tout ce dont nous avons besoin est une fonction pour la diviser! Nous allons exposer l’interface familière void * malloc (uint32_t octets) dans les fichiers src/kernel/mem.c et include/kernel/mem.h . Nous allons associer chaque allocation à un en-tête. Les en-têtes formeront une liste chaînée, afin que nous puissions facilement parcourir à partir du début d’une allocation à l’autre. Il comprendra également une taille, et si l’allocation est actuellement en cours d’utilisation. Voici la définition de la structure d’en-tête:
|
|
Pour attribuer la mémoire, tout ce que nous devons faire est de trouver l’allocation qui correspond le mieux au nombre d’octets demandés et qui n’est pas utilisé. Si cette allocation est très importante, nous pouvons diviser cette allocation en deux plus petites, et n’utiliser que l’une d’entre elles. Le critère que nous avons utilisé pour déterminer si une allocation doit être fractionnée est si l’allocation est au moins deux fois la taille d’un en-tête. Une fois que nous avons une allocation, nous retournons un pointeur vers la mémoire directement après l’en-tête. Voici le code:
|
|
Libérer la mémoire
Maintenant que nous avons malloc , naturellement nous avons besoin de free afin que nous ne remplissions pas notre 1 Mo avec des données qui ne seront plus utilisées. De toute évidence, nous devons marquer les allocations inutilisées, de sorte qu’un autre appel à malloc pourra réattribuer. En outre, nous devons fusionner les allocations libres adjacentes en une seule. Voici le code:
|
|
Initialiser le stack
Maintenant que nous avons les algorithmes pour attribuer et libérer, nous devons initialiser le stack. Pour cela, nous devons réserver les pages que nous allons utiliser, mettre un en-tête au début de notre allocation de 1 Mo qui indique qu’il y a une allocation inutilisée de 1 Mo, et assigner heap_segment_list_head à cet en-tête. Enfin, nous devons appeler cette fonction d’initialisation dans kernel_main . Voici le code:
|
|
Le code est publiquement disponible sur GitHub.
Articles Similaires
Ubuntu 24.04 LTS - Une version qui fait débat entre déception et enthousiasme
Ubuntu 24.04 LTS, “Noble Numbat”, a récemment été déployée, apportant son lot de nouveautés et de changements. Cette version suscite à la fois de l’enthousiasme et de la déception au sein de la communauté des utilisateurs et des développeurs. Déception et colère face à la gestion des paquets DEB Plusieurs utilisateur d’Ubuntu ont exprimé leur déception et colère face à la décision de Canonical, la société mère d’ Ubuntu, de favoriser les paquets Snap au détriment des paquets DEB.
Lire la SuiteLe concours de beauté Miss AI : un cauchemar dystopique ou le futur de la beauté ?
Dans un monde où la technologie et la beauté fusionnent, le concours de beauté Miss AI fait son apparition. Ce concours, organisé par The World AI Creator Awards, récompense les créateurs d’images et d’influenceurs générés par intelligence artificielle (IA). Mais qu’est-ce que cela signifie pour les standards de beauté et les femmes ? Le concours Miss AI est ouvert aux créateurs d’images et d’influenceurs générés par IA qui souhaitent montrer leur charme et leur compétence technique.
Lire la SuiteLe gouvernement du Salvador prend un coup dur : les hackers divulguent le code source et les accès VPN du portefeuille bitcoin national Chivo !
Le programme bitcoin du gouvernement du Salvador, Chivo, a été victime d’une série d’attaques informatiques ces derniers jours. Les hackers ont déjà divulgué les données personnelles de plus de 5 millions de Salvadoriens. Maintenant, les mêmes pirates informatiques ont publié des extraits du code source et des informations d’accès VPN du portefeuille bitcoin national Chivo sur un forum de hacking en ligne, CiberInteligenciaSV. Ceci est un coup dur pour El Salvador, qui lutte pour être un pionnier dans l’adoption du bitcoin.
Lire la Suite