У меня была дискуссия с коллегой о malloc, и мне было интересно, есть ли случаи, когда определенные вызовы libc, такие как malloc, реализуются операционной системой?
Я всегда думал, что malloc вызывает некоторые символы, представленные в «sys», чтобы объявить, какие адреса памяти он будет использовать. Из того, что я думал, операционная система позволит указать сегментацию программы с использованием некоторого API-интерфейса уровня ОС... который может быть похож на:
int assign_memory_segmention(size_t start, size_t end);
Я знаю, что мой заголовок stdlib.h является частью GNU из-за заголовка GPL... и, как GNU сообщил мне... они не Unix. Так является ли malloc просто указателем функции на реализацию кучи ОС?
malloc
вызывает системные вызовы для обеспечения динамического распределения памяти. В Linux он вызываетbrk
иmmap
. Так что я бы назвал это абстракцией системной функциональности. - person Yifu Wang   schedule 22.04.2014malloc()
как таковую; он предоставляет механизм, который позволяетmalloc()
запрашивать больше памяти, ноmalloc()
отвечает за передачу этой памяти программе. Таким образом, они не являются частью ядра. OTOH, функции в библиотеке C поставляются с операционной системой и используются большинством программ, поэтому они очень тесно связаны с операционной системой. - person Jonathan Leffler   schedule 22.04.2014