zoukankan      html  css  js  c++  java
  • 进程描述与创建

    进程控制块pcb——task_struct

    操作系统三大功能:

    • 进程管理(核心)
    • 内存管理
    • 文件系统

    为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解的进程信息:

    • 进程状态
    • 进程打开的文件
    • 进程优先级信息

    进程状态切换图

    需要注意的是进程的运行态和就绪态使用同种名称,区别仅在于是否确实占用内存

    运行新进程总是从ret_from_fork开始

    进程的创建

    fork创建进程:

    • fork系统调用在父进程和子进程各返回一次
    • 子进程中返回的是0,父进程中返回值是子进程的pid

    fork、vfork和clone三个系统调用都可以创建一个新进程,而且都是通过调用do_fork来实现进程的创建

    具体创建过程如下:

    • 复制当前进程作为子进程
      • 由do_fork实现
    • 复制父进程的pcb
    • 给子进程分配内核堆栈
    • 修改子进程的pid等相关信息

    实验:分析linux内核创建一个新进程的过程

    过程同上次类似,首先更新MenuOS

    gdb调试fork

    设置断点并调试

    linux如何创建一个新进程:Linux通过复制父进程来创建一个新进程,通过调用do_ fork来实现并为每个新创建的进程动态地分配一个task_ struct结构

  • 相关阅读:
    on、where、having的区别(转载)
    Javascript 中的非空判断 undefined,null, NaN的区别
    SRM 223 Div II Level Two: BlackAndRed,O(N)复杂度
    ibatis通过Map封装参数调用存储过程
    NoSQL架构实践
    js实现密码强度验证
    ubuntu 10.04安装qtcreator并汉化
    2017第19周一
    越挫越战,越战越勇
    2017第18周六
  • 原文地址:https://www.cnblogs.com/huyufeng/p/5348402.html
Copyright © 2011-2022 走看看