ce qui se passe dans le noyau au cours de malloc?

J'étais posé cette question lors d'une interview. Ce qu'ils voulaient savoir quand l'utilisateur appelle la fonction malloc(4) à allouer 4 octets de mémoire comment fonctionne le système d'exploitation (Linux) répondre? Ce qui sous-système répond à cet appel système?

Je lui ai dit que malloc() seront desservis par la gestion de la mémoire sous-système. La fonction malloc() de la mise en œuvre passera par la liste de libérer de la mémoire(mémoire physique), nous l'appellerons liste libre, et de trouver un morceau qui est supérieure ou égale à 4 Octets. Une fois qu'il en trouve un morceau, il va être supprimé de la liste libre et ajouté à une liste utilisée. Alors que la mémoire physique sera mappé sur le processus tas de vma struct. Il ne semble pas être tout à fait satisfait de cette réponse.Comment fonctionne le système de jumelage dans ce processus? Toute aide serait grandement appréciée.

  • il est tout à fait fou. malloc() est implémenté dans usermode.
  • La plupart du temps. malloc pourrait appeler sbrk.
  • Pas nécessairement. La réponse donnée ici implique que malloc() alloue de la mémoire physique qui est wrongish.
  • Également, "système d'exploitation" n'est pas la même que la "noyau"; je pense que, quand on parle d'unix, il est juste de les interpréter comme système d'exploitation "comme désignant" du noyau, bootloader, libc, et fondamental usermode programmes tels que l'init, getty, de connexion et d'amis. Selon exactement comment l'enquêteur l'a formulé sa question, de parler de ce que l'allocateur ne usermode pourrait être une réponse juste.
  • J'imagine qu'il n'est pas satisfait avec votre mélange entre l'utilisateur d'appel de malloc et du noyau de la fonction malloc. Ce que vous avez décrit doit être la fonctionnalité de noyau de malloc.
  • OS agnostique version: stackoverflow.com/questions/1119134/how-do-malloc-and-free-work

InformationsquelleAutor liv2hak | 2011-04-19