操作系统基础
调用: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 将前端送到后台。