1进程
1.1进程基本概念
程序:存放在外存中的一段数据组成的文件
进程:是一个程序动态执行的过程,包括进程的创建,进程的调度,进程的消亡
1.2进程相关命令
1.2.1打开任务管理器
【top】:动态查看当前系统中的所有进程信息
q:退出PID:唯一识别进程的ID号(>0)优先级:Linux系统中数据高,优先级高(-20~19),Windows中数据高,优先级高
1.2.2进程优先级设定
1.2.2.1【nice】
以指定优先级运行进程
用法:【nice -n 优先级 要执行的集成任务】
1.2.2.2【renice】
重新设定一个正在运行的进程的优先级
用法:【renice -n 优先级 进程PID】
1.2.3结束进程
1.2.3.1【kill】
杀死指定的进程任务
用法:【kill -9 进程PID】
1.2.3.2【killall】
杀死进程名对应的所有进程任务
用法:【killall -9 进程名】
1.2.4查看进程信息
1.2.4.1【ps -ef】
查看当前时刻所有进程信息
用法:【ps -ef | prep a.out】:通过管道命令,查看所有与【a.out】相关进程的信息。
1.2.4.2【pstree】
查看进程树信息
1.2.4.3【ps -aux】
查看当前时刻进程信息
1.2.4.4【jobs】
查看一个终端下后台执行的所有任务
1.2.8执行状态
1.2.8.1【fg】
后台任务放到前台执行
用法:【fg 编号】
1.3进程的创建
1.3.1
【32bits】一个进程在运行时,操作系统会为该进程分配0~4G虚拟内存空间,分为文本段,数据段,系统数据段进程空间:包含(内核,栈区,堆区,数据区,文本区)
内核:
栈区:
(1)局部变量存放在栈区中
(2)未经初始化为随机值
(3)代码执行到变量定义的时候开辟空间
(4)超过变量作用域回收空间
(5)栈区中地址的增长方向自高向低
堆区:
(1)堆区空间由malloc申请
(2)堆区空间由free函数释放
(3)堆区地址的增长方向自低向高
数据区:
(1)数据区存放静态变量,全局变量,字符串常量
(2)编译时开辟空间,执行时将该空间加载到内存中
(3)未经初始化为0值
(4)程序结束回收数据空间
文本区:(1)存放代码和指令数据段:也称为数据区,可以细分为:1.字符串常量区2.未初始化全局变量/静态变量3.已初始化全局变量/静态变量 系统数据段:包含堆区和栈区
1.3.2进程中虚拟地址和物理地址的关系
1.0~4G虚拟内存空间只有一个
2.实际物理地址中每个进程空间独立
3.通过MMU内存映射单元,单一个进程执行时,将物理地址中的数据加载到虚拟地址中运行
1.4进程的调度
1.4.1常见的调度算法
(1)先来先执行,后来后执行
(2)高优先级调度算法
(3)时间片轮转调度算法时间片:CPU在一个任务中的运行时间称为一个时间片
(4)多级队列反馈调度算法
(5)负载均衡调度算法
1.4.2宏观并行,微观串行
1.4.3进程的状态
1.4.3.1【R】
运行态:
就绪态:
1.4.3.2【S】
睡眠态:
可唤醒等待态:
1.4.3.3【D】
不可唤醒等待态:
1.4.3.4【T】
暂停态:
1.4.3.5【Z】
僵尸态:
1.4.3.6【X】
结束态:
1.5进程的消亡
1.僵尸进程:
进程代码执行结束,空间没有被回收,称为僵尸进程
2.如何避免产生僵尸进程:
(1)让父进程先结束
(2)让父进程回收子进程空间
3.孤儿进程进程的父进程先结束,此刻该进程称为孤儿进程,被系统进程收养,进程再结束时,会被系统进程回收进入进程空间。