进程控制块PCB

进程控制块PCB我们知道 每个进程在内核中都有一个进程控制块 PCB 来维护进程相关的信息 Linux 内核的进程控制块是 task struct 结构体 usr src linux headers 3 16 0 30 include linux sched h 文件中可以查看 structtask struct 结构体定义 其内部成员有很多 我们重点掌握以下部分即可 进程 id 系统中每个进程有唯一的 id 在 C 语

  • 进程id。系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非负整数。
  • 进程的状态,有就绪、运行、挂起、停止等状态。
  • 进程切换时需要保存和恢复的一些CPU寄存器。
  • 描述虚拟地址空间的信息。
  • 描述控制终端的信息。
  • 当前工作目录(Current Working Directory)。
  • umask掩码。
  • 文件描述符表,包含很多指向file结构体的指针。
  • 和信号相关的信息。
  • 用户id和组id。
  • 会话(Session)和进程组。
  • 进程可以使用的资源上限(Resource Limit)。

循环创建n个子进程

#include 
  
    #include 
   
     #include 
    
      int main(void) { int i; pid_t pid; printf("xxxxxxxxxxx\n"); for (i = 0; i < 5; i++) { pid = fork(); if (pid == 0) { break; } } if (i < 5) { sleep(i); printf("I'am %d child , pid = %u\n", i+1, getpid()); } else { sleep(i); printf("I'm parent\n"); } return 0; } 
     
    
  

子进程复制了父进程0-3G用户空间内容,以及父进程的PCB,但pid不同。真的每fork一个子进程都要将父进程的0-3G地址空间完全拷贝一份,然后在映射至物理内存吗?

重点注意!躲避父子进程共享全局变量的知识误区! 每个有子集单独的date区
【重点】:父子进程共享:1. 文件描述符(打开文件的结构体) 2. mmap建立的映射区 (进程间通信详解)
fork之后父进程先执行还是子进程先执行不确定。取决于内核所使用的调度算法




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/209316.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午9:32
下一篇 2026年3月19日 上午9:32


相关推荐

  • android 小米申请root权限,小米root权限获取教程

    android 小米申请root权限,小米root权限获取教程小米手机怎么获取 root 权限 小米是我们国内一款非常著名的智能手机品牌 小米手机是我们非常喜欢的一款手机 许多用户都对小米手机非常有兴趣 尤其是如何获取小米手机的 ROOT 权限 想要成功获取小米手机的 ROOT 权限 那么我们就需要使用 ROOT 软件 我们知道网上有许多的 ROOT 软件 但是许多都不不安全的 甚至带有病毒的 所有小编就给大家推荐一款即安全 还且功能又强大的 ROOT 软件 这款软件就是强力一键 R

    2026年3月26日
    1
  • Origin绘图快速上手指南「建议收藏」

    Origin绘图快速上手指南「建议收藏」1、创建工程打开origin后,点击菜单栏“文件”,选择“项目另存为”,给项目命名,并存到某个工作路径。2、导入数据然后将excel中的数据(只要数据)选中后复制到Book1中,从第5行开始粘贴。可以在侧面打开“项目管理器”,给表格“Book1”重命名为“曲线数据”。还可以在表格的“长单位”处给每列数据加上标签。3、那么这时可以直接使用Origin的自动绘图功能了。选择A、B、C所有列,然后点击菜单栏的“绘图”,选择一个折线图,双击即可绘图。这样呢就是将两条曲线放到同一张图中了。如果想要自定

    2022年5月31日
    60
  • 卷积神经网络模型之——AlexNet网络结构与代码实现

    卷积神经网络模型之——AlexNet网络结构与代码实现AlexNet 原文地址 https proceedings neurips cc paper 2012 file cd3b9d6b76c8 Paper pdfAlexNet 诞生于 2012 年 由 2012 年 ImageNet 竞赛冠军获得者 Hinton 和他的学生 AlexKrizhevs 设计的 AlexNet 的贡献点 首次使用 GPU 加速网络训练使用 ReLU 激活函数 代替不是传统的 Sigmoid 和 Tanh 解决了 Sigmoid 的梯度消失问题 使收敛更快 训练时使用

    2026年3月4日
    2
  • idea在线激活码(注册激活)「建议收藏」

    (idea在线激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月26日
    428
  • Mybase到期 激活成功教程

    Mybase到期 激活成功教程1 找到 mybase 安装目录 C Users Zsh AppData Local wjjsoft nyfedit62 打开 nyfedit ini3 nbsp 内容中查找 nbsp App UserLic FirstUseOn 删除 4 保存打开 mybase 即可 nbsp

    2026年3月17日
    2
  • nohup linux命令,Linux nohup命令

    nohup linux命令,Linux nohup命令nohup 命令用于执行另一个程序或者命令并将其参数指定为忽略所有 SIGHUP 中断 信号 SIGHUP 是当前控制终端关闭时发送到进程的信号通常 当您通过 SSH 运行命令时 如果连接断开 或者退出 SSH SSH 会话将终止 并且终端执行的所有命令都将停止 如果你不想被某一程序被终止 可以使用 nohup 命令 它将忽略所有中断信号 命令程序将继续运行 如何使用 nohup 命令该 nohup 命令的语法如下 noh

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号