2011-01-05 79 views
2

除shell和系统调用之外,还有其他方式可以使用内核来执行程序吗?内核编程

+2

这是非常模糊的......“使用内核”意味着*从内核模式*?或通过*从用户模式调用内核例程*?是关于Windows,Linux还是Mac?更加详细一些。 – Mehrdad 2011-01-05 07:08:31

回答

3

它总是以前只有一种方式来执行Unix及其派生程序上的程序,并且这是通过exec()系统调用。第一个(内核)进程是由引导加载程序创建的;所有后续流程均由fork()exec()创建。当然,fork()只创建了原始程序的副本;它是exec()系统调用 - 以C源代码中的多种形式之一,但最终相当于execve() - 这是做了用新图像替换当前进程的驴工作。

这些天,有像posix_spawn()这样的机制可能会或可能不会使用单独的系统调用来实现大致相同的机制。

0

是的,你可以用你的程序编译你的内核,但它不会是最聪明的事情。

1

很多内核支持在运行时添加kernel modulesdrivers。如果你想从内核空间执行一些代码(可能是因为你需要更高的权限),你可以编写你自己的内核模块/驱动程序并加载它来执行你的代码。但是,仅插入驱动程序并不能确保您的代码将被执行。根据您的驱动程序实现,您必须具有一些在内核空间中执行代码的触发机制。

0

每个程序都由内核在内部执行。如果您正在寻找正在运行的内核模块,则必须使用系统调用来访问该模块,并在内核模式下为您执行一些工作。内核是事件驱动的,只有系统调用触发其模块的执行(除了一些系统事件,如网络数据包收到)