Est-ce que libc et malloc font partie du système d’exploitation?

Je discutais avec un collègue à propos de malloc, et je me demandais si ce sont les cas où certains appels de libc comme malloc sont implémentés par le système d’exploitation?

J’ai toujours pensé que malloc appelait certains symboles exposés dans “sys” pour déclarer les adresses mémoire à utiliser. D’après ce que je pensais, le système d’exploitation permettrait de spécifier la segmentation du programme en utilisant certains api de niveau os … qui pourraient ressembler à:

int assign_memory_segmention(size_t start, size_t end); 

Je sais que mon en-tête stdlib.h fait partie de GNU à cause de l’en-tête GPL … et comme GNU s’est assuré de m’informer … ils ne sont pas Unix. Est-ce que malloc est juste un type de pointeur de fonction sur une implémentation de segment de système d’exploitation?

Cette question est mieux posée avec une autre question: qu’est-ce qu’un système d’exploitation? Ou si vous préférez: où imprimez-vous la ligne entre le système d’exploitation et les bibliothèques standard?

malloc technique, malloc fait partie de la bibliothèque standard C. Et comme Linux est principalement écrit en C, et que la même bibliothèque inclut également de nombreux appels système, pas en langage C, il est raisonnable de penser que cette bibliothèque fait partie du système d’exploitation.

Mais, d’autre part, il existe plusieurs implémentations de la bibliothèque C, et la bibliothèque GNU C est également disponible pour d’autres systèmes d’exploitation, tels que Windows. Et je suis sûr qu’il existe d’autres langages qui appellent le système d’exploitation sans utiliser la bibliothèque C standard. Ainsi, à partir de ce POV, il ne fait pas partie du système d’exploitation.

Mais alors, Linux est le kernel, le système d’exploitation devrait s’appeler GNU / Linux (citation nécessaire). Mais encore une fois, il existe des systèmes Linux sans GNU, tels que Android …

La conclusion est la suivante: le terme “système d’exploitation” n’est pas technique. Si vous voulez être précis, utilisez le kernel ou la bibliothèque standard C , etc.

Oui et non. C malloc () est généralement un sous-allocateur pour les zones de mémoire fournies par les appels du système d’exploitation. Le système d’exploitation gère toute la mémoire virtuelle – cela fait partie de son travail.