内核作为动态链接器范例?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内核作为动态链接器范例?相关的知识,希望对你有一定的参考价值。

我试图找出这个概念是否有名称,如果已经做了类似的事情:

您是否知道任何操作系统(或任何内核设计范例),其中user-land程序不使用通常的trap / interrupt / cpu-instruction技术发出系统调用,而是只要可执行文件是内核,内核就会充当运行时动态链接器。运行,以便内核加载可执行文件,找到未解析的系统调用,将它们附加到内核中正确的系统调用挂钩,然后运行可执行文件?

可以把它想象成可执行文件是存储在ROM芯片中的程序:系统加载ROM,插入所有未解析的钩子,然后启动该过程。我不是在考虑ROM程序,但我认为它澄清了这个想法。

编辑:我不是说应用程序在内核空间中运行。内核中的函数将在输入时切换到内核空间,并在返回应用程序时切换回用户空间。我的意思是关于“调用内核”的所有魔法都发生在内核中,因为内核和动态加载器是相同的。用户土地库只是觉得没有内核(用户土地库没有任何“调用内核”的方法,但是用户土地库中的某些功能的实现却缺失了,因为内核将在加载应用程序时将它们挂钩到内核代码。

答案

对于编写在内核空间中运行的模块,它的工作方式大致相同。像设备驱动程序可以直接调用另一个模块

对于用户空间应用程序来运行内核函数 - 它是不允许的,并且主要用于保护。在像DOS这样的早期操作系统中没有任何保护,实际上可以从任何应用程序调用任何代码。 Bios功能实际上存储在EEPROM芯片和应用程序中,知道映射的地址,可以调用它们。虽然不是很好。

我从事内核模式模块已有10年了。事情本来可以改变。

以上是关于内核作为动态链接器范例?的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用 Firebase 动态链接作为 URL 缩短器吗?

作为由相对路径加载的绝对路径传递给链接器的动态库?

在与 Rust 中的本机库链接时将符号公开给动态链接器

Linux内核分析07

linux ldconfig命令的作用(Linker Configuration 链接器配置)更新动态链接库(共享库)的链接器程序缓存

AngularJS - 无法在链接函数中动态更改指令模板