Linux之进程管理基础

进程管理

1、操作系统基础

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

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

    库文件是运行在ring()上一段程序代码,不对客户直接提供应用;

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

  一个进程:首先我们先把硬盘里的程序代码加载到内存(复制),再将这段程序放到CPU上运算,此时,这段程序就回去调用(也会自动生成)很多的进程,由这些进程来完成程序所指定的任务:

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

    (不考虑多核,CPU多线程的情况)

    多个进程:在电脑中一般都是存在多个进程的,而CPU只有一个,我们使用time space 的方式来给进程分配固定的时间,来运行1,某个进程只能在轮到自己运行的时候才会被分到CPU上去执行,时间一到,就会自动别踢下来,凑则会执行下一个进程;

  问题:

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

    答案:进程优先级解决

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

    答案:

1、程序数据

  2、输入数据输出数据(数据运行一半留下的数据)

  3、进程元数据

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

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

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

  这些分开的页框的数据又分为二种组织形式::1、数据链表2、双向链表

  3、进程造反了怎么办?

    答案:Linux结构下进程也是树形结构------PStree

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

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

    正常情况:

    1、如何生成子进程

      写实复制:

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

    2、子进程完成任务,如果关闭

      自己吃任务完成,功成身退,交出所有占用资源,再由父进程关闭子进程,这个周期结束了;

3、进程优先级:

    0-139:

    0-99 守护进程 越大越优先

    100-139:普通进程 越小越优先

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

    nice值:定义普通进程的优先级,-19,-20

    轮了一圈怎么办?

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

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

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

4、进程间的通讯原理

  1、主机内进程通讯

    single 信号通讯

      共享内存

      管道形式

  2、主机间的进程通讯

    streams ------ rpc

    socket 

5、进程类型:

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

  普通进程--------提供应用

   另外一种分类方式:戈恩局占有资源的不同

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

   占用内存多的进程-------前台要显示进程

6、进程的状态

  进程和程序比较起来,进程是有生命周期的,他会死去;

  1、running运行状态

  2、sleeping状态

  3、stop停止状态

  4、zombie僵死状态

  5、中断

猜你喜欢

转载自www.cnblogs.com/wangshilin/p/11431146.html