• 进程描述与创建


    进程控制块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结构

  • 相关阅读:
    vue $refs的静态绑定使用与动态绑定使用
    net core中Vue.component单独一个文件不运行,不报错的处理
    C语言之指针基础
    C语言之指针函数
    指针强化
    C语言之指针数组
    C语言之数组
    C语言之数据类型
    C语言之内存管理
    C语言之流程控制
  • 原文地址:https://www.cnblogs.com/huyufeng/p/5348402.html
Copyright © 2020-2023  润新知