为了确保计算机能够正常工作,必须提供数据通路,让信息在连接到个人计算机的CPU、RAM和I/O设备之间流动。

所有的计算机都拥有一条系统总线,它连接大部分内部硬件设备。任何I/O设备有且仅能连接一条总线。

CPU和I/O设备之间的数据通路通常称为I/O总线。每个I/O设备依次连接到I/O总线上,这种连接使用了包含3个元素的硬件组织层次:I/O端口、接口和设备控制器

每个连接到I/O总线上的设备都有自己的I/O地址集,通常称为I/O端口。在执行一条指令时,cpu使用地址总线选择所请求的I/O端口,使用数据总线在CPU寄存器和端口之间传递数据。

I/O端口还可以被映射到物理地址空间。因此,处理器和I/O设备之间的通信就可以使用对内存直接进行操作的汇编语言指令。

I/O接口是处理一组I/O端口和对应的设备控制器之间的一种硬件电路。它起翻译器的作用,即把I/O端口中值转换成设备所需要的命令和数据。

在相反的方向上,它检测设备状态的变化,并对起状态寄存器作用的I/O端口进行相应的更新。还可以通过一条IRP线把这种电路连接到可编程中断控制器上,以使它代表相应的设备发出中断请求。

复杂的设备可能需要一个设备控制器(device controller)来驱动。从本质来说,控制器起两个重要作用:

对从I/O接口接收到的高级命令进行解释,并通过向设备发送适当的电信号序列强制设备执行特定的操作;

对从设备接收到的电信号进行转换和适当地解释,并修改(通过I/O接口)状态寄存器的值。

典型的设备控制器是磁盘控制器,它从微处理器(通过I/O接口)接收诸如“写这个数据”之类的高级命令,并将其转换成诸如“把磁头定位在正确的磁道上”和“把数据写入这个磁道”之类的低级磁盘操作。

向io设备发出中断请求_深入理解linux内核 —— I/O设备连接相关推荐

  1. 向io设备发出中断请求_人们常说的计算机设备管理是什么,深入解读计算机设备管理...

    CPU在计算机中的任务繁多,虽然设备控制器大大的减少了CPU对I/O的干预设备,但是外设太多时,仍然会使CPU的负担很重.所以增设I/O通道设备的目的,就是为了建立独立的I/O操作,使数据的传送.I/ ...

  2. linux执行class文件_深入理解linux内核——可执行文件执行过程(2)

    接上篇.. 13.调用do_mmap()函数创建一个新线性区来对可执行文件正文段(即代码)进行映射.这个线性区的起始线性地址依赖于可执行文件的格式,因为程序的可执行代码通常是不可重定位的.因此,这个函 ...

  3. linux 文件可执行_深入理解linux内核——可执行文件执行过程(2)

    接上篇.. 13.调用do_mmap()函数创建一个新线性区来对可执行文件正文段(即代码)进行映射.这个线性区的起始线性地址依赖于可执行文件的格式,因为程序的可执行代码通常是不可重定位的.因此,这个函 ...

  4. 深入理解Linux内核(一)——Linux操作系统基础概念

    文章目录 前言 操作系统基本概念 多用户系统 用户和组 进程 内核体系结构 Unix文件系统概述 文件 硬链接和软链接 文件类型 文件描述符与索引节点 访问权限和文件模式 文件操作的系统调用 打开文件 ...

  5. linux read函数_浅谈Linux内核IO体系之磁盘IO

    前言 Linux I/O体系是Linux内核的重要组成部分,主要包含网络IO.磁盘IO等.基本所有的技术栈都需要与IO打交道,分布式存储系统更是如此.本文主要简单分析一下磁盘IO,看看一个IO请求从发 ...

  6. 深入理解 Linux 内核

    Linux 内核系列文章 Linux 内核设计与实现 深入理解 Linux 内核 深入理解 Linux 内核(二) Linux 设备驱动程序 Linux设备驱动开发详解 文章目录 Linux 内核系列 ...

  7. 深入理解Linux内核-内存管理

    页框管理 内核对整个物理内存进行分页,每页大小为4KB或者4MB(大小无所谓,不同os都可能不一样),一般认为Linux的页大小为4KB,内核必须记录好每个页框的信息,所以linux内核把所有的页框都 ...

  8. 《深入理解Linux内核》 读书笔记

    深入理解Linux内核 读书笔记 一.概论 操作系统基本概念 多用户系统 允许多个用户登录系统,不同用户之间的有私有的空间 用户和组 每个用于属于一个组,组的权限和其他人的权限,和拥有者的权限不一样. ...

  9. 深入理解Linux内核-第3版 译者序、前言、目录 内核2.6.11

    一.译者序 Linux是一个全新的世界,世界意味着博大精深,而新或许代表对旧的割舍和扬弃,加在一起,就是要我们在割舍和扬弃的同时还要积累知识到博大精深的地步,这容易做到吗?是的,这不容易做到.Gera ...

最新文章

  1. tsconfig.json编译选项
  2. 10.Azure应用程序网关(上)
  3. Centos中提示You have new mail in /var/spool/mail/root 解决
  4. oracle into多个变量,Oracle中merge into的使用:该命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据....
  5. QT入门注意事项(1)
  6. 多线程—事件Event
  7. html天气插件iframe,分享常用7款天气预报代码iframe嵌入网页方式
  8. 高并发系统 3 大利器之缓存
  9. 【转载】小米2进入recovery的方法
  10. Vue:vue中axios通过代理解决跨域
  11. (五十一)时间序列分析二:平稳时间序列分析(ARMA)
  12. rainmeter雨滴皮肤——万花筒
  13. 局域网ip扫描工具_树莓派无屏幕自动获取IP诸方法
  14. selenium中的driver各类方法介绍
  15. 黄一老师:什么是个人信用融资?
  16. 关于类的静态的模板函数的使用方式
  17. 微信小游戏申请注册流程+开发微信小游戏类目需要具备条件
  18. easyui下拉框值改变
  19. jeesite代码生成id出不来的解决方案
  20. 如何用U盘拷贝4G以上的文件?

热门文章

  1. 强制卸载Lync Server脱机的CMS并在新位置重建
  2. 【简报】帮助你免费制作单页面个人网站
  3. linux mmap实例_Linux下通过共享内存和mmap实现进程间通讯(含实例)
  4. vc 环境下mysql_windows-VC++6.0环境下C++链接MySQL数据库
  5. android访问服务器405,android – HTTP状态405 – 不允许的方法(jax-rs服务)
  6. 复制oracle9i数据库,Oracle 10g 中Duplicate 复制数据库
  7. 曼昆《经济学原理宏观》读书笔记
  8. 黄金三月,技术自检 | 作为测试人必备的10项 Linux 技能
  9. 从事测试的第6年 , 开工第二天五千字总结..我不平凡的2021
  10. QT4C-Windows自动化测试框架正式开源