在linux中,调度程序将在经过特定时间后触发.据我所知,定时器触发一个中断,进而触发一次调用schedule
.
在SMP系统中,我在"理解Linux内核"一书中读到"每个处理器自己运行调度程序()函数".这是否意味着每个定时器中断都会触发每个cpu同时进行重新调度?
Linux支持运行32位应用程序,只要
CONFIG_COMPAT
我假设32位应用程序必须在arm AArch32执行状态下运行,并且如果环境有32位应用程序和64位应用程序。
32位应用程序进程->arm状态为AArch32
64位应用进程和内核->arm状态是AArch64
这是对的吗?
如果是这样,
Linux 如何处理 AArch32 和 AArch64 切换?
内核是否知道正在运行的进程是32位还是64位?
我阅读了一些使用 -fPIC 参数编译共享库的文档,.so 的 .text 序列将在进程 fork 的动态链接阶段共享(例如,进程会将 .so 映射到相同的物理地址)
我对谁(内核或 ld.so )以及如何实现这一点感兴趣?也许我应该跟踪代码,但我不知道从哪里开始。
尽管如此,我还是尝试验证该声明。
我决定检查 libc.so 中的 printf 之类的函数地址,以便所有 c 程序都将链接。我得到了进程的printf虚拟地址,需要得到物理地址。尝试编写内核模块并将地址值传递给内核,然后调用 virt_to_phys。但它不起作用,因为 virt_to_phys 仅适用于 kmalloc 地址。
因此,进程页表查找可能是查找虚拟地址到物理地址的解决方案。有没有办法做页表查看?或者其他方式可以适应验证实验?
提前致谢!