• 对linux中进程创建的一点理解(2)


    一个进程由以下元素组成
    (1)进程的上下文
    (2)程序当前的执行目录
    (3)程序服务的文件和目录
    (4)程序的访问权限
    (5)内存和其他分配给进程的系统资源

    进程中最重要的属性就是进程号(PID)和父进程号(PPID)。
    为用户创建进程的方法是使用系统调用fork(),内核为完成系统调用进行如下操作:
    (1)为新进程在进程表中分配一个表项
    (2)给子进程一个唯一的进程标记号(PID)
    (3)复制一个父进程的进程表项的副本给子进程。于是子进程拥有与父进程一样的uid,euid,gid,用于计算优先权的nice的值、当前目录,当前根、用户文件描述表
    等。
    (4)把与父进程相连的文件表和索引节点表的引用数加1。这些文件自动和该子进程相连。
    (5)内核为子进程创建用户级上下文。内核为子进程的u区及辅助页表分配内存,并复制父进程的区内容。生成了进程的静态部分。
    (6)生成进程的动态部分,内核复制父进程的上下文的第一层即寄存器上下文和内核栈。该调用会对父进程返回子进程的PID,对子进程返回0。

    通过fork调用生成的子进程从父进程继承到:
    进程的资格,环境,堆栈,内存,打开文件的描述符,执行时关闭,信号控制设定,nice值,进程调度类别,进程组号,对话期id,当前的工作目录,根目录,文件掩码(umask),资源限制,控制终端。
    子进程独有的资源包括:
    进程号,不同的父进程号,文件描述符,目录流的拷贝。
     
  • 相关阅读:
    cmanformat
    mysql-sql语言参考
    jQuery 判断多个 input checkbox 中至少有一个勾选
    Java实现 蓝桥杯 算法提高 计算行列式
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 算法提高 成绩排序2
    Java实现 蓝桥杯 算法提高 成绩排序2
    Java实现 蓝桥杯 算法提高 成绩排序2
  • 原文地址:https://www.cnblogs.com/zelos/p/3402920.html
Copyright © 2020-2023  润新知