• Linux操作系统--初级--进程管理


    1、操作系统基础

      调用:kernel通过给应用程序提供system call的方式来提供硬件资源;

        注意:这个应用程序也包括库文件;

        库文件是运行在ring0上的一段程序代码,不对客户端直接开放

    2、进程运行原理(一个进程和多个进程)

      一个进程:首先我们需要把硬盘中的程序代码加载到内存,再将这段代码放到CPU上运算,此时,这段程序就回去调用很多进程;由这些进程来完成程序所指定的任务

      在这个过程中我们就需要去解决数据输入与输出,还有存储的问题

      (不讨论多核、CPU多线程的情况)

      多个进程:在电脑中一般都是存在多个进程的,而CPU却只有一个,我们就使用time space的方式来给进程分配固定的时间,运行这些进程;某个进程只能在轮到自己运行的时候,才会被放到CPU上执行,时间一到,就会自动被踢下来,然后CPU就会执行下一个进程,这就会有诸多问题;

      问题:

        1、进程谁先谁后的问题?

          根据进程优先级

        2、进程没有运行完就被踢下来了怎么办?

          1、程序数据怎么办(运行到一半留下来的数据)

            会有一个小的寄存器

          2、输入数据输出数据

          3、进程元数据

          task struct数据结构体:它定义了进程数据的存储格式;我们将进程数据以及进程原数据存储与task struct中;这种结构下,方便CPU快速存储于读取;

          线性地址空间--物理地址空间

          进程在运行后的一些数据,通过线性地址对应的物理地址,存储到内存;MMU(内存管理单元)就是用来将不连续的物理地址转换为连续的线性地址;

            这些分开的页框的数据有两种组织形式:1、链表型的数据组织形式

                              2、双向型

        3、如果进程造反了怎么办?

          Linux结构下进程也是树形结构 -- pstree

          内核不会去直接管理进程,一般所有的进程都由上一级进程来管理--父子进程概念

          最大的进程init,有权限去管理所有进程

        4、如果进程正常结束了?

          1、如何生成子进程

            写实复制

            父进程在完成一项工作的时候,自己无法完成,则需要生成对应的子进程来完成这项工作,并把自己的内存空间中的数据复制一份交给子进程,用来存储子进程所运行的数据,这个过程就是写实复制

          2、子进程完成任务以后,如何关闭

            子进程任务完成后,交出所有的占用资源;再用父进程关闭子进程,这个周期就结束了

    3、进程优先级

      0-139

        0-99(用作守护进程、越大越优先) 100-139(普通进程越小越优先)

        特性:普通用户可以转让自己的优先级

      nice值

        定义普通进程的优先级   -19 - 20对应100-139

      轮了一圈以后怎么办

        在我们的内存上会提供一个空间;这个空间会专门用来存放运行过后的进程

        当所有的进程运行完成一边以后,这个空间就会和原有空间对调;然后再提供给CPU读取;

        一直轮换,直到进程运行完成

      

    4、进程间的通讯原理

      1、主机内进程通讯

        single 信号通讯

        共享内存

        管道形式

      2、主机间的进程通讯

        streams -- rpc

        socket

    5、进程类型

      守护进程 -- 维护系统正常运行

      普通进程 -- 提供应用

      另一种分类方式:根据占用资源不同

        1、占用CPU多进程 -- 后台运行进程

        2、占用内存多进程 -- 前台显示进程 -- 这个先运行

    6、进程的状态

      进程和程序比较起来,进程是由生命周期的,它会死去,而程序只是代码。

      这样的话进程就会存在很多状态:

        1、running运行状态

        2、sleeping睡眠状态

        3、stop停止状态

        4、zombie僵尸状态

        5、中断状态

        top可以查看进程状态

  • 相关阅读:
    java中Object转String
    Spring中属性文件properties的读取与使用
    Java中parseInt()和valueOf(),toString()的区别
    php第二十一节课
    php第二十节课
    php第十九节课
    php第十八节课
    php第十七节课
    php第十五节课
    php第十四节课
  • 原文地址:https://www.cnblogs.com/lyali/p/11431174.html
Copyright © 2020-2023  润新知