【发布时间】:2013-01-08 01:25:39
【问题描述】:
我已阅读这些相关问题的一般答案,
- understanding-the-linux-kernel-source
- How is the system call in Linux implemented?
- How does a syscall actually happen on linux?
但仍然留下了我自己的问题。例如,在int 0x80 上,内核为系统调用提供服务,但“服务”调用意味着什么?例如如果为getuid 进行服务调用
#define __NR_getuid (__NR_SYSCALL_BASE+ 24)
然后一旦出现int 0x80,内核就会为调用提供服务。那么内核究竟必须做什么来实现getuid呢?某处必须有一些代码在int 0x80 之后运行。假设已经下载了 Linux 内核源代码,您可以在哪里(例如,什么路径)找到 __NR_getuid 的源代码实现?
【问题讨论】:
-
你说你读过my answer,但你显然没有读到最后一段,它指向一本可以回答所有这些问题的书。我知道“读这本书”不是正确的 SE 答案,但实际上,在这种情况下它是正确的答案。您不会一次只回答一个问答答案来了解内核是如何工作的。
-
@WarrenYoung,感谢您关注我的问题。我想你已经投票结束了。您能否至少指出我可能会找到这个问题的答案的那本书的章节?我喜欢你的最后一句话。可能一次找到一章或一本书的答案吗?
-
我投票关闭它,因为它不是这里的主题。 Stack Overflow 是针对关于编程的具体问题。如果您问过如何将
getuid()更改为不同的行为,我怀疑我是否会投票关闭它,特别是如果您说出您已经尝试过的内容。在您找到更多了解相关代码的人的网站上,有关如何深入研究特定代码的问题会更好。在这种情况下,我建议unix.SE。但是直到主持人费心提出这个问题(假设有人这样做),我已经将我的评论扩展到下面的答案。
标签: linux linux-kernel operating-system