Являются ли системные вызовы частью ядра или они являются частью ОС?

NTP 4.2.8p2 включается при обновлении до Solaris 11.3, поддерживаемой в настоящее время версии Solaris 11.

0
04.03.2019, 17:50
2 ответа

Существует множество способов реализации системных вызовов, и хотя «программные прерывания» (ловушки )являются одним из них, использовались и используются до сих пор, существуют и другие способы, например,. инструкцию syscall(см. напр. здесь для более подробной информации ).

Таким образом, системный вызов — это способ вызова кода ядра. Вызываемый код определенно является частью ядра. Вызывающий код находится в пространстве пользователя (, очевидно ),и часто является частью библиотеки (, например.libc).

Вопрос «является ли X частью Y» в основном зависит от вашего определения Y. Определите, что вы подразумеваете под «ядром», «ОС» и «является частью» (разные люди определяют это по-разному ), и вы сможете сказать, являются ли «системные вызовы частью ядра, соответственно ОС».

Лучший способ думать об этом состоит в том, что системные вызовы определяют API (интерфейс прикладного программирования )для кода ядра. Таким образом, они тесно связаны с ядром (, а иногда и с конкретными версиями ядра ).

0
28.01.2020, 03:57

But what about the system calls implementations (for example: the instructions that write data to a file, or the instructions that open a socket), are these instructions considered to be part of the kernel?

Они являются частью ядра.

но я подозреваю, что вы хотели бы, чтобы некоторые ссылки сопровождали это утверждение

Исходный код системного вызова read()находится здесь:linux -5.0/fs/read _write.c :571

Очевидно, что если вы хотите найти, например. исходный код, который читается из определенной файловой системы, вам пришлось бы выполнять несколько вызовов функций :-).

Весь этот код встраивается в образ ядра или в модуль, который можно -загрузить по требованию, чтобы он стал частью работающего ядра. Linux поддерживает несколько различных типов файловых систем, поэтому они часто собираются в виде модулей.

Вероятно, вы используете файловые системы ext4, а также vfat. Вы можете увидеть список загруженных модулей ядра, используя lsmod.

В моей системе Fedora 29 ext4является частью образа ядра, а vfat— загружаемым модулем. Поэтому lsmodне показывает ext4. Однако modprobe --show-depends ext4говорит мне «встроенный ext4».

Страницы руководства:

0
28.01.2020, 03:57

Теги

Похожие вопросы