除shell和系统调用之外,还有其他方式可以使用内核来执行程序吗?内核编程
Q
内核编程
2
A
回答
3
它总是以前只有一种方式来执行Unix及其派生程序上的程序,并且这是通过exec()
系统调用。第一个(内核)进程是由引导加载程序创建的;所有后续流程均由fork()
和exec()
创建。当然,fork()
只创建了原始程序的副本;它是exec()
系统调用 - 以C源代码中的多种形式之一,但最终相当于execve()
- 这是做了用新图像替换当前进程的驴工作。
这些天,有像posix_spawn()
这样的机制可能会或可能不会使用单独的系统调用来实现大致相同的机制。
0
是的,你可以用你的程序编译你的内核,但它不会是最聪明的事情。
1
很多内核支持在运行时添加kernel modules
或drivers
。如果你想从内核空间执行一些代码(可能是因为你需要更高的权限),你可以编写你自己的内核模块/驱动程序并加载它来执行你的代码。但是,仅插入驱动程序并不能确保您的代码将被执行。根据您的驱动程序实现,您必须具有一些在内核空间中执行代码的触发机制。
0
每个程序都由内核在内部执行。如果您正在寻找正在运行的内核模块,则必须使用系统调用来访问该模块,并在内核模式下为您执行一些工作。内核是事件驱动的,只有系统调用触发其模块的执行(除了一些系统事件,如网络数据包收到)
相关问题
- 1. NT内核编程
- 2. Linux内核编程
- 3. Linux内核模块编程
- 4. Android内核模块编程
- 5. Linux内核编程:“无法处理内核NULL指针引用”
- 6. Mac内核编程通用内核扩展prinf()不起作用
- 7. 编译android内核
- 8. 从哪里开始linux内核编程?
- 9. Visual Studio 2010和内核级编程!
- 10. 编程cuda内核时整数大小
- 11. 程序如何通信 - 微内核单片内核exo内核
- 12. 编译单内核文件
- 13. 为mips编译android内核
- 14. OpenCL内核无法编译
- 15. !编译内核模块
- 16. Linux内核模块编译
- 17. Android金鱼内核汇编
- 18. Linux内核模块编译
- 19. 内核编译错误
- 20. 编译XNU内核2050
- 21. Linux内核版本编号
- 22. 线程和内核
- 23. 线程vs内核
- 24. 如何开始学习linux内核编程,编码或阅读?
- 25. Linux内核模块编程编译错误
- 26. 与NASM汇编编写OS内核
- 27. 内核级内存处理编码
- 28. 编译我自己的内核(而不是从Linux内核源)
- 29. 编写多个内核或单个内核
- 30. 使用gcc与内核头文件编译Linux内核模块
这是非常模糊的......“使用内核”意味着*从内核模式*?或通过*从用户模式调用内核例程*?是关于Windows,Linux还是Mac?更加详细一些。 – Mehrdad 2011-01-05 07:08:31