• 【Linux:进程概念】


    目录

    了解冯诺依曼思想:

    操作系统如何管理软硬件资源?

    进程与程序的区别 


    1.所有的数据采用二进制的存储

    2.数据存储在内存中

    CPU处理器只做俩种运算:逻辑&&算数运算 

    • 操作系统的组成?

    操作系统内核(本质上就是某种代码的统称)+应用,操作系统的本质也是软件

    • 操作系统如何管理软硬件资源?

    • 组织+描述

    描述:struct task struct {}

    组织:双向链表

    在此还需要知道的一个常识:CPU(中央处理器)的数量远小于进程数。进程是需要等待操作系统分配CPU资源运行。

    • 进程状态
    1. 运行态:进程已得到系统分配的cpu资源,正在执行计算
    2. 就绪态:进程基础准备完成,等待操作系统分配cpu
    3. 阻塞态:进程缺乏某种资源无法分配到cpu资源,导致进程不能被执行
    • 进程状态细分
    R进程正在执行
    S进程暂时处于休眠状态(可打断)
    D进程暂时处于休眠状态(不可被打断)
    T进程中断
    X死亡状态
    t跟踪状态,当进程被gbd调试时,就会产生该状态
    • 仔细说明死亡状态不能被肉眼查询的原因:

    死亡状态,ps,aux是查不到该进程信息的,该进程当要被释放时,释放的前一刻进程状态标记为死亡状态,ps,aux能查进程信息全凭进程的组织双向链表,遍历该链表由此查看进程

    • 进程与程序的区别 

    进程是由操作系统管理的,程序运行起来叫做进程

    程序的本质为一个文件,当程序跑起来时就叫做进程,这是一个动态的,由操作系统管理,操作系统分配cpu资源对进程进行一个管理

    每一个进程都有属于自己的“身份证号”pid,在当前操作系统中,每一个进程都有一个具有唯一性的pid号,进程的观察需要使进程运行起来,查看进程信息命令:Ps,aux查看当前进程的信息

    • Fork函数 

    fork函数的返回值三种类型

    <0fork函数创建失败
    ==0返回给子进程
    >0返回父进程

    父子进程跑不一样的代码就需要if分支来实现  fork的返回类型pid_t(本质是整形)

    • Getpid函数,谁调用就返回谁的PID
    • Getppid:谁调用就返回谁的父进程PID
    • 僵尸进程

    • 俩个kill命令:
    1. .Kill [pid]:

    • .Kill -9 [pid]: 强杀命令 

    Z表示僵尸状态

    •  僵尸进程产生的原因?

    父进程创建一个子进程,子进程先父进程退出,子进程在退出时向父进程发送信号(SIGCHLD),但父进程对该信号忽略处理,导致子进程在退出时,没有进程回收子进程的资源导致子进程变成了僵尸进程

    • 僵尸进程有什么危害?

    僵尸进程在内核中的task_struct结构体并没有被释放,导致内存泄露,并且强杀命令也不能干掉

    • 如何解决?
    1. 重启系统

    2. 进程等待

    3. 让僵尸进程成为孤儿进程(杀掉僵尸进程的父进程),继而僵尸进程就会被1号进程收养,最后1号进程会回收它的资源

    • 孤儿进程

    • 孤儿进程如何产生?

    父进程比子进程先退出,则子进程就是孤儿进程

    儿进程:父进程变成1号进程,当子进程的父进程先与子进程先退出时,子进程会被1号进程所收养,1号进程也叫init进程,操作系统启动的第一个进程叫做1号进程

    这样就可以解决僵尸进程,把僵尸进程的父进程干掉,僵尸进程就会被1号进程收养,回收它的资源

    孤儿进程被领养后就变成了一个后台进程

  • 相关阅读:
    Redis4.0源码编译和启动
    yaml文件格式说明及编写教程
    在VmWare中安装Centos7
    猿创征文 | 2023年必须掌握的DevOps工具推荐(一)
    基于51单片机的红外遥控器设计
    Android Studio Giraffe | 2022.3.1
    C语言进阶第三课-----------指针的进阶----------后续版
    18-spring 事务
    抖音seo源码矩阵系统--源码源头技术开发
    如何实现广义的元交易(Meta Transaction)
  • 原文地址:https://blog.csdn.net/2201_75755162/article/details/138800041