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区的主要内容,如果未能解决你的问题,请参考以下文章