NTP 4.2.8p2 включается при обновлении до Solaris 11.3, поддерживаемой в настоящее время версии Solaris 11.
Существует множество способов реализации системных вызовов, и хотя «программные прерывания» (ловушки )являются одним из них, использовались и используются до сих пор, существуют и другие способы, например,. инструкцию syscall
(см. напр. здесь для более подробной информации ).
Таким образом, системный вызов — это способ вызова кода ядра. Вызываемый код определенно является частью ядра. Вызывающий код находится в пространстве пользователя (, очевидно ),и часто является частью библиотеки (, например.libc
).
Вопрос «является ли X частью Y» в основном зависит от вашего определения Y. Определите, что вы подразумеваете под «ядром», «ОС» и «является частью» (разные люди определяют это по-разному ), и вы сможете сказать, являются ли «системные вызовы частью ядра, соответственно ОС».
Лучший способ думать об этом состоит в том, что системные вызовы определяют API (интерфейс прикладного программирования )для кода ядра. Таким образом, они тесно связаны с ядром (, а иногда и с конкретными версиями ядра ).
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».
Страницы руководства: