进程控制

什么是进程

进程是可并发执行的程序,是一个在数据集合上的运行过程
当一个程序开始执行后,在开始执行到执行结束的这段时间里,它内存中的部分被称为进程
通俗讲:程序:在硬盘上的可执行文件
进程:在执行中的程序

什么是并发

多进程同时运行,多个任务同时执行

虚拟内存

Linux虚拟内存管理技术:
物理内存:实际处理器中的内存模块 几百M
将硬盘中的一部分存储单元拿来当内存使用 4g(受操作系统的寻址范围的影响)
32位操作系统的寻址范围2的32次方
0x00000000-0xfffffff
操作系统:内核空间 和 用户空间
高地址1g 低地址3g
好处:1、有效防止内核空间被破坏
2、防止恶意窥探
数组存储方式:顺序存储方式。
数组就是在内存中开辟一块连续的、大小相同的空间,用来存储数据。
连续:内存地址是连续的。如a是首地址,a+1就是第二个数据元素的地址,a+2是第三个。
大小相同:指每个数组元素所占的空间大小是相同的
指针是有空间的 指针用来保存地址 地址是乱码
物理内存映射到虚拟内存

进程的分类

  1. 守护进程
  2. 批处理进程
  3. 交互进程

进程的属性

进程的ID(PID);是唯一的数值,用来区分进程
父进程的ID:PPID
启动进程的用户ID:ULD
进程的状态:运行R,休眠 s,僵尸进程Z

进程优先级

进程占用资源的大小(内存,cpu)
6.进程控制模板PCB:数据结构
进程号ps命令查看Linux系统的进程

  1. 长格式输出ps -l
    U:按用户名和启动时间的顺序来显示进程
    f: 用树状格式来显示进程
    a:显示所有用户的所有进程
    x:显示无控制终端进程 aux一起用

%cpu占用cpu百分比
%MEM占用内存的百分比
小s代表进程的领导者
STAT进程
TIME 进程消耗cpu的时间
COMMAND 命令的参数名称
<代表进程优先级比较高
Kill:kill+进程号 -9;强制终止
Pkill:pkil + 程序名
Xkill:在桌面上杀死图像化界面
Renice:改变进程的优先级,通过进程ID(PID)来改变谦让度,进而达到改变进程的优先级
Renice 谦让度 PID

进程的状态转换

(1)就绪:当进程已分配到除CPU以外的所有资源,只要获得处理器就可以立即执行
(2)执行:已经获取处理器,其程序正在处理器上执行
(3)阻塞:正在执行的程序,由于等待某个事件的发生而无法执行时,便放弃处理机会而处于阻塞状态
在这里插入图片描述
在这里插入图片描述
并发的本质:时间片轮询

Linux进程调度

1.FCFS也叫FIFO,先来先处理 缺点:对于短的任务可能变得非常缓慢
2.时间片轮询算法:周期性的切换总体时长比FIFO短 缺点:运行时间短切换时间长
3.STCF:短任务优先算法
抢占式和非抢占式
4.银行家算法:我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。
为保证资金的安全,银行家规定:
(1) 当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客;
(2) 顾客可以分期贷款,但贷款的总数不能超过最大需求量;
(3) 当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支付,但总能使顾客在有限的时间里得到贷款;
(4) 当顾客得到所需的全部资金后,一定能在有限的时间里归还所有的资金.
操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程本次申请的资源数是否超过了该资源所剩余的总量。若超过则拒绝分配资源,若能满足则按当前的申请量分配资源,否则也要推迟分配。
优先级反转:进程调度过程中的一种特殊现象。高优先级进程因为所需资源被低优先级进程占用而被阻塞,占用该资源的低优先级进程因其优先级低于其他进程也无法执行而释放资源,造成最高优先级进程反而在一段时间内无法执行,系统性能下降的情况。

创建一个进程

Fork()函数:它是有两个返回值 0:子进程 -1:失败
Getpid():获取当前进程号
Getppid():获取当前父进程号
子进程与父进程跑在不同的内存空间中:父进程与子进程有自己独立的内存空间
Fork函数运行之后,子进程会复制父进程的堆栈数据空间
优化:读时不管,写时复制
Fork函数创建的父子进程关系是竞争关系,不能判断是谁先动
Vfork():创建一个进程的
1、保证子进程先动
2、当子进程调用exit()函数后,父进程往下执行
3、不会继承父进程的界面;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Eg:
1、创建两条进程,一条输出A,一条输出B,交替输出ABABABABABAB
在这里插入图片描述

三条进程交替输出ABCABCABC
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值