Функции-оболочки для системных вызовов также называются системными вызовами? - PullRequest
0 голосов
/ 09 мая 2018

Документация для функции open() гласит следующее:

Системный вызов open () открывает файл, указанный в pathname.

Я думал, что open() - это функция-обертка для системного вызова, а не системный вызов.

Или функции-оболочки для системных вызовов также называются системными вызовами?

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Я думаю, что другой ответ от Petar - это то, что правильно, но я также хотел бы добавить, что для меня самый простой способ объяснить, почему open считается системным вызовом, потому что системные вызовы не гарантируются одинаковыми во всех ОС. Например, если мы представим ОС, в которой открыт системный вызов 1, другие ОС могут использовать системный вызов 1 для записи (как это делает linux x64), поэтому для совместимости были добавлены такие функции, как open(), где ОС обеспечивала бы реализацию open() как вызов соответствующего значения системного вызова, и программисту не придется беспокоиться о вызове правильного номера системного вызова между различными ОС

0 голосов
/ 09 мая 2018

Краткий ответ - Да.
Длинный ответ - это зависит. Системный вызов - это программный способ, которым компьютерная программа запрашивает службу у ядра операционной системы, в котором она выполняется. Это может включать в себя связанные с аппаратным обеспечением услуги (например, доступ к жесткому диску), создание и выполнение новых процессов, а также взаимодействие с интегральными службами ядра, такими как планирование процессов. Системные вызовы обеспечивают необходимый интерфейс между процессом и операционной системой.

Системные вызовы не определены как специальные функции. Скорее они являются запросом на услуги или другими словами OS API. Они почти всегда скрыты от пользователя стандартными функциями, которые предусмотрены стандартом языка. И стандарт реализован в компиляторах, которые отличаются от ОС к ОС.

...