UDP协议

# 客户端
import socket
server = socket.socket(type=socket.SOCK_DGRAM)
server.bind(('127.0.0.1', 8888))
msg, addr = server.recvfrom(1024)
print(msg.decode('utf8'))
print(addr)
server.sendto(b'hello lisw', addr) # 服务端
import socket
client = socket.socket(type=socket.SOCK_DGRAM)
server_addr = ('127.0.0.1', 8888)
client.sendto(b'hello', server_addr)
msg, addr = client.recvfrom(1024)
print(msg.decode('utf8'))
print(addr)

基于UDP实现简易版本的qq

# 服务端
import socket server = socket.socket(type=socket.SOCK_DGRAM)
server.bind(('127.0.0.1', 8888))
while True:
msg, addr = server.recvfrom(1024)
print(addr)
print(msg.decode('utf8'))
back_msg = input('请回复消息:').strip()
server.sendto(back_msg.encode('utf8'), addr)
# 客户端
import socket client = socket.socket(type=socket.SOCK_DGRAM)
server_addr = ('127.0.0.1', 8888) while True:
msg = input('请输入内容:').strip()
msg = '来自客户端:%s' % msg
client.sendto(msg.encode('utf8'), server_addr)
msg, addr = client.recvfrom(1024)
print(msg.decode('utf8'), addr)

操作系统的发展史

1.穿孔卡片
一个人用电脑,cpu利用率极低
2.联机批量处理
一次性多次输入读个用户指令,缩短了cpu等待的时间,提高了cpu的利用率
3.脱机批处理系统
现代计算机的核心部雏形,提高cpu利用率 # 发展史就是提高cpu的利用率的过程

多道技术

所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行。即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬、软件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。
# 主要是提高cpu利用率,降低程序等待时间
单个cpu情况下
串行:多个任务排队执行 总耗时就是多个任务完整时间叠加
多道:利用空闲时间提前准备 缩短利用率 提高cup利用率
空间上的复用
多个任务共用一套计算机硬件
时间上的复用
切换加保存状态
俩种拿走的情况
1.程序遇到io操作 会被拿走
2.程序长时间被占用 强项切换 保证其他程序使用

进化理论

程序:一堆没有被执行的代码
进程:正在运行的程序
进程是为了更好描述一些状态
发展史:
先来先服务 短作业优先 时间片论法与多级反馈队列
# 时间片论法与多级反馈队列
先公平的将cup分给每个人执行
根据作业短的不同在合理分配cpu执行时间
主要是为能够让单核的计算机也能做到运行多个程序

并发与并行

并发:看上去是同时进行的执行称为并发
并行:必须是同时进行情况是并行
单核计算机不可能实现,必须要有多个cpu
高并发:编写支持一个亿的并发量, 一个亿的用户都感觉被服务
高并行:一个亿的并行量 必须有一一个亿的cpu

同步与异步

# 同步与异步
同步
提交完任务之后原地等待任务的返回结果 期间不做任何事情
异步
提交完任务之后不愿地等待任务的结果 直接去做其他事情 有结果自动提醒

阻塞与非阻塞

# 阻塞与非阻塞
进程三状态图
就绪态:程序之进入运行态之前肯定要处于就绪态
运行态:程序被CPU执行着
阻塞态:程序执行过程中有IO操作
'''
如果想要尽可能的提升程序执行效率
就要想办法让我们的程序一直处于就绪态和运行态(不要有IO操作)
'''
阻塞:阻塞态
非阻塞:就绪态、运行态

同步异步与阻塞非阻塞结合

同步异步:用来描述任务的提交方式
阻塞非阻塞:用来描述任务的执行状态
# 上述两组属于两个不同概念 但是可以结合
同步阻塞:银行排队办理业务 期间不做任何事
同步非阻塞:银行排队办理业务 期间喝水吃东西 但是人还在队列中
异步阻塞:在椅子上坐着 但是不做任何事
异步非阻塞:在椅子上坐着 期间喝水吃东西办公 (程序运行的极致)

UDP协议、操作系统、同步与异步、阻塞与非阻塞的更多相关文章

  1. UDP协议,多道技术,进程,同步与异步,阻塞与非阻塞

    UDP协议 简介 UDP叫做用户数据报协议,是OSI七层参考模型中传输层使用的协议,他提供的是不可靠传输,既它在传输过程 中不保证数据的完整性! 端口号 UDP使用IP地址和端口号进行标识,以此将数据 ...

  2. python全栈开发day31-操作系统介绍,异步、同步、阻塞、非阻塞,进程

    一.网络编程内容回顾 1.arp协议 #交换机 #广播.单播 2.ip协议 3.tcp和udp协议 tcp:可靠的,面向连接的,字节流传输,长连接 三次握手:一方发送请求,另一方确认请求同时发送请求, ...

  3. 正确理解这四个重要且容易混乱的知识点:异步,同步,阻塞,非阻塞,5种IO模型

    本文讨论的背景是Linux环境下的network IO,同步IO和异步IO,阻塞IO和非阻塞IO分别是什么 概念说明 在进行解释之前,首先要说明几个概念: - 用户空间和内核空间 - 进程切换 - 进 ...

  4. python学习笔记-(十四)I/O多路复用 阻塞、非阻塞、同步、异步

    1. 概念说明 1.1 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方).操作系统的核心是内核,独立于普通的应用程序,可 ...

  5. 同步IO,异步IO,阻塞IO,非阻塞IO

    同步(synchronous):一个进程在执行某个任务时,另外一个进程必须等待其执行完毕,才能继续执行 #所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不会返回.按照这个定义, 其实 ...

  6. 关于同步,异步,阻塞,非阻塞,IOCP/epoll,select/poll,AIO ,NIO ,BIO的总结

    相关资料 IO基本概念 Linux环境 同步异步阻塞非阻塞 同步与异步 阻塞与非阻塞 IO模型Reference Link 阻塞IO模型 非阻塞IO模型 IO复用模型 信号驱动异步IO模型 异步IO模 ...

  7. 【python】-- 事件驱动介绍、阻塞IO, 非阻塞IO, 同步IO,异步IO介绍

    事件驱动介绍 一.前言 通常,我们写服务器处理模型的程序时,有以下几种模型: (1)每收到一个请求,创建一个新的进程,来处理该请求: (2)每收到一个请求,创建一个新的线程,来处理该请求: (3)每收 ...

  8. Python学习-day10(番外篇) 阻塞IO 非阻塞IO 同步IO 异步IO

    这个章节的内容是关于IO的概念,谈一谈什么是 阻塞IO 非阻塞IO 同步IO 异步IO.以下摘要是我对这四种IO的一个形象理解. 场景是去去银行办理业务.节点有三个,1)到银行提交申请:2)取号:3) ...

  9. AIO,BIO,NIO,IO复用,同步,异步,阻塞和非阻塞

    (1)什么是NIO(Non-blocked IO),AIO,BIO (2) 区别 (3)select 与 epoll,poll区别 1.什么是socket?什么是I/O操作? 什么是socket? 实 ...

随机推荐

  1. 制作任意波形发生器MAX038

  2. 5V转10.5V原理图

  3. UP9616移动电源快充案例

    第一版的UP9616快充(地址在此 ),从选料到线路板的布局走线都还算不错,实现了当初定下的设计目标,但也有一点小小的遗憾,就是在输出滤波电容这里有点随便了,为了弥补这个遗憾,秉着工程师的" ...

  4. 「入门篇」初识JVM (下下) - GC

    垃圾收集主要是针对堆和方法区进行:程序计数器.虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于> 线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收. GC - J ...

  5. 创建axios拦截器

    上一篇说axios并发的时候有提到 axios的请求统一管理是为了创建拦截器 具体说一下拦截器的创建 import Vue from 'vue'; import axios from 'axios'; ...

  6. 从CSS盒子模型说起

    前言 总括: 对于盒子模型,BFC,IFC和外边距合并等概念和问题的总结 原文地址:从CSS盒子模型说起 知乎专栏:前端进击者 博主博客地址:Damonare的个人博客 为学之道,莫先于穷理:穷理之要 ...

  7. 【uniapp 开发】文字缩略css

    文字超出两行后显示省略号 display: -webkit-box; overflow: hidden; text-overflow: ellipsis; word-wrap: break-word; ...

  8. 利用Docker快速部署Mysql

    写在前面 我又来更新了~~~,今天内容较少,主要是利用Docker快速部署Mysql和初始化数据 利用Docker下载Mysql 简洁明了,在命令提示符中输入 docker pull mysql:8. ...

  9. Spring-注入方式(基于xml方式)

    1.基于xml方式创建对象 <!--配置User类对象的创建 --> <bean id="user" class="com.at.spring5.Use ...

  10. k8s,coredns内部测试node节点上的pod的calico是否正常的一个小技巧

    最近由于master整个挂掉,导致相关一些基础服务瘫掉,修复中测试有些节点网络又出现不通的情况正常的启动相关一些服务后,测试一些节点,比较费劲,还有进入pod,以及还有可能涉及命名空间操作这里可以这样 ...