进程与操作系统

本章内容

  • UDP协议
  • UDP协议实战
  • 操作系统的发展史
  • 多道技术
  • 进程理论
  • 并发与异步

UDP协议

服务端

import socket
server = socket.socket(type=socket.SOCK_DGRAM)
server.bind(('127.0.0.1',8080))
msg1,addr1 = server.recvfrom(1024)
msg2,addr2 = server.recvfrom(1024)
msg3,addr3 = server.recvfrom(1024)
print(msg1.decode('utf8'))
print(msg2.decode('utf8'))
print(msg3.decode('utf8'))

客户端

import socket
client = socket.socket(type=socket.SOCK_DGRAM)
client.connect(('127.0.0.1',8080))
client.send('啊哈哈哈'.encode('utf8'))
client.send('啊哈哈哈'.encode('utf8'))
client.send('啊哈哈哈'.encode('utf8'))

UDP 协议不会出现粘包现象

操作系统的发展史

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

2.联机批处理系统
一次性可以录入多个用户指令、缩短了CPU等待的时间、提高了CPU 的利用率

3.脱机批处理系统
是现代计算机核心部件的雏形、提高CPU的利用率

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

多道技术

目的:提升CPU利用率 降低程序的等待时间

串行:多个任务排队执行,总耗时就是多个任务完整时间叠加

多道:利用空闲提前准备 缩短总的执行时间并且还能提高CPU利用率

多道技术: 所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行。即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬、软件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。

img

在A程序计算时,I/O空闲, A程序I/O操作时,CPU空闲(B程序也是同样);必须A工作完成后,B才能进入内存中开始工作,两者是串行的,全部完成共需时间=T1+T2。

img

​ 将A、B两道程序同时存放在内存中,它们在系统的控制下,可相互穿插、交替地在CPU上运行:当A程序因请求I/O操作而放弃CPU时,B程序就可占用CPU运行,这样 CPU不再空闲,而正进行A I/O操作的I/O设备也不空闲,显然,CPU和I/O设备都处于“忙”状态,大大提高了资源的利用率,从而也提高了系统的效率,A、B全部完成所需时间<<T1+T2。

多道程序设计技术不仅使CPU得到充分利用,同时改善I/O设备和内存的利用率,从而提高了整个系统的资源利用率和系统吞吐量(单位时间内处理作业(程序)的个数),最终提高了整个系统的效率。

单处理机系统中多道程序运行时的特点:

  (1)多道:计算机内存中同时存放几道相互独立的程序;

  (2)宏观上并行:同时进入系统的几道程序都处于运行过程中,即 它们先后开始了各自的运行,但都未运行完毕;

  (3)微观上串行:实际上,各道程序轮流地用CPU,并交替运行。

多道程序系统的出现,标志着操作系统渐趋成熟的阶段,先后出现了作业调度管理、处理机管理、存储器管理、外部设备管理、文件系统管理等功能。

由于多个程序同时在计算机中运行,开始有了空间隔离的概念,只有内存空间的隔离,才能让数据更加安全、稳定。

出了空间隔离之外,多道技术还第一次体现了时空复用的特点,遇到IO操作就切换程序,使得cpu的利用率提高了,计算机的工作效率也随之提高。

进程理论

1.什么是进程

程序:一堆没有被执行的代码(死的)

进程:正在运行的程序(活的)

2.进程调度算法发展史

​ 2.1.先来先服务
对短作业任务不太友好
​ 2.2.短作业优先
多长作业任务不太友好
​ 2.3.时间片轮转法与多级反馈队列
时间片轮转法:先公平的将CPU分给每个人执行
​ 多级反馈队列:根据作业长短的不同再合理分配CPU执行时间

这么做就是为了能够让单核的计算机也能够做到运行多个程序

并发与并行

# 并发与并行
  并发
  	看上去像同时在执行就可以称之为是并发
    """
    饭店里面有多桌客人(任务) 
    但是只有一个服务员(CPU) 
    如何让所有客人都感觉被服务员服务着(CPU执行)
      让服务员在多桌客人之间快速的来回切换并保存状态即可
      让CPU在多个程序之间利用多道技术来回切换+保存状态
	
		单核肯定能够实现并发 但是不能实现并行!!!
    """
  并行
  	必须同一时间同时运行才可以称之为并行
		"""单核计算机肯定不能实现并行!!! 必须要有多个CPU"""
    
# 高并发与高并行
  高并发:我们写的软件可以支持1个亿的并发量
    	一个亿的用户来了之后都可以感觉到自己被服务着
  高并行:我们写的软件可以支持1个亿的并行量
    	上述话语的言外之意是计算机有一亿个CPU

同步与异步

# 同步与异步
  同步
  	提交完任务之后原地等待任务的返回结果 期间不做任何事情
  异步
  	提交完任务之后不愿地等待任务的结果 直接去做其他事情 有结果自动提醒
 
# 阻塞与非阻塞
	进程三状态图
  	就绪态:程序之进入运行态之前肯定要处于就绪态
    运行态:程序被CPU执行着
    阻塞态:程序执行过程中有IO操作
    '''
    如果想要尽可能的提升程序执行效率 
    就要想办法让我们的程序一直处于就绪态和运行态(不要有IO操作)
    '''
  阻塞:阻塞态
  非阻塞:就绪态、运行态

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

同步异步:用来描述任务的提交方式
阻塞非阻塞:用来描述任务的执行状态
# 上述两组属于两个不同概念 但是可以结合
  同步阻塞:银行排队办理业务 期间不做任何事
  同步非阻塞:银行排队办理业务 期间喝水吃东西 但是人还在队列中
  异步阻塞:在椅子上坐着 但是不做任何事
  异步非阻塞:在椅子上坐着 期间喝水吃东西办公	(程序运行的极致)
posted @ 2022-04-18 16:41  DDYT  阅读(70)  评论(0)    收藏  举报