UNIX为啥要把PCB分为进程表项proc区和U区

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UNIX为啥要把PCB分为进程表项proc区和U区相关的知识,希望对你有一定的参考价值。

UNIX中将那些只在进程运行时才用到的控制信息存储在U区(user结构),从而使这部分信息不必常驻内存,节省内存空间的占用。

UNIX系统把进程控制块分
成两部分。一部分为进程的基本控制块,简称proc 结构,它存放着进程最常用的一些信息,所以proc
结构一般常驻内存。另一部分称为进程扩充控制块,简称user 结构,它存放着进程的一些必要但不常使用的信息。

PCB(process control block),进程控制块,在 UNIX 系统Ⅴ中, 把进程控制块分为四部分:

   进程表项

      进程标识符(PID)

      用户标识符(UID)

      进程状态

      事件描述符

      进程和U区在内存或外存的地址

      软中断信息

      计时域

      进程的大小

      偏置值nice

      P-Link指针

      指向U区进程正文、数据及栈在内存区域的指针

    U 区  
      进程表项指针
      真正用户标识符u-ruid(real user ID)
      有效用户标识符u-euid(effective user ID)
      用户文件描述符表
      当前目录和当前根
      计时器
      内部I/O参数
      限制字段
      差错字段
      返回值
      信号处理数组

 进程区表      区的类型和大小
      区的状态
      区在物理存储器中的位置
      引用计数
      指向文件索引结点的指针
参考技术A 为了节省内存,UNIX系统把进程控制块分
成两部分。一部分为进程的基本控制块,简称proc 结构,它存放着进程最常用的一些信息,所以proc
结构一般常驻内存。另一部分称为进程扩充控制块,简称user 结构,它存放着进程的一些必要但不常使用的信息。本回答被提问者和网友采纳

/proc/vmcore 的内容是啥

【中文标题】/proc/vmcore 的内容是啥【英文标题】:What are the Contents of /proc/vmcore/proc/vmcore 的内容是什么 【发布时间】:2016-01-06 05:48:31 【问题描述】:

当内核崩溃时,它会生成 /proc/vmcore 文件。稍后我们可以使用 makedumpfile 实用程序使用这个 vmcore 文件生成 coredump。

这个 vmcore 文件的内容是什么?

是否包含堆栈区、堆区、代码区和常量等内核内存区域?

它是否还包含特定于流程的信息?进程内存区域等,?

请分享一些信息/链接以了解 vmcore 的包含内容以及如何优化或减少 Kernel Core Dump Size。

【问题讨论】:

/proc/vmcore 未记录在 proc(5) 【参考方案1】:

先生。安德森提供了以下信息。我代表他发帖

当内核崩溃时,它会生成 /proc/vmcore 文件。后来我们 可以使用 makedumpfile 实用程序来生成 coredump vmcore 文件。

这个 vmcore 文件的内容是什么?

它是否包含内核内存区域,如堆栈区、堆区、代码 面积和常数?

/proc/vmcore 是一个 ELF 格式的核心文件,它包含所有的物理内存 被崩溃的内核利用。

它是否还包含特定于流程的信息?进程内存区域 ,等等,?

它包含包含进程信息的 NT_PRSTATUS ELF 注释 当系统崩溃时,它正在每个 cpu 上积极运行。它还包含 特定于 kdump 的 VMCOREINFO 注释,其中包含信息 关于 makedumpfile 和 crash 实用程序使用的崩溃内核。

请分享一些信息/链接以了解 vmcore 的包含 以及如何优化或减少内核转储大小。

这就是 makedumpfile(8) 的全部目的。而不是必须利用 一个巨大的转储文件,它是崩溃内核内存的大小,它允许 您同时 (1) 压缩 /proc/vmcore 内容,以及 (2) 过滤掉 崩溃分析通常不需要的页面,例如,用户空间 页面、空闲页面、零填充页面和页面缓存页面。

戴夫

【讨论】:

以上是关于UNIX为啥要把PCB分为进程表项proc区和U区的主要内容,如果未能解决你的问题,请参考以下文章

/proc/vmcore 的内容是啥

临界区和临界资源的关系

操作系统第四章【2】内存空间管理---连续

top命令

macOS 终端命令格式 U 盘找回隐藏空间

go的内存管理