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 ???? ???
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |