python 并发编程基础之 进程

操作系统的发展史

1、穿孔卡片

一个计算机机房,一次只能被一个卡片使用。
缺点:
CPU利用率最低。

2、联机批处理系统

支持多用户去使用一个计算机机房。

3、脱机批处理系统

高速磁盘:
提高文件的读取速度。
优点:
提高CPU的利用率

多道技术(基于单核情况下研究):

单道:

多个程序使用CPU时是串行。必须让一个程序结束后,下一个程序才能执行。

多道技术:

空间上的复用(*******):

​ 一个CPU可以提供给多个用户去使用。

时间上的复用(*******):

​ 切换 + 保存状态

IO操作:

​ input()
​ print()
​ time.sleep(3)

​ 1、若CPU遇到IO操作,会立即将当前执行程序CPU使用权断开。
​ 优点:
​ CPU的利用率高。

​ 2、若一个程序使用CPU的时间过长,会立即将当前执行程序CPU使用权断开。
​ 缺点:
​ 程序的执行率降低

并发与并行:

​ 并发: 指的是看起来像同时在运行,多个程序不停 切换 + 保存状态。
​ 并行: 真实意义上的同时运行,在多核(多个CPU)的情况下,同时执行多个程序。

进程

程序与进程

程序: 一堆代码。

进程: 一堆代码运行的过程。

进程调度:

当代操作系统调度:

​ 时间片轮转法 + 分级反馈队列

1、先来先服务调度:
a,b程序,若a程序先来,先占用CPU。

​ 缺点:
​ 程序a先使用,程序b必须等待程序a使用cpu结束后才能使用。

2、短作业优先调度:
a,b程序,谁的用时短,先优先调度使用cpu。

​ 缺点:
​ 若程序a使用时间最长,有N个程序使用时间短,
​ 必须等待所有用时短的程序结束后才能使用。

3、时间片轮转法
CPU执行的时间1秒中,加载N个程序,要将1秒等分成多N个时间片。

4、分级反馈队列
将执行优先分为多层级别。

​ 1级; 优先级最高。
​ 2级;优先级第二,以次类推。
​ 3级
​ .......

进程的三个状态:

就绪态:

​ 所有进程创建时都会进入就绪态,准备调度。

运行态:

​ 调度后的进程,进入运行态。

阻塞态:

​ 凡是遇到IO操作的进程,都会进入阻塞态。
若IO结束,必须重新进入就绪态。

同步和异步:

​ 指的是提交任务的方式。

同步:

​ 若有两个任务需要提交,在提交第一个任务时,
​ 必须等待该任务执行结束后,才能继续提交并执行第二个任务。

异步:

​ 若有两个任务需要提交,在提交第一个任务时,
​ 不需要原地等待,立即可以提交并执行第二个任务。

阻塞与非阻塞:

阻塞:

​ 阻塞态。遇到IO一定会阻塞。

非阻塞:

​ 就绪态
​ 运行态

最大化提高CPU的使用率:
尽可能减少不必要的IO操作。

进程号回收的两种条件:
1.join,可以回收子进程与主进程。
2.主进程正常结束,子进程与主进程也会被回收。

3.僵尸进程与孤儿进程(了解):
僵尸进程:
指的是子进程已经结束,但PID号还存在,未销毁.
缺点:
占用PID号,占用操作系统资源.

孤儿进程:
指的是子进程还在执行,但父进程意外结束.
操作系统优化机制:
提供一个福利院,帮你回收没有父亲的子进程.

4.守护进程:
指的是主进程结束后,该主进程产生的所有子进程跟着结束,并回收.

猜你喜欢

转载自www.cnblogs.com/allenchen168/p/11716824.html