ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

UDP、操作系统发展史、进程

2022-04-19 01:33:39  阅读:220  来源: 互联网

标签:addr UDP 发展史 操作系统 阻塞 server msg CPU socket


UDP协议

# 服务端
import socket

server = socket.socket(type=socket.SOCK_DGRAM)  # 指定为udp协议(默认tcp)
server.bind(('127.0.0.1', 8080))

msg, addr = server.recvfrom(1024)
print('msg>>>:', msg.decode('utf8'))
print('addr>>>:', addr)
server.sendto(b'csb', addr)


# 客户端
import socket

client = socket.socket(type=socket.SOCK_DGRAM)

server_addr = ('127.0.0.1', 8080)
client.sendto(b'qiubabimunieniu', server_addr)
msg, addr = client.recvfrom(1024)
print('msg>>>:', msg.decode('utf8'))
print('addr>>>:', addr)


# 实现简易聊天室
# 服务端
import socket

server = socket.socket(type=socket.SOCK_DGRAM)
server.bind(('127.0.0.1', 8080))
while True:
    msg, addr = server.recvfrom(1024)
    print(addr)
    print(msg.decode('utf8'))
    back_msg = input('请回复>>>:').strip()
    server.sendto(back_msg.encode('utf8'), addr)


# 客户端1
import socket

client = socket.socket(type=socket.SOCK_DGRAM)
server_addr = ('127.0.0.1', 8080)

while True:
    msg = input('请发送>>>:').strip()
    msg = '来自1  %s'%msg
    client.sendto(msg.encode('utf8'), server_addr)
    msg, addr = client.recvfrom(1024)
    print(msg.decode('utf8'), addr)
    
# 客户端2
import socket

client = socket.socket(type=socket.SOCK_DGRAM)
server_addr = ('127.0.0.1', 8080)

while True:
    msg = input('请发送>>>:').strip()
    msg = '来自2  %s'%msg
    client.sendto(msg.encode('utf8'), server_addr)
    msg, addr = client.recvfrom(1024)
    print(msg.decode('utf8'), addr)

操作系统的发展史

# 操作系统的发展史其实就是提升CPU利用率的过程

1.穿孔卡片
	优势:一个人独占电脑
  	劣势:CPU利用率极低

2.联机批处理系统
	一次性可以录入多个用户指令、缩短了CPU等待的时间、提高了CPU的利用率
  
3.脱机批处理系统
	是现代计算机核心部件的雏形、提高CPU的利用率

多道技术

# 目的:提升CPU利用率 降低程序等待时间
'单核情况下'
串行
	多个任务排队执行 总耗时就是多个任务完整时间叠加
多道
	利用空闲提前准备 缩短总的执行时间并且还能提高CPU利用率
    
"""
多道技术
	1.空间上的复用
		多个任务共用一套计算机硬件
	2.时间上的复用
		切换+保存状态
			CPU在两种情况下会被拿走
				1.程序遇到IO操作 CPU自动切走运行其他程序
				2.程序长时间占用CPU 系统发现之后也会强行切走CPU 保证其他程序也可以使用
"""   

类比:
做饭需要30min
洗衣需要50min
烧水需要20min
串行总共需要耗时:30min + 50min + 20min
多道总共需要耗时:50min

进程理论

# 什么是程序、什么是进程
	程序:一堆没有被执行的代码(死的)
  进程:正在运行的程序(活的)
    
# 为什么有进程的概念
	就是为了更加精确的描述出一些实际状态

# 进程调度算法发展史
  1.先来先服务
  	对短作业任务不太友好
  2.短作业优先
  	多长作业任务不太友好
  3.时间片轮转法与多级反馈队列
  	时间片轮转法:先公平的将CPU分给每个人执行
    多级反馈队列:根据作业长短的不同再合理分配CPU执行时间
  '''目的就是为了能够让单核的计算机也能够做到运行多个程序'''

重要概念

# 并发与并行
	并发
  	看上去像同时在执行就可以称之为是并发
 	并行
  	必须同一时间同时运行才可以称之为并行   
    
# 高并发与高并行
	高并发:我们写的软件可以支持1个亿的并发量
    	一个亿的用户来了之后都可以感觉到自己被服务着
  高并行:我们写的软件可以支持1个亿的并行量
    	上述话语的言外之意是计算机有一亿个CPU    
        
 # 同步与异步
	同步
  	提交完任务之后原地等待任务的返回结果 期间不做任何事情
  异步
  	提交完任务之后不愿地等待任务的结果 直接去做其他事情 有结果自动提醒
 
# 阻塞与非阻塞
	进程三状态图
  	就绪态:程序之进入运行态之前肯定要处于就绪态
    运行态:程序被CPU执行着
    阻塞态:程序执行过程中有IO操作
    '''
    如果想要尽可能的提升程序执行效率 
    就要想办法让我们的程序一直处于就绪态和运行态(不要有IO操作)
    '''
  阻塞:阻塞态
  非阻塞:就绪态、运行态
       

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

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

标签:addr,UDP,发展史,操作系统,阻塞,server,msg,CPU,socket
来源: https://www.cnblogs.com/run-fast-hit-fast-win-fast/p/16163564.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有