小编dir*_*bit的帖子

如何将不同进程的虚拟地址映射到不同的物理地址

我参加了一个关于操作系统设计和概念的课程,现在我正在努力学习Linux内核.我有一个我无法摆脱的问题.在现代操作系统中,每个进程都有自己的虚拟地址空间(VAS)(例如,在32位系统中为0到2 ^ 32-1).这提供了许多优点.但在实施中,我在某些方面感到困惑.让我通过举个例子来解释一下:

假设我们有两个过程p1,p2; p1和p2有自己的VAS.地址0x023f4a54映射到不同的物理地址(PA),它怎么可能?如何以这种方式完成此翻译.我的意思是我知道翻译机制,但我不明白,当它来到不同进程的地址空间时,相同的地址被映射到不同的物理地址.

0x023f4a54 in p1's VAS => PA 0x12321321
0x023f4a54 in p2's VAS => PA 0x23af2341 # (random addresses)
Run Code Online (Sandbox Code Playgroud)

kernel linux-kernel virtual-address-space

14
推荐指数
4
解决办法
6289
查看次数

Linux内核头文件的组织

当我在系统调用上做一些阅读时,我搜索了syscalls.h在LXR中查找头文件.搜索结果使我感到困惑.有十几个syscalls.h来自目录下的文件arch/_arch_name_/include/asm.这些都可以,它们是特定于体系结构的定义或其他需要的东西.现在的问题是,为什么我们有两个不同的syscalls.h下两个头include/linuxinclude/asm-generic

另外,我想知道include/linux标题是什么以及include/asm-generic标题是什么.他们如何区分彼此?有两个单独的头文件夹背后的逻辑是什么?它们如何相互关联?

谢谢

linux kernel linux-kernel

6
推荐指数
1
解决办法
1358
查看次数

如何识别哪个函数调用在try块中引发了特定异常?

假设一个try块中有三个连续的函数调用,并且它们都抛出相同类型的异常.我怎样才能弄清楚哪个函数调用在处理时抛出了捕获的异常?

java exception-handling exception

4
推荐指数
1
解决办法
423
查看次数