小编use*_*363的帖子

SMP调度如何在Linux内核中运行?(ARM架构)

在linux中,调度程序将在经过特定时间后触发.据我所知,定时器触发一个中断,进而触发一次调用schedule.

在SMP系统中,我在"理解Linux内核"一书中读到"每个处理器自己运行调度程序()函数".这是否意味着每个定时器中断都会触发每个cpu同时进行重新调度?

arm scheduler linux-kernel

5
推荐指数
1
解决办法
9411
查看次数

Linuxarm64如何在AArch32和AArch64之间切换

Linux支持运行32位应用程序,只要

  1. 内核启用CONFIG_COMPAT
  2. 硬件支持AArch32

我假设32位应用程序必须在arm AArch32执行状态下运行,并且如果环境有32位应用程序和64位应用程序。

32位应用程序进程->arm状态为AArch32

64位应用进程和内核->arm状态是AArch64

这是对的吗?

如果是这样,
Linux 如何处理 AArch32 和 AArch64 切换?
内核是否知道正在运行的进程是32位还是64位?

linux arm linux-kernel embedded-linux

3
推荐指数
1
解决办法
3379
查看次数

共享库如何被不同进程共享?

我阅读了一些使用 -fPIC 参数编译共享库的文档,.so 的 .text 序列将在进程 fork 的动态链接阶段共享(例如,进程会将 .so 映射到相同的物理地址)

我对谁(内核或 ld.so )以及如何实现这一点感兴趣?也许我应该跟踪代码,但我不知道从哪里开始。

尽管如此,我还是尝试验证该声明。
我决定检查 libc.so 中的 printf 之类的函数地址,以便所有 c 程序都将链接。我得到了进程的printf虚拟地址,需要得到物理地址。尝试编写内核模块并将地址值传递给内核,然后调用 virt_to_phys。但它不起作用,因为 virt_to_phys 仅适用于 kmalloc 地址。

因此,进程页表查找可能是查找虚拟地址到物理地址的解决方案。有没有办法做页表查看?或者其他方式可以适应验证实验?

提前致谢!

linux linux-kernel

2
推荐指数
1
解决办法
4002
查看次数

标签 统计

linux-kernel ×3

arm ×2

linux ×2

embedded-linux ×1

scheduler ×1