UDP协议、操作系统、同步与异步、阻塞与非阻塞
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协议、操作系统、同步与异步、阻塞与非阻塞的更多相关文章
- UDP协议,多道技术,进程,同步与异步,阻塞与非阻塞
UDP协议 简介 UDP叫做用户数据报协议,是OSI七层参考模型中传输层使用的协议,他提供的是不可靠传输,既它在传输过程 中不保证数据的完整性! 端口号 UDP使用IP地址和端口号进行标识,以此将数据 ...
- python全栈开发day31-操作系统介绍,异步、同步、阻塞、非阻塞,进程
一.网络编程内容回顾 1.arp协议 #交换机 #广播.单播 2.ip协议 3.tcp和udp协议 tcp:可靠的,面向连接的,字节流传输,长连接 三次握手:一方发送请求,另一方确认请求同时发送请求, ...
- 正确理解这四个重要且容易混乱的知识点:异步,同步,阻塞,非阻塞,5种IO模型
本文讨论的背景是Linux环境下的network IO,同步IO和异步IO,阻塞IO和非阻塞IO分别是什么 概念说明 在进行解释之前,首先要说明几个概念: - 用户空间和内核空间 - 进程切换 - 进 ...
- python学习笔记-(十四)I/O多路复用 阻塞、非阻塞、同步、异步
1. 概念说明 1.1 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方).操作系统的核心是内核,独立于普通的应用程序,可 ...
- 同步IO,异步IO,阻塞IO,非阻塞IO
同步(synchronous):一个进程在执行某个任务时,另外一个进程必须等待其执行完毕,才能继续执行 #所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不会返回.按照这个定义, 其实 ...
- 关于同步,异步,阻塞,非阻塞,IOCP/epoll,select/poll,AIO ,NIO ,BIO的总结
相关资料 IO基本概念 Linux环境 同步异步阻塞非阻塞 同步与异步 阻塞与非阻塞 IO模型Reference Link 阻塞IO模型 非阻塞IO模型 IO复用模型 信号驱动异步IO模型 异步IO模 ...
- 【python】-- 事件驱动介绍、阻塞IO, 非阻塞IO, 同步IO,异步IO介绍
事件驱动介绍 一.前言 通常,我们写服务器处理模型的程序时,有以下几种模型: (1)每收到一个请求,创建一个新的进程,来处理该请求: (2)每收到一个请求,创建一个新的线程,来处理该请求: (3)每收 ...
- Python学习-day10(番外篇) 阻塞IO 非阻塞IO 同步IO 异步IO
这个章节的内容是关于IO的概念,谈一谈什么是 阻塞IO 非阻塞IO 同步IO 异步IO.以下摘要是我对这四种IO的一个形象理解. 场景是去去银行办理业务.节点有三个,1)到银行提交申请:2)取号:3) ...
- AIO,BIO,NIO,IO复用,同步,异步,阻塞和非阻塞
(1)什么是NIO(Non-blocked IO),AIO,BIO (2) 区别 (3)select 与 epoll,poll区别 1.什么是socket?什么是I/O操作? 什么是socket? 实 ...
随机推荐
- Mybatis 开发 dao 的方法
1.分析SqlSession使用范围 1.1.SqlSessionFactoryBuilder 通过 SqlSessionFactoryBuilder 创建会话工厂 SqlSessionFactory ...
- hadoop 分布式系统与Hadoop MapReduce
Hadoop分为两部分 Hadoop MapReduce和Hadoop分布式文件系统 1分布式系统由Master Node 和多台 slave Node组成. 1.1MasterNode Master ...
- django REST框架- Django-ninja
Django 是我学习的最早的web框架,大概在2014年,当时选他原因也很简单就是网上资料比较丰富,自然是遇到问题更容易找答案,直到 2018年真正开始拿django做项目,才对他有了更全面的了解. ...
- vue配置请求转发解决跨域问题
通过nodejs的请求转发到后台,前端地址:http://localhost:8080 后端地址:http://localhost:8081 vue.config.js内容如下: let prox ...
- Android限制输入框内容
<EditText android:id="@+id/temper" android:hint="36.2" android:digits="1 ...
- Java 多选框的全选、多选、反选(JQuery 实现)
jQuery 实现全选.多选.反选 学习内容: 需求 总结: 学习内容: 需求 jQuery 实现全选.多选.反选 实现代码 <!DOCTYPE html> <html lang=& ...
- in a frame because it set 'X-Frame-Options' to 'sameorigin'
不是所有网站都给 iframe嵌套的, 有的网站设置了 禁止嵌套!!! 浏览器会依据X-Frame-Options的值来控制iframe框架的页面是否允许加载显示出来, 看你们公司这么设置了!! ...
- docker更新portainer-ce2.0
前两天,我在使用portainer的过程中发现左下角提醒有新版本的portainer需要安装,google了一圈如何升级portainer,并没有找到我需要的资料,就算获取了portainer:las ...
- 小白文-Git-版本控制
推荐阅读 Git学习-图文并茂还有游戏玩! Git版本控制 注意:开始学习之前,确保自己的网络可以畅通的连接Github:https://github.com,这个是一个国外网站,连起来特别卡,至于用 ...
- 安卓记账本开发学习day7之完成进度
支持长按删除记录,与根据备注搜索相关的收入或支出情况