热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

socket套接字补充、操作系统发展史、进程

目录socket套接字之UDP协议操作系统的发展史手工操作批处理系统联机批处理系统脱机批处理系统多道技术进程理论并发与并行同步与异步阻塞与非阻塞同步异步与阻塞非阻塞总结socket

目录
  • socket套接字之UDP协议
  • 操作系统的发展史
    • 手工操作
    • 批处理系统
      • 联机批处理系统
      • 脱机批处理系统
  • 多道技术
  • 进程理论
  • 并发与并行
  • 同步与异步
  • 阻塞与非阻塞
  • 同步异步与阻塞非阻塞总结


socket套接字之UDP协议

在我们创建socket对象的时候,默认是使用TCP协议的,如果想要使用UDP协议,需要给个参数。

server = socket.socket(type=socket.SOCK_DGRAM)

如果使用了UDP协议,那么它的一些方法也会发生变化。

举例

服务端(Server)

import socket
server = socket.socket(type=socket.SOCK_DGRAM)
# 绑定ip地址和端口号不变
server.bind(('127.0.0.1', 8080))
# 接收消息的方法改变了,不与客户端进行连接就直接获取消息
msg, addr = server.recvfrom(1024)
print('来自客户端:', msg.decode('utf8'))
print('客户端地址:', addr)
# 发送消息的方法改变了,根据客户端地址发送
server.sendto('来自服务端的消息'.encode('utf8'), addr)

客户端(Client)

import socket
client = socket.socket(type=socket.SOCK_DGRAM)
# 可以先写个变量存储服务端地址,后续用起来方便
server_addr = ('127.0.0.1', 8080)
# 发送消息的方法改变了,根据服务端地址发送
client.sendto('来自客户端的消息'.encode('utf8'), server_addr)
# 接收消息的方法改变了,可以获取服务端的消息和地址
msg, addr = client.recvfrom(1024)
print('来自服务端:', msg.decode('utf8'))
print('服务端地址:', addr)

由于使用的是UDP协议,不会建立双向通道,所以可以启动多个客户端给服务端发送消息,服务端都会接收到,谁先发送消息服务端就会优先收到,并且使用UDP协议是不会发生黏包问题的。


操作系统的发展史

手工操作

程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片)后,才让下一个用户上机。

image

image

优点:用户独占全机,不会出现因资源已被其他用户占用而等待的现象。

缺点:CPU的利用不充分,资源的利用率低。


批处理系统

批处理系统:加载在计算机上的一个系统软件,在它的控制下,计算机能够自动地、成批地处理一个或多个用户的作业(这作业包括程序、数据和命令)。


联机批处理系统

主机与输入机之间增加一个存储设备——磁带,在运行于主机上的监督程序的自动控制下,计算机可自动完成:成批地把输入机上的用户作业读入磁带,依次把磁带上的用户作业读入主机内存并执行并把计算结果向输出机输出。完成了上一批作业后,监督程序又从输入机上输入另一批作业,保存在磁带上,并按上述步骤重复处理。

image

优点:不停地处理各个作业,从而实现了作业到作业的自动转接,减少了作业建立时间和手工操作时间,提高了计算机的利用率。

缺点:在作业输入和结果输出时,主机的高速CPU仍处于空闲状态,等待慢速的输入/输出设备完成工作


脱机批处理系统

为克服与缓解高速主机与慢速外设的矛盾,在联机批处理系统的基础上增加一台不与主机直接相连而专门用于与输入/输出设备打交道的卫星机。

image

优点:主机不是直接与慢速的输入/输出设备打交道,而是与速度相对较快的磁带机发生关系,有效缓解了主机与设备的矛盾。主机与卫星机可并行工作,二者分工明确,可以充分发挥主机的高速计算能力。

缺点:每次主机内存中仅存放一道作业,每当它运行期间发出输入/输出(I/O)请求后,高速的CPU便处于等待低速的I/O完成状态,致使CPU空闲。

脱机批处理系统就是现代计算机核心部件的雏形。

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


多道技术

首先多道技术的目的是为了提升CPU利用率,降低程序等待时间。

串行

在没有使用多道技术时,程序的执行是串行的——多个任务排队执行,上一个任务结束时才开始执行下一个任务,总耗时就是多个任务完整时间叠加。

image

多道

使用了多道技术后,计算机内存中会同时存放几道相互独立的程序,在一个程序执行过程中,利用空闲提前准备,缩短总的执行时间并且还能提高CPU利用率。

CPU在两种情况下会被拿走:



  1. 程序遇到IO操作,CPU自动切走运行其他程序。

  2. 程序长时间占用CPU,系统发现之后也会强行切走CPU,保证其他程序也可以使用。

image


进程理论

程序是一堆没有被执行的代码(死的),进程是正在运行的程序(活的)。有了进程这个概念就可以更加精确的描述出一些实际状态。

进程调度算法发展史

1.先来先服务

那个程序先执行就会先运行完这个程序,然后再去执行下一个,如果第一个进程需要100h才能执行完毕,那么第二个进程就需要等待100h,所以这个算法对短作业不太友好。

2.短作业优先

会优先执行那些耗时短的进程。如果短作业有好几个,长作业就会到最好执行,所以对长作业不太友好。

3.时间片轮转法与多级反馈队列

时间片轮转法:先公平的将CPU分给每个人执行。

多级反馈队列:根据作业长短的不同再合理分配CPU执行时间。

image

总的来说,进程调度算法的目的就是为了能够让单核的计算机也能够做到运行多个程序。


并发与并行

并发

并发是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。

简单的来说就是程序看上去像同时在执行就可以称之为是并发。

image

并行

并行是指在同一个时间段内,两个或多个程序执行,有时间上的重叠,必须同一时间同时运行才可以称之为并行。单核计算机肯定不能实现并行,必须要有多个CPU才能实现并行的效果。

image

拓展:高并发与高并行

高并发:如果我说我们写的软件可以支持1个亿的并发量,那么一个亿的用户来了之后都可以感觉到自己被服务着。

高并行:如果我说我们写的软件可以支持1个亿的并行量,这种明显是不可能的,这句话的言外之意就是计算机有一亿个CPU,这是目前做不到的。


同步与异步

同步指的是提交完任务之后原地等待任务的返回结果,期间不做任何事情。比如我喊你吃饭,你没有听到我就一直喊,喊道你回应我为止。

异步指的是提交完任务之后不愿地等待任务的结果,直接去做其他事情,有结果自动提醒。比如我喊你吃饭,我就去饭店了,不管你来不来。


阻塞与非阻塞

一个进程是有着三个状态的。

image

就绪态:程序之进入运行态之前肯定要处于就绪状态。

运行态:程序被CPU执行着。

阻塞态:程序执行过程中有IO操作,程序会等待。

阻塞就是处于阻塞态,非阻塞就是处于就绪态和运行态,所以如果想要尽可能的提升程序执行效率,就要想办法让我们的程序一直处于就绪态和运行态,就是不要有IO操作。


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

同步异步是用来描述任务的提交方式,阻塞非阻塞是用来描述任务的执行状态,所以我们可以结合出四种情况:

同步阻塞:相当于在银行排队办理业务,期间不做任何事。

同步非阻塞:相当于银行排队办理业务,期间喝水吃东西,但是人还在队列中

异步阻塞:相当于通过银行叫号方式等待办理业务,等待时在椅子上坐着,但是不做任何事。

异步非阻塞:相当于通过银行叫号方式等待办理业务,等待时在椅子上坐着,期间喝水吃东西办公。这个状态就是程序运行的极致。



推荐阅读
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
author-avatar
白羊幸福的佳佳
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有