reference - 进程如何引用不在其地址空间中的对象(例如文件或另一个进程)?

标签 reference process kernel

我有作业问题:

Explain how a process can refer to objects that are not in its 
address space (for example, a file or another process)?

我知道每个进程都是使用一个地址空间创建的,该地址空间定义了对该进程中每个内存映射资源的访问(got that from this book) 。我认为这个问题的第二部分没有意义。一个进程如何引用另一个进程的对象?操作系统不应该限制这一点吗?也许我没有正确理解这个问题。无论如何,如果我正确理解了这个问题,唯一可能的方法就是使用我相信的内核。

最佳答案

如果你问的是一般意义上的问题,那么答案是否定的。通常情况下,操作系统不允许一个进程访问另一进程的虚拟地址空间。 但是,您可以通过多种方式创建受控环境,在该环境中可以使用各种技术来完成此类操作。

调试器就是一个完美的例子。它使用进程跟踪机制(例如从/proc 文件系统读取或使用 ptrace() 系统调用)来获取从另一个地址空间进行读写的访问权限。

还有一个共享内存概念,其中特定的内存块在两个进程之间显式共享,并且可以通过共享内存对象进行控制。

关于reference - 进程如何引用不在其地址空间中的对象(例如文件或另一个进程)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9537272/

相关文章:

linux - 如何在Linux中说明使用较小的进程nice值?

c# - 如何判断我的进程是否以管理员身份运行?

c - argv[0] 更改由 linux 内核阻止或记录

linux - nf_ct_get(skb,&ctinfo) 函数获取 IPv6 udp 数据包的 netfiter conntrack 'struct conn'

c++ - 错误 : undefined reference to 'player()'

javascript - 哪种方法使用 React ref 是正确的?

Perl:分配 [] 或 {} 是否昂贵?如何快速重置数字/关联数组?

C++ 引用正在构造的对象

c - 在进程(不是线程)中使用 semaphore.h

linux - 将参数从 alsa 应用程序传递到内核驱动程序