программирование ядра - PullRequest
       8

программирование ядра

2 голосов
/ 05 января 2011

Есть ли другой способ выполнить программу с использованием ядра, кроме оболочки и системных вызовов?

Ответы [ 4 ]

3 голосов
/ 05 января 2011

Раньше всегда было так, что на самом деле был только один способ выполнить программу в Unix и его производных, это был системный вызов exec().Самый первый (ядро) процесс был создан загрузчиком;все последующие процессы были созданы fork() и exec().Конечно, fork() создал только копию оригинальной программы;это был системный вызов exec() - в одной из нескольких форм в исходном коде C, но в конечном итоге эквивалентный execve() - который осел заменил текущий процесс новым образом.

В наши дни существуют механизмы, подобные posix_spawn(), которые могут или не могут использовать отдельный системный вызов для достижения примерно того же механизма.

1 голос
/ 05 января 2011

Многие ядра поддерживают добавление kernel modules или drivers во время выполнения. Если вы хотите выполнить некоторый код из пространства ядра (возможно, потому, что вам нужны более высокие привилегии), вы можете написать собственный модуль / драйвер ядра и загрузить его для выполнения своего кода. Однако, вставка только драйвера не гарантирует, что ваш код будет выполнен. Основываясь на реализации вашего драйвера, вам потребуется механизм запуска для выполнения вашего кода в пространстве ядра.

0 голосов
/ 07 марта 2017

Каждая программа выполняется внутри ядра.Если вы ищете работающий модуль ядра, вы должны использовать системные вызовы, чтобы добраться до этого модуля и выполнить некоторую работу за вас в режиме ядра.Ядро управляется событиями, и только системные вызовы запускают его модули (кроме некоторых системных событий, таких как полученный сетевой пакет)

0 голосов
/ 05 января 2011

Да, вы можете скомпилировать ваше ядро, используя вашу программу, но это будет не самая умная вещь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...