UDP协议、操作系统的发展史、多道技术、进程理论
2022/8/9 5:23:05
本文主要是介绍UDP协议、操作系统的发展史、多道技术、进程理论,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- 作业讲解
- UDP协议
- 操作系统的发展史
- 一、前提:三大核心硬件
- 二、发展史
- 1.穿孔卡片
- 2.联机批处理系统
- 3.脱机批处理系统
- 三、总结
- 多道技术
- 前提:一个核/一个CPU/一个真正干活的人
- 一、单道计数
- 二、多道技术
- 类比:
- 进程理论
- 一、如何理解进程
- 二、进程的调度算法
- 1.先来先服务算法
- 2.短作业优先调度
- 3.时间片轮转法+多级反馈队列
- 三、进程的并行与并发
- 1.并行
- 2.并发
- 3.如何描述一个网址非常牛逼,能够同时服务很多人
- a.我这个网站很牛逼,能够支持14亿并行量(高并行)
- b.我这个网站很牛逼,能够支持14亿并发量(高并发)
- 四、进程的三状态
- 五、同步和异步
- 1.作用
- 2.区别
- 六、阻塞于非阻塞
- 1.作用
- 2.区别
- 七、同步异步与阻塞非阻塞
作业讲解
上传电影 客户端 1.获取一个存有很多视频文件的路径 2.列举该路径所有的视频文件供用户选择 3.拼接出该视频文件的完整路径 4.制作字典数据 5.制作字典报头 6.发送报头 7.发送字典 8.发送视频文件 服务端 1.接收固定长度的报头 2.解析数据字典的长度并接收 3.解析字典获取真实数据长度 4.接受真实数据
UDP协议
# server 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('addr>>>:', 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('addr>>>:', address) '''补充说明''' 1.服务端不需要考虑客户端是否异常退出 2.UDP不存在粘包现象(UDP多用于短消息的交互)
操作系统的发展史
一、前提:三大核心硬件
CPU:是计算机中真正干活的人(强调:CPU是整个计算机执行效率的核心)
内存:给CPU准备需要运行的代码
硬盘:永久存储将来可能运行的代码
二、发展史
1.穿孔卡片
CPU利用率非常低
好处是程序员可以一个人独占计算机
2.联机批处理系统
缩短录入数据的时候,让CPU连续工作的时间变长>>>:提升CPU利用率
3.脱机批处理系统
是现代计算机的雏形>>>:提升CPU利用率
三、总结
操作系统的发展史也可以看成是CPU利用率提升的发展史
多道技术
前提:一个核/一个CPU/一个真正干活的人
一、单道计数
所有程序排队执行,总耗时是所有程序耗时之和
二、多道技术
计算机利用空闲时间提前准备好一些数据,提高效率,总耗时短
类比:
做饭耗时50min、洗衣耗时30min、烧水耗时10min
单道技术:50+30+10
多道技术:50
切换+保存状态 1.CPU在两种情况下会切换(去执行别的程序) 1.1.程序自身进入IO操作 IO操作:输入输出操作 获取用户输入 time.sleep() 读取文件 保存文件 1.2.程序长时间占用CPU 2.保存状态 每次切换之前要记录下当前执行的状态,之后切回来基于当前状态继续执行
进程理论
一、如何理解进程
程序:一堆躺在文件上的死代码
进程:正在被运行的程序(活的)
二、进程的调度算法
1.先来先服务算法
针对耗时比较短的程序不友好
2.短作业优先调度
针对耗时较长的程序不友好
3.时间片轮转法+多级反馈队列
将固定的时间均分成很多份,所有的程序来了都公平的分一份
多次分配后,如果还有程序需要运行,则将其分到下一层
越往下表示程序总耗时越长,每次分的时间片越多,但是优先级越低
三、进程的并行与并发
1.并行
多个进程同时执行
单个CPU无法实现,必须要有多个CPU
2.并发
多个进程看上去像同时执行就可以称之为并发
单个CPU完全可以实现并发的效果,如果并行那么也属于并发
3.如何描述一个网址非常牛逼,能够同时服务很多人
a.我这个网站很牛逼,能够支持14亿并行量(高并行)
不合理,哪有那么多CPU(集群也不现实)
b.我这个网站很牛逼,能够支持14亿并发量(高并发)
非常合理!!! 国内最牛逼的网站>>>:12306
四、进程的三状态
1.所有的进程想要被运行,必须经过就绪态
2.运行过程中如果出现了IO操作则进入阻塞态
3.运行过程中如果时间片用完,则继续进入就绪态
4.阻塞态要想进入运行状态必须经过就绪态
五、同步和异步
1.作用
用于描述任务的提交状态
2.区别
同步 | 异步 |
---|---|
提交完任务之后原地等待任务的结果,期间不做任何事 | 提交完任务之后不原地等待直接去做其他事,结果自动提醒 |
六、阻塞于非阻塞
1.作用
用于描述进程的执行状态
2.区别
阻塞 | 非阻塞 |
---|---|
阻塞态 | 就绪态、运行态 |
七、同步异步与阻塞非阻塞
类型 | 意义 |
---|---|
同步阻塞 | 在排队过程中,什么都不做 |
同步非阻塞 | 在排队过程中,做点别的事 |
异步阻塞 | 取号,在边上等着被叫号,期间什么都不做 |
异步非阻塞 | 取号,在边上等着被叫号,期间想做什么做什么 |
这篇关于UDP协议、操作系统的发展史、多道技术、进程理论的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南