- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近在学习内核,发现一个问题,谁控制进程控制 block (PCB
)?
内核还是进程本身?它在不同的平台上是否不同( windows
/Linux
)?
到目前为止,我知道PCB
由硬件控制,但我无法得到正确的答案。
最佳答案
该进程完全是由操作系统内核专门创建和维护的软件抽象。进程控制 block 是表示操作系统中进程的数据结构。操作系统跟踪有关 PCB 中系统中运行的每个进程的所有必要信息。例如,在这个特定进程中运行哪些线程,它使用什么内存,哪个用户启动了这个进程,它拥有哪些特权。因此,每个操作系统都根据操作系统认为是一个进程来定义其私有(private)的 PCB 格式。
一些操作系统实现进程(Windows/Linux),而另一些则不这样做(MS-DOS)。甚至有维护线程但不维护进程的操作系统。不同的操作系统定义了不同的PCB格式。例如,Linux 实现了文件表作为进程抽象的一部分,但几乎所有微内核操作系统都不认为文件表是进程的一部分。传统 UNIX 系统不支持线程概念,因此没有跟踪进程中运行的线程。同时,现代 Linux 实现了线程并跟踪 PCB 中的所有相关数据。所有操作系统共享的进程抽象的唯一永久部分是私有(private)虚拟地址空间。
再一次,PCB 完全是软件抽象,而不是硬件抽象!我还没有看到处理器实现或直接支持流程。然而,在操作系统层面实现进程抽象通常需要一些硬件支持。例如,支持虚拟内存和不同级别的权限。
关于process - 谁控制过程控制 block (PCB)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28795024/
最近在学习内核,发现一个问题,谁控制进程控制 block (PCB)? 内核还是进程本身?它在不同的平台上是否不同( windows/Linux )? 到目前为止,我知道PCB由硬件控制,但我无法得到
我正在开发 Mega 2560 开发板。我计划使用裸 ATmega2560 微 Controller (与 Arduino 上的相同)将我的项目移动到自定义 PCB。根据我的研究,我的问题没有明确的答
我试图在加载时生成一个增量值,用于“序列化”具有唯一代码值的 PCB。不是 ld 或预处理器命令方面的专家,因此寻求帮助。 该值将用于加载代码的每个板的唯一 ID,也将用作现场板的计数器。 对于如何完
在这里,我尝试使用摄像头实时检测 PCB 上的基准点,同时我正在使用 C#.net 4 win-form 应用程序。 在谷歌搜索了两天并阅读了许多帖子和博客之后。我发现我必须做一些叫做translat
我是操作系统概念的新手。我读到 PCB 包含有关寄存器的信息。这是否意味着“它包含特定时间的所有寄存器内容”或“仅包含属于特定进程的寄存器”?如果是第二种情况,请告诉我操作系统如何跟踪哪些寄存器属于哪
我是操作系统概念的新手。我读到 PCB 包含有关寄存器的信息。这是否意味着“它包含特定时间的所有寄存器内容”或“仅包含属于特定进程的寄存器”?如果是第二种情况,请告诉我操作系统如何跟踪哪些寄存器属于哪
我正在使用 NXP lpc1769 演示板开发一个小项目。我正在使用 CodeRed 的 LPCExpresso 5 对其进行编程,我想知道是否可以将应用程序 hex/bin 文件从开发板传输回 PC
我在 Linux 中工作,我有点困惑我是否可以访问进程的 PCB?如果是,那么我们可以访问它的哪些内容并将它们打印到终端上,如果不是,那为什么不呢? 感谢您的回答...... 最佳答案 如果说 PCB
我目前正在阅读 Remzi 和 Andrea 的《操作系统——三篇简单的文章》,在关于上下文切换的部分,它指出在中断期间,正在运行的进程的寄存器被保存到它的内核堆栈中,然后下一个进程的寄存器是从它的
我想写一个小 Linux 内核模块,它可以显示所有正在运行的进程的 PID。 我有以下代码: /* * procInfo.c My Kernel Module for process info
我有一个基本的固件问题。我正在寻找对 nRF51822 IC 进行编程并将其集成到我自己的 PCB 上。评估套件似乎已经焊接了 IC。这是我只能对 nRF51822 进行编程并准备好在其他地方使用的方
我正在尝试将硬件组件添加到包含对象数组的 PCB,但我无法将对象传递到数组。这是我的第一个 Java 项目,所以这里完全是新手。请帮忙! public class PCB { private
我正在用 C++ 编写线程处理代码。 Thread 的一个实例有一个指向 PCB 结构的指针,在 Thread 的构造函数中我只是调用 myPCB = new PCB(name, stackSize,
我们正在开发一种包含嵌入式 Linux 系统的产品。存储将是一个 eMMC 设备。我想尽可能地利用 eMMC 设备的一些功能,例如引导分区、可能的 RPMB 分区和多个用户分区。 但是,我们的开发板要
如果我们谈论进程的地址空间,它就是虚拟地址范围,其中包括该特定进程的静态数据、堆栈和堆内存。然后来到进程控制 block (PCB),它是由操作系统为其管理的每个进程维护的数据结构,其中 PCB 包含
据我了解,操作系统中的每个进程都包含自己独立的进程控制块。我的一个 friend 试图澄清这一点,并说实际上只有一个进程控制块包含每个进程的信息。 谁可以给我解释一下这个。每个流程都有自己的 PCB
我需要了解存储在 Windows 进程控制 block (PCB) 和 Linux PCB 中的数据。我在网上搜索,但不幸的是我找不到我要找的东西。大多数链接都没有具体说明结构内部到底是什么,它们只提
我们可以在 C++/VC++ 中访问 ODB++ 文件吗? PCB - 打印电路板制造数据库 有没有人做过这个??互联网上有任何可用于访问/阅读此 ODB++ 的库文件吗? 最佳答案 有一个用于 VC
为什么在上下文切换期间 TLB(Translation Look Side buffer)存储在 PCB 中?为进程保存页表还不够吗? 最佳答案 翻译后备缓冲区不存储在进程上下文 block 中。在某
我是linux内核开发新手。现在我正在尝试编译我自己的内核。 我的问题是我想像那样将一个新变量插入到 struct sched_entity 中 struct sched_entity { struc
我是一名优秀的程序员,十分优秀!