2、PIO(编程输入/输出模型)和DAM(直接访问内存)

有必要简单地说下慢速I/O与内存之间的传输方式。

PIO:我们拿磁盘来说,很早之前,磁盘和内存之间的数据传输是需要CPU控制的,也就是说,如果我们读取磁盘文件到内存中,数据时需要经过CPU存储转发,这种方式称为PIO。显然这种方式是不合理的,因为它需要占用大量的CPU时间来读取文件,造成文件访问时系统几乎停止响应。

DMA:后来DMA(Direct Memory Access,直接内存访问)取代了PIO,它可以不经过CPU而直接进行磁盘和内存(内核空间)的数据交换。在DMA模式下,CPU只需要向DMA控制下达指令,让DMA控制器去处理数据的传输即可,DMA控制器通过系统总线来传输数据,传送完毕再通知CPU,这样在很大的程度上降低了CPU占有率,大大的节省了系统资源。而它的数据传输速度其实与PIO相差并不十分明显,因为这主要取决于慢速设备的速度。

可以肯定的是,PIO模式的计算机我们现在基本上见不着了 。

觉着老铁我写的还不错滴请继续关注下一章:缓存IO和直接IO

PIO(编程输入/输出模型)和DAM(直接访问内存)相关推荐

  1. C 语言编程 — 输入/输出与文件操作

    目录 文章目录 目录 前文列表 输入/输出 scanf() 和 printf() getchar() 和 putchar() 文件操作 打开文件 关闭文件 写入文件 读取文件 二进制 I/O 函数 前 ...

  2. 【《自动控制原理(田玉平)》|课本知识点整理(一)】第 2 章 控制系统的输入 - 输出模型

    文章目录 2.3.4 方框图化简 2.4 信号流图与梅森公式 2.4.1 信号流图 2.4.2 梅森公式 2.5 频率特性函数 2.5.1 频率特性函数的定义 2.5.2 频率特性的图示方法 1. 极 ...

  3. C语言学习之编程输入x,输出对应的y.

    试编程输入x,输出对应的y. #include <stdio.h> void main(){int x,y;printf("请输入一个数:\n");scanf(&quo ...

  4. moxy json介绍_MOXy的对象图– XML和JSON的输入/输出局部模型

    moxy json介绍 假设您有一个要公开为RESTful服务的域模型. 问题是您只想输入/输出部分数据. 以前,您将创建一个代表子集的单独模型,然后使用代码在模型之间移动数据. 在EclipseLi ...

  5. MOXy的对象图– XML和JSON的输入/输出局部模型

    假设您有一个要公开为RESTful服务的域模型. 问题是您只想输入/输出部分数据. 以前,您将创建一个代表子集的单独模型,然后使用代码在模型之间移动数据. 在EclipseLink 2.5.0中,我们 ...

  6. c语言编程输入a是输出为a_C ++编程基本输入,输出,数据类型,声明能力倾向问题和解答...

    c语言编程输入a是输出为a This section contains C++ programming Basic Input, Output, Data types, Declaration etc ...

  7. C++编程:输入/输出 I/O

    概要 C++ 标准库提供了一组丰富的输入/输出功能,本博客主要讨论 C++ 编程中最基本和最常见的 I/O 操作. C++ 的 I/O 发生在流中,流是字节序列.如果字节流是从设备(如键盘.磁盘驱动器 ...

  8. c语言输入一批正整数 求其中的偶数和,编程,输入一批整数,先求出其中的偶数和及奇数和,然后输出偶数和与奇数和的差...

    设计一个程序,要求输入三个整数,能求出其中最大的数并输出 #includeintmain{inti;inta1,a2,a3;printf("输入三个数:\n");scanf(&qu ...

  9. 【C语言】编程实现输出矩阵上/下三角的数值。要求:输入一个正整数n和n阶矩阵的数值,打印输出矩阵、下三角和上三角的数值。

    [问题描述]编程实现输出矩阵上/下三角的数值.要求:输入一个正整数n和n阶矩阵的数值,打印输出矩阵.下三角和上三角的数值. [输入输出样例] [样例说明] 输入提示符中冒号为英文符号,后面无空格. 输 ...

  10. 编程输入年份和月份,输出该月份有多少天。

    编程输入年份和月份,输出该月份有多少天. #include<stdio.h> int main(void) {int year,month;printf("请输入年份,月份:\n ...

最新文章

  1. 宏基因组分析技术研讨会第5期-最后3个名额,下周开课
  2. # 睡眠3秒_小儿睡眠呼吸暂停综合征
  3. php检测一个变量是否设置函数,php如何判断变量是否有设置的函数
  4. mac下sublime text的使用
  5. asp.net用url重写URLReWriter实现任意二级域名(续)
  6. 微信小程序按钮Button使用详解
  7. delphi.指针.应用----应用重要 多看 多练
  8. java 文件分割器_Java分割器
  9. simulink如何更新版本的文件(mdl或slx),How to load models created with a newer version of Simulink
  10. MySQL实现把两行两列数据合并为一行一列
  11. jsp调整字体大小font_html font标签如何设置字体大小?
  12. 也许尘埃落地,我们才能心平气和谈谈抖音多闪和聊天宝
  13. HEVC之CU\PU\TU
  14. (demo)springboot接口suger_整合_hbase+phoenix
  15. JAVA SE基础---kuangstudy
  16. 磁碟机变种简单分析(lsass.exe、smss.exe、dnsq.dll、NetApi000.sys)
  17. PotPlayer播放蓝光片源及如何硬解码和音频源码输出
  18. 1.3【展讯平台】Android 驱动(Kernel)、系统(framework) 定制,调试日志
  19. r语言 林元震_林木多地点半同胞子代测定遗传分析 R语言程序包及其应用
  20. 中国智慧商圈建设发展价值调研及投资潜力规划报告2022年版

热门文章

  1. 一文读懂配置管理(CM)
  2. 瑞金医院启动神经领域 AI 技术临床研究;好未来、清华大学成立研究中心,共建“AI+教育”智慧课堂...
  3. 宋体 ttf_Linux安装7种思源宋体的5个步骤
  4. oCPC实践录 | 成本优化策略之eCPC(3)
  5. 湖南大学14届新生赛--B--bearBabylovessleeping
  6. windows内核情景分析--窗口消息
  7. List求交集、补集
  8. 傅立叶级数到傅立叶变换推导与理解
  9. 浙江树人大学计算机大类专业分类,浙江树人学院各专业收费明细表
  10. php干货网,php高手干货【必看】