并发编程理论
网络编程
-
研究网络编程其实就是在研究计算机的底层原理
计算机中 CPU 才是真正干活的人
并发编程理论
发展史:
1.穿孔卡片
一次只能给一个人使用电脑 cpu利用率极低
2.联机批处理系统
一次性可以录入多个程序员编写的程序(eg:磁盘,硬盘)、 缩短了cpu等待的时间.不用反复等待程序录入的, 提高了cpu的利用率
3.脱机批处理系统
是现代计算机核心部件的雏形,极大地提升了CPU的利用率,
多道技术
单道技术
所有的程序排队执行,执行完一个程序才会执行下一个程序,过程中不能重合。
浪费了资源,耗时长
多道技术
利用空闲的时间 提前准备其他数据,最大化的压榨CPU的性能提升利用率, 打工人想休息是不可能的
多道技术的两种状态:
1. 切换:
运行中的程序有IO操作时,(输入\输出操作),此时cpu就会利用这个空档去执行另一个程序。
2. 保存:
如果cpu利用空档去执行别的程序的时候,会把上一个程序保存,下次回来基于保存的进度 继续执行。
进程理论
- 进程与程序的区别
1.程序:
就是我们编写的代码还没运行起来 也称为:死代码
2.进程:
系统当前正在运行的程序
进程的调度算法(重要)
1."FCFS 先来的先服务"
如果我们手里有几个程序代码,有短的,有长的,如果长的先来了,那么占用时间比较长。 对短作业不友好。
2."短作业优先调度"
顾名思义就是短的先来, 这样如果短的特别多对长的也不友好。
3."时间片轮转法+ 多级反馈队列"
将时间均分给每个程序,根据进程时长短,在进行分级。
等级越靠下表示耗时越长(代码很多),每次分级分到的时间就会越多优先级越低。 如果有新代码来了优先执行短代码
并行与并发
1.并行
多个进程同时执行,就是多个cpu一起干活,单个cpu无法实现
2.并发
多个进程看起来像同时执行
这个过程就是让CPU在对个程序之间利用多道技术来回切换+保存状态
单个CPU"(单核)"可以实现 多个CPU肯定也可以
# 高并发和高并行
高并发: 就是程序能够支持几个亿的并发量
就是这几个亿的用户来到可以感受到自己被服务着的意思 eg: 12306
高并行: 写的软件可以支持几个亿的并行(当然我们还是无法实现)
支持几个亿的并行,就代表这个计算机要有几个亿的CPU,
进程的三状态
就绪态
所有程序再被CPU执行之后都必须先进入就绪态等待
运行态
CPU正在执行
阻塞态
进程运行过程中出现了IO操作 阻塞态无法直接进入运行态 需要先进入就绪态。