加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

Linux基础知识_09 -- 进程管理

发布时间:2020-12-14 00:42:12 所属栏目:Linux 来源:网络整理
导读:进程管理 1、操作系统基础 ? 调用:kernel通过给应用程序提供system call方式来提供硬件资源; ?? 【注意:这个应用程序也包括库文件;】 ?? 库文件是运行在ring 0上的一段程序代码,不对客户直接提供应用; ? 中断、保护现场 2、进程运行原理(一个进程与多
进程管理
1、操作系统基础
?  调用:kernel通过给应用程序提供system call方式来提供硬件资源;
??    【注意:这个应用程序也包括库文件;】
??    库文件是运行在ring 0上的一段程序代码,不对客户直接提供应用;
?  中断、保护现场
2、进程运行原理(一个进程与多个进程)
?  一个进程:首先我们需要把硬盘中的程序代码加载到内存(复制),再将这段程序放到CPU上运算,此时,这段程序就会去调用(也会自动生成)很多的进程;由这些进??程来完成程序所指定的任务;
?  在这个过程当中:我们就需要解决数据输入与输出,还有存储的问题
??
?  (不讨论多核、CPU多线程的情况)
?  多个进程:在电脑中一般都是存在多个进程的,而CPU却只有一个,我们就使用time space的方式来给进程分配固定的时间来运行;
  某个进程只能在轮到自己运行的时候??才会被放到CPU上执行,时间一到就会自动被踢下来,CPU则会  执行下一个进程;
?  问题:
?  1、进程谁先谁后的问题?
??    进程优先级?
?  2、如果进程没有运行完就被踢下来了怎么办?--解决数据存储的问题
?  3、如果进程造反了怎么办?
3、进程优先级
?  0-139
??    0-99? 实时进程?? 越大越优先
??    100-139? 非实时进程? 越小越优先
??    【特性:普通用户可以转让自己的优先级】
???? ??      nice值:定义普通进程的优先级,-20 - 19
?  轮了一圈以后怎么办?
??    在我们内存上,会提供一个空间;这个空间会专门用来存放运行过后的进程;
??    当所有的进程运行完成一遍有,这个空间,就会和原有空间对调;再提供给CPU读取;
??    一直轮换,知道进程运行完成;
4、进程数据怎么办?
?  1、程序数据
?  2、输入数据输出数据(运行到一半留下的数据)
?  3、进程元数据
?  task struct 数据结构体:它定义了进程数据的存储格式;我们将进程数据,以及进程元数据存储tast struct中;这种结构下,方便CPU快速存储于读取;
?  物理地址空间--线性地址空间
?  进程在运行后的一些数据,通过线性地址对应的物理地址,存储到内存(页框page);MMU(内存管理单元)就是用来将不连续的物理地址转换为连续的线性地址;
??    这些分开的页框的数据又两种组织形式:1、链表型数据? 2、双向链表
5、如果进程造反了怎么办?
  ?linux结构下进程也是树形结构 -- pstree
?  内核管理不会去直接管理;一般所有的进程都由上一级进程来管理--父子进程概念;
?  最大的进程--init,有权限去管理所有的进程;
?
?  正常情况:
?  1、如何生成子进程
??    写实复制:
??    父进程在需要完成一项工作的时候自己无法完成,则需要生成对应的子进程来完成这项工作,并且把自己的内存空间中的数据复制一份交给子进程,用来存储子进程所运行数据;--这个过程我们就叫做写实复制;
?  2、子进程完成任务以后,如果关闭
??    子进程任务完成,功成身退,交出所有的占用资源;再由父进程关闭子进程,这个周期就结束了;
6、进程间的通讯原理
?  1、主机内进程通讯?
??    single 信号通讯
??    共享内存
??    管道形式
?  2、主机间的进程通讯
??    streams -- rpc
??    socket
7、进程类型
?  守护进程 -- 维护系统的正常运行
?  普通进程 -- 提供应用
?  另外一种分类方式:根据占用资源的不同
?  占用CPU多进程? --? 后台运行进程
?  占用内存多的进程? --? 前台要显示进程
8、进程的状态
?  进程和程序比较起来,进程是有生命周期的,他会死去;
?  1、running 运行
?  2、sleeping状态
?  3、stop 停止状态
?  4、zombie 僵死状态
?  5、中断状态
?
==========================================================
回顾:
?  进程管理:
??    调用
??    内核空间 用户空间
?  1个进程运行:
?  多进程再单核单线程cpu上运行的情况:
?    ?cpu资源
??    1、谁先谁后?
?    ?2、数据存储的问题?
??      ?task struct
???      page -- 页框是一个虚拟概念,页框之间并不知道对方的存在,只知道自己独占内存空间
??    3、进程暴走了
???      父子进程的概念
???      写实复制
??    4、进程的分类、进程的通讯、进程状态
==========================================================
进程管理的命令
?  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 ???? ???

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读