Мне задали этот вопрос во время интервью. Что они хотели знать, когда пользователь называет malloc (4) распределять 4 байта памяти, как реагирует операционная система (Linux)? Какая подсистема отвечает на этот системный вызов?
Я сказал ему, что malloc() будет обслуживаться подсистемой управления памятью. Реализация malloc() будет проходить через список свободной памяти (физической памяти), мы будем называть ее свободным списком и найти соответствующий фрагмент, который больше или равен 4 байтам. Как только он найдет такой кусок, он будет удален из бесплатного списка и добавлен в использованный список. Затем эта физическая память будет отображена в кучу процесса vma struct. Он, похоже, не вполне удовлетворился этим ответом. Как система приятелей вписывается в это? Любая помощь будет принята с благодарностью.