Какая связь между ядром Linux и библиотекой GNU C? - PullRequest
3 голосов
/ 14 января 2020

Мы знаем, что Linux ядро ​​написано в C. Но вызывает ли он также стандартные C функции, такие как malloc(), или дополнительные функции, такие как mmap(), которые предоставляются библиотекой GNU C (glib c)? В этом случае это странно, потому что прямое низкоуровневое взаимодействие с оборудованием, например, управление памятью, должно быть почти всегда задачей ядра. Итак, что зависит от другого? Что является более фундаментальным / низкоуровневым?

1 Ответ

8 голосов
/ 14 января 2020

Мы знаем, что Linux ядро ​​написано в C. Но он также вызывает стандартные функции C, такие как mallo c ()

Нет. Однако ядро ​​определяет подобные функции, такие как kmalloc. Обратите внимание, что это не часть библиотеки; это часть самого ядра.

или дополнительные функции, такие как mmap ()

Не mmap, но есть много памяти функции управления в ядре.

, которые предоставляются библиотекой GNU C (glib c)?

Определенно нет. Ядро никогда не использует glib c.

Итак, что зависит от другого?

Некоторые части glib c зависят от ядра. Другие части (например, strcpy) не имеют ничего общего с ядром и не зависят от него. Ядро никогда не зависит от glib c. Вы можете запускать программы на Linux, которые используют другую библиотеку lib c (например, "musl") или вообще не используют библиотеку lib c.

...