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协议、操作系统的发展史、多道技术、进程理论的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程