process - 关于进程控制块和执行命令的说明
问题描述
我大学的操作系统说明如下:
PCB 在进程通过 fork 诞生时创建,并在进程终止时回收。虽然诸如 exec 之类的系统调用重写了进程的内存映像,但 PCB(以及它所指向的实体,如内核堆栈)在 exec 或任何其他系统调用期间基本上保持不变,除了轻微的修改(如更改页表)指向新的内存图像)。
但是在 fork 系统调用期间,来自父进程的内存映像被擦除,并且为子进程初始化了一个新的内存映像。因此,位于内存映像的内核堆栈中的 PCB 也被擦除,因此我的理解是一个全新的 PCB 被重新写入该过程。
我理解错了什么概念?
解决方案
进程控制块位于 RAM 的内核空间中。内核空间也有分页表。当调用 exec 系统命令时,进程的内存映像被擦除并为该进程写入新的内存映像,而不影响该进程在内核空间中的进程控制块,但映射逻辑地址和虚拟地址的分页表由于内存映像已更改,因此进程的地址必须更改。因此,据我所知,PCB 没有被重写。
推荐阅读
- python - 未转换的数据仍然是python
- java - IntelliJ IDEA 不同版本兼容性
- python - 有没有办法改变python中的错误语言?
- appendchild - 将 DOM HTML 块移动到元素中
- recursion - 递归谓词的例子
- bash - 如何在具有相似模式的文件中的同一行中查找多个字符串?
- haskell - 在执行模式匹配之前将函数应用于参数
- javascript - 从下拉列表中提取一个值。并在链接中间返回
- javascript - 如何在线获取逗号分隔的 JSON 数据?
- swift - 如何在 Swift 中从 sockaddr_in 获取 sockaddr?