操作系统发展史,UDP协议,进程,阻塞与非阻塞,同步与异步

  • 操作系统的发展史
    • 发展历程
    • 三大核心硬件
  • UDP协议
  • 多道技术
    • 单道技术
    • 多道技术
    • 多道技术(切换和保存状态)
  • 进程的概念
    • 如何了解进程
    • 进程的调度算法
    • 时间片轮转法+多级反馈队列
  • 进程的并行与并发
  • 进程的三状态(就绪态,运行态,阻塞态)
  • 阻塞与非阻塞
  • 同步异步与阻塞非阻塞

 

 


操作系统的发展史

发展历程:

1.穿孔卡片
    CPU利用率非常的低
    好处是程序员可以一个人独占计算机 想干嘛就干嘛
 
2.联机批处理系统
    缩短录入数据的时候 让CPU连续工作的时间变长>>>:提升CPU利用率
    
3.脱机批处理系统
    是现代计算机的雏形>>>:提升CPU利用率

总结:
    操作系统的发展史也可以看成是CPU利用率提升的发展史

三大核心硬件

CPU 是计算机中真正干活的人
内存 给CPU准备需要运行的代码
硬盘 永存存储将来可能要被运行的代码

  强调:CPU是整个计算机执行效率的核心


UDP协议

# 服务端
import socket
server = socket.socket(type=socket.SOCK_DGRAM)
server.bind(('127.0.0.1', 8080))
msg, address = server.recvfrom(1024)
print('msg>>>:%s' % msg.decode('utf8'))
print('address>>>:',address)
server.sendto('我是服务端 你好啊'.encode('utf8'), address)

# 客户端
import socket
client = socket.socket(type=socket.SOCK_DGRAM)
server_address = ('127.0.0.1', 8080)
client.sendto('我是客户端 想我了没'.encode('utf8'), server_address)
msg, address = client.recvfrom(1024)
print('msg>>>:%s' % msg.decode('utf8'))
print('address>>>:',address)

'''补充说明'''
1.服务端不需要考虑客户端是否异常退出
2.UDP不存在黏包问题(UDP多用于短消息的交互)

多道技术(前提:一个核/一个CPU/一个真正干活的)

单道技术:

  可以理解为线性,每个步骤一直走到底。

  

多道技术

  我们在进行程序与性的时候在接收程序A之后不是有一段空闲的时间嘛,我们让这段时间也不要空着,让他去接收程序B,以此类推

  

总结:

  多道技术比单道技术省时,而且大大提高了cpu的利用率

多道技术优化:(切换+保存状态)

1.切换

  1.当cpu在遇到IO操作的时候程序会有停止,我们也不能让cpu浪费这段时间,遇到IO操作可以让cpu去执行其他任务,等到IO操作结束后cpu再回来执行

  2.在我们长时间浏览同一个页面或其他时,会产生一个缓存,能让这个页面保留住,此时cpu就可以去执行其他任务了

CPU在两种下会切换(去执行其他程序)
        1.程序自身进入IO操作
            IO操作:输入输出操作
                获取用户输入
                time.sleep()
                读取文件
                保存文件
        2.程序长时间占用CPU

2.保存状态
        每次切换之前要记录下当前执行的状态 之后切回来基于当前状态继续执行


进程的概念

1.如何理解进程:

  程序:一堆躺在文件上的死代码(死的)
       进程:正在被运行的程序(活的)

2.进程的调度算法

先来先服务算法 针对耗时比较的程序不友好
短作业优先调度 针对耗时比较的程序不友好
时间片轮转法+多级反馈队列 将固定的时间均分成很多份 所有的程序来了都公平的分一份
分配多次之后如果还有程序需要运行 则将其分到下一层
越往下表示程序总耗时越长 每次分的时间片越多 但是优先级越低

时间片轮转法+多级反馈队列:

举个例子:程序A和程序B同时执行,A有1gb,B有0.5gb,第一层cpu会给他们分配一样的例如5s的时间,5s结束,A执行完了而B没有,A结束,那么B会在进入到下一层并且会再次给更多的时间例如10s,如果此时有C程序要加进来,那么B程序要回到第一层和C程序一起重新分配时间

 


进程的并行与并发

并行与并发:

并行 多个进程同时进行(必须要有多个CPU)
并发 多个进程看上去像同时执行就可以称之为并发(单个CPU完全可以实现并发的效果 如果是并行那么肯定也属于并发)

 


进程的三状态(就绪态,运行态,阻塞态)

就绪态 进程已分配到除CPU以外的所有必要的资源的进程状态称为就绪状态
运行态 程序正在处理机上执行的进程状态称为执行状态
阻塞态

正在执行的程序遇到了IO操作或者其他终止操作的进程状态称为阻塞态

当阻塞态完成了IO操作或其它操作会回到就绪态

  

 

1.所有的进程要想被运行 必须先经过就绪态
2.运行过程中如果出现了IO操作 则进入阻塞态
3.运行过程中如果时间片用完 则继续进入就绪态
4.阻塞态要想进入运行态必须先经过就绪态

 


阻塞与非阻塞(重要)

用于描述进程的执行状态

阻塞
    阻塞态
非阻塞
    就绪态 运行态


同步异步与阻塞非阻塞

同步 多个任务存在时,一个任务想要执行必须等上一个任务执行完毕
异步 不管上一个任务有没有完成,下一个任务都可以立即执行

同步异步阻塞非阻塞结合

同步阻塞 在银行排队 并且在队伍中什么事情都不做
同步非阻塞 在银行排队 并且在队伍中做点其他事
异步阻塞 取号 在旁边座位上等着叫号 期间不做事
异步非阻塞 取号 在旁边座位上等着叫号 期间为所欲为

总结:

  异步非阻塞是最理想的方式,同步阻塞是最费时费资源的方式

 

posted @   没错,干就完了!  阅读(156)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示