【问题标题】:Why u_area is removed in FreeBSD and NetBSD为什么在 FreeBSD 和 NetBSD 中删除 u_area
【发布时间】:2013-05-26 05:14:12
【问题描述】:

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

【问题讨论】:

    标签: task freebsd bsd proc netbsd


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      • 2010-10-03
      • 1970-01-01
      • 2015-10-26
      • 2017-03-03
      • 1970-01-01
      相关资源
      最近更新 更多