并发编程理论
操作系统发展史
1.穿孔卡片阶段
计算机很庞大 使用很麻烦 一次只能给一个人使用 期间很多时候计算机都不工作
好处:程序员独占计算机 为所欲为
坏处:计算机利用率太低 浪费资源
2.联机批处理系统
提前使用磁带一次性录入多个程序员编写的程序 然后交给计算机执行
CPU工作效率有所提升 不用反复等待程序录入
3.脱机批处理系统
极大地提升了CPU的利用率
总结:CPU提升利用率的过程
多道技术
1.单道技术:
所有程序排队执行,过程中不能重复
2.多道技术
利用空闲时间提前准备其他数据,最大化提升CPU利用率
多道技术详细:
1.切换
计算机的CPU在两种情况下会切换,(1.不让你用,2.给别人用)
程序中有IO操作的,
输入/输出操作
input | time.sleep | read | write
程序长时间占用CPU
CPU雨露均沾,新程序开始 或者 老程序,都会不间断去运行一下
2.保存状态
CPU每次切换走之前都需要保存当前操作的状态,下次切换回来基于上次的进度
继续进行
'''
开了一家饭店 只有一个服务员 但是同时来了五桌客人
请问:如何让五桌客人都感觉到服务员在服务他们
让服务员化身为闪电侠 只要客人有停顿 就立刻切换到其他桌 如此往复
先给客人0.2秒看菜单,然后谁要点菜了再过去
'''
进程理论
进程与程序的区别
程序:一堆死代码 还没有被启动运行起来
进程:正在运行的程序 代码跑起来了
进程的调度算法:
1.FCFS(先来先服务)
对短作业不友好
2.短作业优先调度
对长作业不友好
3.时间片转轮法 + 多级反馈队列(目前大部分计算机正在使用的算法)
将时间均分,例如给所有启动的程序0.2秒启动时间,然后再根据进程时间的长短
再划分多个等级,给你0.2秒然后你没启动 走一圈回来cpu再给你1秒 然后再去照顾其
他程序,耗费时间越久的程序每次分到的时间越多,但优先级越低
并行与并发
并行
多个进程同时执行,必须要有多个CPU参与,单个CPU无法实现并行
并发
多个进程看上去像同时执行,单个CUP可以实现
程序是无法实现多并行的
程序是可以实现高并发的,优秀的项目追求的也是更高的支持并发
ps:目前国内支持高并发最牛的软件是 铁路12306
进程的三状态
就绪态
所有的进程在被CPU执行之前都必须先进入就绪等待状态
运行态
CPU正在执行
阻塞态
进程运行中出现了IO操作,然后就会进入阻塞态,CPU就会先去处理其他程序,IO操作完成后 再进入 就绪态 等待CPU再过来执行
标签:计算机,编程,程序,网络,并发,进程,CPU
From: https://www.cnblogs.com/moongodnnn/p/16900901.html