2016-03-26 5 views
-1

В Linux системные вызовы доступны в файлах заголовков C.Доступны ли системные вызовы на других языках, кроме C?

Интересно, доступны ли системные вызовы ОС на других языках?

Если я прав, системные вызовы зависят от ОС. Или исправьте меня, если я ошибаюсь.

В языках C++, Java, Python, OCaml и других языках высокого уровня на этих языках имеются библиотеки операционных систем. Не являются ли они системными вызовами, но API-интерфейсами, которые реализованы на основе системных вызовов? Являются ли их интерфейсы независимыми от ОС (например, один и тот же программный интерфейс как для Linux, так и для Windows)?

Java работает на JVM, поэтому я думаю, что его ОС, связанный с ОС, не зависит от ОС.

Python работает на своих интерпретаторах, которые обычно доступны для перекрестных ОС, поэтому я думаю, что их продукты, связанные с ОС, не зависят от ОС.

Спасибо.

+2

Что, как какой-то интерфейс [Portable Operating System] (https://en.wikipedia.org/wiki/POSIX)? –

+0

Ваш вопрос больше Язык Зависит от ОС. Например, вы можете написать функцию LISP на языке ассемблера, которая вызывает API OS, а затем вызывает функцию из кода LISP. Опять же, вам нужно будет исследовать * каждый * язык, чтобы ответить на ваш вопрос. –

+0

Возьмем еще один пример: Фортран. Язык Fortran имеет определенный интерфейс для вызова функций (таких как передача и возврат параметров). Я могу написать функцию на языке ассемблера, которая считывает порт шины SPI и возвращает прочитанное значение. Пока мой язык ассемблера соответствует соглашениям о назначении Fortran, я могу связать его с моей программой Fortran и вызвать его из Fortran. –

ответ

1

Системные вызовы ОС всегда доступны.

Вопрос в том, имеет ли язык возможность совершать эти вызовы.

Я предлагаю вам исследовать каждый язык по отдельности, в том числе других языков вы не помеченные: FORTRAN, BASIC, Perl, LISP, Ruby, Scheme, Haskell, Ada и т.д.

Там нет никаких требований для языков иметь общие ядра.

+0

Спасибо. В «Нет требований для языков иметь общие ядра», что вы подразумеваете под «общим»? то же самое для нескольких ОС? – Tim

+0

Вы не можете предположить, что все языки компьютера имеют общий синтаксис и общие методы для доступа к системным функциям. Например, Java и C++ разделяют много общего. Однако C++ и LISP вообще не выглядят. –

Смежные вопросы