目录
1.进程:
程序:保存在磁盘空间中的的一段代码的集合,死的
进程:是一个程序动态执行的过程,包括进程的创建、调度和消亡的过程
2.进程相关的命令
PID:进程的标识符(进程的ID)
PPID:父进程的ID号
同一个程序打开多个,进程不是一个而是多个,PID不同。
PID没有规律是随机的
1.top
根据CPU占用率查看进程信息
q退出
2.ps -ef
查看当前所有进程的信息
ps -ef | grep a.out
3.ps -aux
查看当前所有进程的信息
ps -aux | grep a.out
4.kill
向进程发送信号,并让进程结束
kill -l
查看信号的类型
kill -信号名/信号编号 进程ID
kill -9 进程ID (9号信号杀死最强)
killall -信号名/信号编号 进程名
5.后台运行代码:
./a.out &
6.jobs
查看后台执行的任务
7.fg 任务编号
将任务编号对应的后台任务放到前台执行
8.nice
nice -n 10 ./a.out
以10作为优先级运行a.out进程 在Linux系统中数字越小优先级越高
nice是在运行前设定优先级。
9.renice
renice -n 10 进程ID
renice是运行的时候可以更改优先级。
10.pstree
查看进程的关系
3.进程的创建:
32bit操作系统中,进程运行,操作系统开辟 0 - 4G虚拟内存空间
1. 虚拟内存空间分为:
1.用户空间:
1.文本段:文本区 存放代码、指令
2.数据段:数据区 存放全局变量、静态变量、常量
3.系统数据段:堆、栈
2.内核空间:
1.用户无法访问内核空间,通过信号、系统调用实现用户层和内核层的交互
2. 实际物理内存空间:
MMU内存映射单元实现虚拟地址和物理地址间的映射关系
两个进程所占虚拟内存空间并不是 8 G,而是 4 G,两个进程分时共用同一空间
两个进程物理内存空间是独立的,进程1和进程2空间独立
结论:
进程的空间是独立的,但是两个进程并不是8G
可以理解不同的进程为不同的班级,虚拟地址是同一个教室,不同的进程在不同时刻,在同一个虚拟地址。理解为不同班级在同一个教室在不同时刻上课。
一个进程实际的所占物理空间很小的,但是可以使用很大的虚拟空间。
4.进程的调度:
1.进程调度算法:
1.先来先执行,后来后执行
2.高优先级调度算法
3.时间片轮转调度算法
当有fges等函数造成阻塞,或者时间过长的时候,保存现场然后进行下一个进程,由调度算法决定到底去哪个进程
4.抢占式调度算法
5.多级反馈队列调度算法
时间片:
CPU在一个进程任务中执行的时间称为时间片
宏观并行、微观串行
在用户看来例如qq,钉钉,微信等是同步进行的,但实际对于cpu来看是一直在不同的进程直接跳转,只不过是速度太快,人类无法捕捉到。
2. 进程的状态:
1.运行态、就绪态: R
运行态:正在被CPU执行的进程任务
就绪态:正在执行的任务,但由于CPU调度还没有被调度到
2.可唤醒等待态: S
睡眠态
由于缺少资源导致程序阻塞的状态,当拿到资源后,继续向下执行
3.不可唤醒等待态: D
不想被CPU任务调度打断
4.暂停态 T
用户主动让进程任务暂停(挂起)状态
5.僵尸态 Z