Linux进程基础
操作系统基础
调用:kernel内核通过给应用程序听歌system call的发那个苏来提供硬件资源;
注意应用程序也包括库文件
进程运行管理
一个进程:首先我们需要把硬盘里的程序代码加载到内存(复制),再将这端程序放到cpu上运算,此时,这段程序就回去调用(也会自动生成)很多进程,由这些进程来完成程序所指定任务;
在这个过程中:我们就需要去解决数据输入与输出,还有存储的问题。
(不论多核,cpu多线程的情况)
多个进程:在电脑中一般都是存在多个进程的,而cpu却只有一个,time space 的方式来给进程分配固定时间,来运行。
某个进程只能在轮到自己运行的时候才会被放到cpu上执行,时间一到,就会被自动踢下来,cpu则会执行下一个进程。
问题:
1、进程谁先谁后的问题
进程优先级
2、如果进程没有运行完就被踢下来怎么办
3、进程*了怎么办
linux结构下进程也是树形结构 --pstree
内核管理进程不会直接管理,一般所有进程都由上一级进程直接管理,父子进程概念
最大的进程--init,有权限管理所有进程
正常情况:
1、如何生成子进程
写实复制:父进程在需要完成一项工作的时候自己无法完成,则需要生成对应的子进程来完成这项工作,并且把自己的内存空间中的数据复制一份交给子进程,用来存储子进程所运行数据,
子进程完成任务以后,入伙关闭
子进程任务完成,交出所有的占用资源,再由进程关闭子进程,这个周期就结束了。
4、进程正常结束了怎么办。 --pstree
进程优先级:
0-139
0-99 守护进程 越大越优先
100-139 普通进程 越小越优先
普通用户可以转让自己的优先级
nice值:定义普通进程的优先级,-19 -20 】
轮了一圈了怎么办?
在我们的内存上,会提供一个空间;这个空间会专门用来存放运行过后的进程。
当我们的进程运行完成一遍后,这个空间,就会和原有的空间对调;再提供给cpu读取;一直轮换,直到进程运行完成。
进程数据怎么办?
1.程序数据
2.输入数据输出数据
3.进程元数据
tack struct 数据结构体;它定义了进程数据的存储格式我们将进程数据存储在tack struct中,在这种结构下,方便cpu快速存储于读取
物理地址空间--线性地址空间
进程在运行一段时间后的一些数据,通过线性地址对应的物理地址,存储到内存;mmu就是用来将不连续的物理地址转换为连续的线性地址
这些分开的页框的数据又分为两种形式
1、链表性数据
2、双向
进程间的通讯原理
主机内进程通讯
single 信号通讯
共享内存
主机间的通讯
stream --rpc
socket
进程类型:
守护进程
普通进程
另外一种分类方式:根据占用资源的不同
占用cpu多进程--后台运行进程
占用内存多的--前台要显示的进程
进程的状态
进程和程序比起来,进程由生命周期
1、running
2、slepping
3、stop
4、zombie 僵死状态
5、中断状态
进程管理的命令
pstree
通过树形结构显示进程关系
yum install psmisc -y
ps
查看进程状态--当前运行状态
pid 进程id
tty 终端
time 进程累计在cpu上运行的时长
cmd 启动该进程的命令程序
ps的常用组合:
ps -aux
user 进程所属用户
pid 进程id
%cpu cpu利用率
%men 内存利用率
vsz 虚拟内存大小
rss 常驻内存空间
stat 进程状态
r running
s sleeping
t stop
z zombie
s 代表lead进程
+ 前端进程
< 高优先级进程
n 低优先级进程
d 表示不可中断
w 没有足够的内存可以分配
i 表示多线程进程
tty 进程终端
time 进程启动时间
cmd
ps -ef
ppid 父进程号
c 进程运行在运行哪个cpu上
ps -ejh
以树形结构先升级进程
ps -eo
自定义参数格式
ps -u
查看指定用户所运行的进程
top
与ps相反查看实时状态
k -->关闭进程,输入pid即可
h -->帮助界面
调整top排序:
m:根据内存大小进行排序
p:根据cpu利用率来排序
t:根据cpu使用时长来排序
htop
top的升级版
vmstat
查看虚拟机内存的相关信息
进程信息
内存信息
交换内存信息
syste系统io的相关信息
cpu的信息
pmap
报告内存的映射信息
pmap pid
映射内存空间中物理地址信息和cpu所能识别的线性地址信息
pidof
通过进程id来查看进程号
pidof bash
dstat
默认没安装 通过yum install dstat -y安装
kill
管理进程
kill -l查看信号
通过kill发送响应的操作信号
1信号 hup --让进程重读配置文件,不重启进程
2信号 int --中断进程、
9信号 kill --强制关闭进程,不去保存进程数据
15信号term --优雅关闭
kill -9 pid
pgrep
进程过滤
pkill
直接关闭 进程按照uid关闭
jobs
作业:--进程
前台:占用了当前的shell界面
后台:在后台自动运行的进程
fg 回到后台程序
com& 脚本运行的时候
bg 将前端送到后台。
上一篇: Linux之Shell编程(16)
下一篇: ucore Lab2 实验笔记