操作系统 串行 并发 并行 阻塞 非阻塞
进程的基础
-
程序: 一堆静态的代码文件
-
进程: 一个正在运行的程序,抽象的概念
被谁运行?
由操作系统,操控调用交于 CPU 运行,被 CPU 运行
操作系统
-
什么是操作系统?
管理控制协调计算机硬件与软件的关系
-
操作系统的作用?
第一个作用 : 将一些复杂丑陋的接口,变成一些简单美丽的接口第二个作用 : 当多个进程抢占一个资源时,操作系统会将你的执行变的合理有序
阻塞: input read writre sleep recv accept send recvfrom
如果没有操作系统,会发生什么呢?
第一层 : 对硬件的协调,调用(CPU 内存 磁盘等)
第二层: 如何调用各种接口,去编程
操作系统的发展史
最早出现的计算机 : 算盘
电子类的计算机发展:
第一代计算机 : 1940~~1955
在大学时期出现了机房:想使用必须预约
先连接各个硬件 真空管 然后再插上程序调试,效率低
优点:个人独享整个计算机资源
缺点:硬件调试插线,耗时
所有人都是串行
第二代计算机
磁带存储一批处理系统
优点 :
- 程序员不用亲自对硬件进行插件操控,效率提高
- 可以进行批量处理代码
缺点:
- 程序不能独自使用计算机
- 你的所有程序还是串行
大背景:
- 集成电路 : 多道程序系统,把所有的硬件变小,线路板
- 将两个不同的生产线,合并成一条生产线
技术上的更新:多道技术 非常重要
空间上的复用:将内存分区域,一个内存可以同时加载多个进程时间上的复用
时间上的复用:实现将 CPU 在多个进程之间来回切换,并且保留状态
ps: 同时加载到内存三个任务,三个进程都有阻塞的情况,只要 CPU 运行一个进程时,只要遇到阻塞就立马会切换,长时间占用 CPU 也会切换
多道技术的作用:
提升效率,最大程度的使用 CPU
另外情况 : 如果是一个 商业IO(阻塞)密集型进程,来回切换,提升效率
如果是一个计算密集型,来回切换就会降低效率了(串行比较好,一切就耗时)
第三代计算机
广泛采用了必须的保护硬件,程序之间的内存彼此隔离
每个人占用计算机的时间是有限的
多人(少于 10 个)共同使用一个计算机
第四代计算机
内存的物理隔离
进程的理论
串行:所有的任务一个一个完成
并发:一个 CPU 完成多个任务,看起来像是同时完成
并行: 多个 CPU 执行多个任务,真正的同时完成
阻塞:CPU 遇到 IO 就是阻塞
非阻塞:没有IO就是 非阻塞
- 程序: 一堆静态文件
- 一个正在执行的程序任务就是一个进程
- 一个程序能否打开多个进程:可以 你可以选择看一下浏览器,多个同时打开
进程的创建
-
一个子进程必须依赖于一个主进程才可以开启
-
一个主进程可以开启多个子进程
ATM:一个进程 虽然开辟了很多 PY 文件,但就是一个进程
socket: 这是两个进程,有服务端和客户端
pycharm是主进程
cmd(终端) 主进程是操作系统
Windows : 操作系统会调用 CreatProcess 处理进程的创建
unix : fork 创建子进程
windows : 创建一个子进程,会 copy 主进程所有资源,但是会改变一些资源
Unix (linux, mac) : 创建一个子进程会完完全全复制一份主程序所有资源
-
进程的状态
运行 阻塞 就绪