欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

关于I/O编程

程序员文章站 2022-12-28 12:28:00
IO在计算机中指Input/Output,也就是输入和输出 由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等,就需要IO接口 IO编程中,有一个很重要的概念叫Stream(流),可想象其是一个水管,数据就是水管里的水,但是只能单向流动 I ......

 

io在计算机中指input/output,也就是输入和输出
由于程序和运行时数据是在内存中驻留,由cpu这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等,就需要io接口

io编程中,有一个很重要的概念叫stream(流),可想象其是一个水管,数据就是水管里的水,但是只能单向流动
input stream就是数据从外面(磁盘、网络)流进内存,output stream就是数据从内存流到外面去
对于浏览网页来说,浏览器和新浪服务器之间至少需要建立两根水管,才可以既能发数据,又能收数据

由于cpu和内存的速度远远高于外设的速度,因此会存在严重的速度不匹配问题
例如,要把100m的数据写入磁盘,cpu输出100m的数据只需要0.01秒,可是磁盘要接收这100m数据可能需要10秒,对此有两种办法:
  第一种是同步io,就是让cpu等待,即程序暂停执行后续代码,等100m的数据在10秒后写入磁盘,再接着往下执行
  第二种是异步io,就是不让cpu等待,即程序继续执行后续代码,至于100m的数据让其慢慢往磁盘写

异步io的性能远远高于同步io,但是复杂程度也远远高于同步io
异步io主要有以下两种模式:
  回调模式
  轮询模式

操作io的能力都是由操作系统提供的,每一种编程语言(包括python)都会把操作系统提供的低级c接口封装起来方便使用