Python基础之网络编程:5、网络并发编程理论与实操(一)
一、并发编程理论
研究网络编程其实就是在研究计算机的底层原理及发展史
1、操作系统发展史
穿孔卡片
程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片)后,才让下一个用户上机。
手工操作方式两个特点:
(1)用户独占全机。不会出现因资源已被其他用户占用而等待的现象,但资源的利用率低。
(2)CPU 等待手工操作。CPU的利用不充分。
联机批处理系统
主机与输入机之间增加一个存储设备——磁带,在运行于主机上的监督程序的自动控制下,计算机可自动完成:成批地把输入机上的用户作业读入磁带,依次把磁带上的用户作业读入主机内存并执行并把计算结果向输出机输出。完成了上一批作业后,监督程序又从输入机上输入另一批作业,保存在磁带上,并按上述步骤重复处理。
监督程序不停地处理各个作业,从而实现了作业到作业的自动转接,减少了作业建立时间和手工操作时间,有效克服了人机矛盾,提高了计算机的利用率。
但是,在作业输入和结果输出时,主机的高速CPU仍处于空闲状态,等待慢速的输入/输出设备完成工作: 主机处于“忙等”状态。
脱机批处理
卫星机:一台不与主机直接相连而专门用于与输入/输出设备打交道的。
其功能是:
(1)从输入机上读取用户作业并放到输入磁带上。
(2)从输出磁带上读取执行结果并传给输出机。
这样,主机不是直接与慢速的输入/输出设备打交道,而是与速度相对较快的磁带机发生关系,有效缓解了主机与设备的矛盾。主机与卫星机可并行工作,二者分工明确,可以充分发挥主机的高速计算能力。
脱机批处理系统:20世纪60年代应用十分广泛,它极大缓解了人机矛盾及主机与外设的矛盾。
不足:每次主机内存中仅存放一道作业,每当它运行期间发出输入/输出(I/O)请求后,高速的CPU便处于等待低速的I/O完成状态,致使CPU空闲。
为改善CPU的利用率,又引入了多道程序系统。
二、多道技术
在计算机工作中,最主要的硬件其实就是CPU,CUP的性能越高,计算机的工作效率就越高,多道技术主要就是针对提高电脑CPU性能及工作效率的技术
1、单道技术
单道技术是指,当我们使用计算机打开程序时,操作系统首先会调用硬盘中的程序,这时CPU就会运转,而当我们打开多个程序时,CPU就会依照顺序依次打开程序,过程中程序的启动不能重合,打开程序的效率较低
2、多道技术
多道技术中的多道指的是多个程序,多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题,,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用.
空间上的复用:将内存分为几部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序
三、进程理论
1、进程与程序的区别
- 程序:一堆死代码>>>没有被运行的程序
- 进程:正在运行被程序>>>被运行起来的程序
2、进程的调度算法
- FCFC
- 谁先运行先服务谁
- 由于时谁允许就先服务谁,会产生一个缺点就是说第一个打开的程序较大,运行时间就会较多,而后面打开的程序较小,打开的较快,但是还要等第一个程序运行结束后才能启动
- 对短作业不友好
- 短作业调度优先
- 由于时短作业调度优先,那么对长作业就不太友好
- 时间片转轮法+多级反馈队列(目前在用)
- 将时间均分,然后根据进程时间长短再分多个等级
- 等级越靠下表示耗时越长 每次分到的时间越多 但是优先级越低
3、进程的并发与并行
- 并行
- 多个程序同时执行,必须要有多个CPU参与,单个CPU无法实现并行
- 并发
- 多个程序看上去像是同时执行,单个CPU即可实现
4、进程的三状态
- 就绪态
- 所有的程序在被CPU执行前都是就绪状态
- 运行态
- 正在被CPU运行的程序
- 阻塞态
- 进程运行中遇到了IO操作,阻塞态无法直接进入运行态,必须要先进入就绪态