52得票5回答
Linux内核如何管理少于1GB的物理内存?

我正在学习Linux内核的内部原理,在阅读《了解Linux内核》时,遇到了几个与内存相关的问题。其中之一是:如果我的系统只安装了512 MB的物理内存,Linux内核如何处理内存映射? 根据我的阅读,内核将0(或16)MB-896MB的物理RAM映射到0xC0000000线性地址并直接进行寻...

16得票2回答
内核如何知道当前线程是什么?

有人能解释一下这段代码吗?它来自于这里,是从Linux内核中获取的。/* * how to get the thread information struct from C */ static inline struct thread_info *current_thread_info...

12得票2回答
声明抽象类(纯虚方法)会大幅增加二进制文件的大小

这是故事背景: 我正在Linux中使用AC6 Toolpack为ARM Cortex-M0处理器开发C++软件。之前我使用Keil(在windows上)(他们有自己的工具链),现在我已经迁移到GNU-toolchain(GNU工具套件 for ARM嵌入式处理器5.2.1)。第一件事我意识到的...

9得票2回答
ARM拇指模式4字节指令

拇指模式指令占用2个字节,而ARM模式指令占用4个字节。 截图显示的是拇指模式指令的反汇编结果。 为什么我会看到4个字节的指令和2个字节的指令混合在一起? 有人能解释一下吗? 提前感谢您的帮助。

10得票1回答
'BL' ARM指令的反汇编是如何工作的?

'bl'或跳转链接指令几乎总是变成0xebfffffe 然而,处理器和GNU binutils objdump不知何故知道在哪里跳转: 00000000 <init_module>: 0: e1a0c00d mov ip, sp 4: ...

14得票1回答
Docker错误 standard_init_linux.go:185: exec用户进程导致“exec格式错误”(使用 Qnap TS131P)

我的 Docker 文件在 song/songkong,位于 https://hub.docker.com/r/songkong/songkong/~/dockerfile/ FROM openjdk:8-jre-alpine RUN apk --no-cache add \ ...

19得票5回答
在Linux中如何清空特定内存区域的CPU缓存?

我对清除缓存(L1、L2 和 L3)只针对地址空间的某个区域感兴趣,例如从地址 A 到地址 B 的所有缓存条目。在 Linux 中,是否有一种机制可以从用户或内核空间进行此操作?

14得票1回答
ARM: 写入/读取整数是否是原子操作?

在 ARM 架构上,不幸的是我不知道具体是哪个芯片,它是否支持 32 位整数的原子读写? 对于基本类型的读/写操作,有没有任何保证?

8得票1回答
生成常量数据的%pc相对地址

有没有办法让gcc生成常量的%pc相对地址?即使字符串出现在文本段中,arm-elf-gcc也会生成一个指向数据的常量指针,通过%pc相对地址加载指针的地址,然后解引用它。由于各种原因,我需要跳过中间步骤。例如,这个简单的函数: const char * filename(void) { ...

7得票3回答
如何在OSX 10.6(“Snow Leopard”)下模拟ARM架构?

我希望模拟ARM架构(更准确地说,我想为我的DNS-323网络存储设备编译软件),但我遇到了困难。 首先我尝试安装Q,它是QEMU的OSX版本。但是在启动时,它会冻结。 然后我尝试下载QEMU的源代码,并应用某人编写的修补程序来在Leopard上编译QEMU,但也没有成功。 有没有人有什么...