进程必备的理论基础
1、操作系统的作用
隐藏丑陋复杂的硬件接口,提供良好的抽象接口
管理、调度进程,并且将多个进程对硬件的竞争变得有序
2、多道技术产生背景
针对单核,实现并发
现在的主机一般是多核,那么每个核都会利用多道技术
有 4 个 cpu,运行于 cpu1 的某个程序遇到 io 阻塞,会等到 io 结束再重新调度
会被调度到 4 个 cpu 中的任意一个,具体由操作系统调度算法决定
3、多道技术空间上的复用:如内存中同时有多道程序
4、多道技术时间上的复用
复用一个 cpu 的时间片
注意,遇到 io 切,占用 cpu 时间过长也切
核心在于切之前将进程的状态保存下来
这样才能保证下次切换回来时,能基于上次切走的位置继续运行
进程的概念
1.进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动
2.进程是操作系统动态执行的基本单元
3.在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元
4.进程与程序的区别
程序是指令和数据的有序集合,是一个静态的概念。程序可以作为一种软件资料长期存在,是永久的
进程是程序在处理机上的一次执行过程,它是一个动态的概念。进程是有一定生命期的,是暂时的
5. 注意:同一个程序执行两次,就会在操作系统中出现两个进程。所以可以同时运行一个软件,分别做不同的事情也不会混乱,比如可以打开两个Pycharm做不同的事
6. 进程调度
要想多个进程交替运行,操作系统必须对这些进程进行调度
这个调度也不是随即进行的,而是需要遵循一定的法则
由此就有了进程的调度算法:先来先服务调度算法、短作业优先调度算法、时间片轮转法、多级反馈队列
并行和并发
1.并行是指在一个时间点上,有多个进程在被 cpu 计算,比如赛跑,两个人都在不停的往前跑
2.并发是指资源有限的情况下,在一个时间段上,有多个进程在被 cpu 计算,交替轮流使用资源
3.并行与并发的区别
并行是从微观上,也就是在一个精确的时间片刻,有不同的程序在执行,这就要求必须有多个处理器
并发是从宏观上,在一个时间段上可以看出是同时执行的,比如一个服务器同时处理多个 session
进程的三状态
在程序运行的过程中,由于被操作系统的调度算法控制,程序会进入几个状态
就绪:当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程 状态称为就绪状态。
运行:态当进程已获得处理机,其程序正在处理机上执行,此时的 进程状态称为执行状态。
阻塞:正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处 理机而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不 能满足、等待信件(信号)等。
同步异步
1.同步:形象的说,一件事的执行必须依赖另一件事的结束,强调的是顺序性
2.异步: 形象的说,两件事情可以同时进行
3.注意:同步异步和并行、并发没关系
4.阻塞:等待,比如 input sleep recv accept recvfrom
5.非阻塞:不等待,start/terminate 都是非阻塞的
6.阻塞与非阻塞主要是从程序(线程)等待消息通知时的状态角度来说的
7.可以分为四类:
同步阻塞
异步阻塞
同步非阻塞
异步非阻塞
start/terminate 都是非阻塞的
进程模块
1.跟进程相关的基本都在这个模块里:multiprocessing
2.父进程与子进程的对比分析
父进程,比如运行本文件
子进程,运行 Process(target=func).start()
父进程与子进程数据隔离
主进程等待子进程结束之后再结束
子进程和主进程之间默认是异步的