0

我听说 BSD 的 proc 结构中有一个名为 u_area 的成员。
所以我试图找到u_area,但只是失败了。
谁知道为什么在proc结构上删除了u_area?

4

1 回答 1

1

用户区(uarea)包含内核堆栈和进程的一些私有结构,通常其他进程不会访问这些结构,并且在该进程阻塞(睡眠)时也不需要这些结构。这些结构占据了整个页面(4KB 甚至更多,具体取决于系统)。过去计算机的内存很小,因此将这些结构组合在一起并使这些页面可交换到磁盘中是有意义的。

但是,现在可以访问许多这些结构,并且每次发生这种情况时,必须将 uarea 显式“锁定”在内存中。由于如今计算机拥有更多的 RAM,并且由于潜在的错误,不再值得保留此功能。

今天,uarea 只是一个内核堆栈和进程控制块 (PCB)。NetBSD 删除了 uarea 交换支持,FreeBSD 可能也这样做了。

于 2013-05-25T21:14:12.817 回答