并发编程
Posted ygzico
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并发编程相关的知识,希望对你有一定的参考价值。
并发编程
一、操作系统发展史
- 穿孔卡片
- 读取数据速度特别慢
- CPU的利用率极低
- 单用户(一份代码)使用
- 批处理
- 读取速度特别慢
- CPU利用率极低
- 联机(多份代码)使用
- 效率还是很低
- 脱机批处理(现代操作系统的设计原理)
- 读取数据速度提高
- CPU的利用率提高
二、多道技术
多道技术指的是多个程序,多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如CPU)的有序调度问题
单道
- 一条路走到黑,比如:a,b两个程序需要使用CPU,a先试用,b等待a使用完毕后,b才能使用CPU
多道
- 比如:a,b两个程序需要使用CPU,a先使用,b等待a,直到a进入"IO或执行时间过长",a会(切换+保存状态),然后b可以使用CPU,待b执行遇到"IO或执行时间过长",再将CPU执行权限交给a,直到两个程序结束
- 解决方式即多路复用,多路复用分为时间上的复用和空间上的复用
- 空间上的复用
- 将内存分为几部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序 (多个程序使用一个CPU)
- 时间上的复用
- 当一个程序在等待I/O时,另一个程序可以使用CPU
- 当执行程序遇到IO时,操作系统会将CPU的执行权限剥夺
- 优点:CPU的执行效率提高
- 当执行程序执行时间过长时,操作系统会将CPU的执行权限剥夺
- 缺点:程序的执行效率低
三、进程
进程:正在进行的一个过程或者一个任务。是系统进行资源分配和调度的基本单位,是操作系统的基础
进程与程序
- 程序:一堆代码文件
- 进程:执行代码的过程,称之为进程
这里有一个比喻:
想象一个Tom猫正在给他的宿敌Jerry做奶油蛋糕
他有做奶油蛋糕的食谱及所需的所有原料:面粉、鸡蛋、奶油等
在这个比喻中:
- 做蛋糕的食谱就是程序
- Tom猫就是处理器(CPU)
- 而做蛋糕的各种原料就是输入数据
- 进程就是Tom猫阅读食谱、取来各种原料以及烘制蛋糕等一系列动作的总和
现在假设Tom猫的主人站在门外需要Tom取开门
Tom想了想,给主人开门的任务比给Jerry做蛋糕的任务更重要,于是Tom立马记下照着食谱做到第几步(保存进程的当前状态),然后跑去给主人开门。这里,我们看到处理器从一个进程(做蛋糕)切换到另一个高级优先级的进程(开门),每个进程拥有各自的程序(食谱和开锁),开门之后,Tom又回来从他离开时的那一步继续做蛋糕
四、进程调度
要想多个进程交替运行,操作系统必须对这些进程进行调度,这个调度也不是随机进行的,而是需要遵循一定的法则,由此就有了程序的调度算法
- 先来先服务调度算法
- 比如程序,a,b,若a先来,则让a先服务,待a服务完毕后,b再服务
- 缺点:执行效率低
- 短作业优先调度算法
- 是指对短作业或短进程优先调度的算法,该算法既可用于作业调度,也可用于进程调度(执行时间越短,则先去调度)
- 缺点:对长作业不利;不能保证紧迫性作业(进程)被及时处理;作业的长短只是被估算出来的。
- 时间片轮转法
- 比如同时有10个进程需要执行,操作系统会给10秒,然后时间片轮转法会将10秒分称10等分
- 多级反馈队列
- 1级队列:优先级最高,先执行此队列中程序
- 2级队列:优先级以此类推
- 3级队列
现代操作系统的进程调度算法:时间片乱转法+多级反馈队列
以上是关于并发编程的主要内容,如果未能解决你的问题,请参考以下文章