Linux进程管理

进程管理前端

一、操做系统基础linux

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

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

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

       中断、保护现场数据结构

 

二、进程运行原理(一个进程与多个进程)多线程

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

       在这个过程中:咱们就须要解决数据输入与输出,还有存储的问题ui

             

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

       多个进程:在电脑中通常都是存在多个进程的,而CPU却只有一个,咱们就使用time space的方式来给进程分配固定的时间来运行;某个进程只能在轮到本身运行的时候           才会被放到CPU上执行,时间一到就会自动被踢下来,CPU则会执行下一个进程;

       问题:

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

              进程优先级  

       二、若是进程没有运行完就被踢下来了怎么办?--解决数据存储的问题

       三、若是进程造反了怎么办?

 

三、进程优先级

       0-139

              0-99  实时进程   越大越优先

              100-139  非实时进程  越小越优先

              【特性:普通用户能够转让本身的优先级】

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

       轮了一圈之后怎么办?

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

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

              一直轮换,知道进程运行完成;

 

四、进程数据怎么办?

       一、程序数据

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

       三、进程元数据

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

 

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

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

              这些分开的页框的数据又两种组织形式:一、链表型数据  二、双向链表

 

五、若是进程造反了怎么办?

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

       内核管理不会去直接管理;通常全部的进程都由上一级进程来管理--父子进程概念;

       最大的进程--init,有权限去管理全部的进程;

      

       正常状况:

       一、如何生成子进程

              写实复制:

              父进程在须要完成一项工做的时候本身没法完成,则须要生成对应的子进程来完成这项工做,而且把本身的内存空间中的数据复制一份交给子进程,用来存储子进程所运行数据;--这个过程咱们就叫作写实复制;

       二、子进程完成任务之后,若是关闭

              子进程任务完成,功成身退,交出全部的占用资源;再由父进程关闭子进程,这个周期就结束了;

 

六、进程间的通信原理

       一、主机内进程通信 

              single 信号通信

              共享内存

              管道形式

       二、主机间的进程通信

              streams -- rpc

              socket

 

七、进程类型

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

       普通进程 -- 提供应用

 

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

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

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

 

八、进程的状态

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

       一、running 运行

       二、sleeping状态

       三、stop 中止状态

       四、zombie 僵死状态

       五、中断状态

      

==========================================================

 

回顾:

       进程管理:

              调用

              内核空间 用户空间

       1个进程运行:

       多进程再单核单线程cpu上运行的状况:

              cpu资源

              一、谁先谁后?

              二、数据存储的问题?

                     task struct

                     page -- 页框是一个虚拟概念,页框之间并不知道对方的存在,只知道本身独占内存空间

              三、进程暴走了

                     父子进程的概念

                     写实复制

              四、进程的分类、进程的通信、进程状态

 

==========================================================

 

进程管理的命令

       pstree

              经过树形结构显示进程关系

              yum install psmisc -y

       *ps

              查看进程状态--当前运行状态;(这一刻)

              PID  进程ID

              TTY 启动该进程的终端是谁  pts

              TIME      进程累计再CPU上运行的时长

              CMD      启动该进程进程命令程序

             

              ps的经常使用组合:

              ps -aux

                     USER      进程所属用户

                     PID

                     %CPU     

                     %MEM

                     VSZ virtual memory size 虚拟内存大小;进程本身再内存中真是占用的线性地址空间大小

                     RSS 常驻内空间(不能够进行内存交换 -- swap)

                     TTY

                     STAT      进程状态

                            R     running

                            S     sleeping

                            T     stoped

                            Z     zombie

                            附加状态

                            s      表明是lead进程--bash

                            +     前端进程

                            <     高优先级进程

                            N    低优先级进程

                            D     表示不可中断

                            W    没有足够的内存能够分配

                            l      表示多线程进程;多线程 -- 把一个进程拆分为多个线程来完成,这样提升进程运行速度

                     START    进程启动时间

                     TIME

                     COMMAND

              ps -ef

                     PPID  父进程号

                     C       进程运行再那个CPU上

              ps -ejH  

                     以树形结构显示进程

              ps -eo

                     自定义参数格式

                     ps -eo uid,pid,comm  

              ps -U

                     查看指定用户所运行的进程

                     ps -U root

 

       top

              与ps相反,top实时状态,会动态刷新

              k  --> 关闭进程  输入PID便可;

              h  --> 帮助页面

             

              调整top排序:

                     M   根据内存大小进行排序

                     P    根据CPU利用率来进行排序

                     T    根据使用CPU累计时长来进行排序

                     N    根据PID来进行排序

             

              能够详细显示最上面的命令

                      1 2 3

       htop

              top的高级版本,默认yum源中是没有的,须要去下载并编译安装使用  

       vmstat

              查看虚拟机内存的相关信息

                     进程信息

                     内存信息

                     交换内存信息

                     system系统IO相关信息 -- in cs

                     cpu信息

              -s   //以统计的形式来显示相关信息

       pmap

              报告内存的映射信息

              pmag pid

              映射内存空间中的物理地址信息和CPU所能识别的线性地址信息;

       pidof

              经过进程ID(UID)来查看进程号(PID)

              pidof bash

       dstat

              默认没有为咱们安装上 yum install dstat

              动态的显示各类信息,能够本身定义

              建议:去man dstat

       kill

              管理进程

              经过kill对进行发送响应的操做信号

                     1信号  HUP  --  让进程重读配置文件,不重启进程

                     2信号  INT  -- 中断进程

                     9信号  KILL  -- 强制关闭进程,不去保存进程数据

                     15信号  TERM -- 优雅关闭

              kill -l  //查看系统支持全部信号

              kill -9 pid

       pgrep

              进程过滤,也能够作进程查找--相似于pidof

       pkill

              直接去关闭进程--能够按照UID(名字)来关闭进程

       jobs

              做业: -- 进程

              前台做业:占用了当前的shell界面

              后台做业:在后台自动运行的进程

             

                     ctrl + z

 

                     fg -- 切回到后台进程 : jobs -l  + -- 默认切回来的指定进程;

                     COM &  //脚本运行的时候

                     bg -- 将前端送到后台

 

              vim a.txt

              .swp

相关文章
相关标签/搜索