操作系统如何与外部设备交互
计算机硬件系统架构:
实际上,IO总线又可以分为常规IO总线和外围IO总线,常规IO总线是离CPU比较近的总线,即主要用于对时延要求高的设备,比如说显示器;外围总线相反。
设备控制器:
磁盘有磁盘控制器,打印机有打印机控制器,显卡有显卡控制器,键盘鼠标也有自己的控制器…
CPU是不会直接去和这些设备打交道的,对于这些各种各样的外部设备都是由设备控制器去进行控制的
拿打印机的设备控制器来举例子,打印机设备控制器主要分为两大部分,寄存器部分和接口控制电路。
其中寄存器分为命令寄存器,数据寄存器,状态寄存器等:
- 命令寄存器:设备需要执行的某个具体的操作或者任务
- 数据寄存器:操作的数据,可以是CPU要给设备的数据,也可以是设备返回的数据
- 状态寄存器:用于存储当前设备状态,如忙碌或者就绪状态
举例CPU通过设备控制器和打印机做交互:
主要可以划分为以下几步:
- CPU查看状态寄存器的值,来判断设备的状态。假如设备的状态是BUSY,说明设备正在工作,不可使用,CPU可以通过轮询或者忙等待的方式继续查看设备的状态,直到状态为READY,转到第2步;假如设备的状态是READY,转到第2步;
- 向设备的数据寄存器写入数据,同时将状态寄存器转换成BUSY状态;
- 下发命令,将需要执行的命令写入到命令寄存器中;
- 设备控制器执行命令;
- 完成命令,将状态寄存器的状态设置为READY。
问题:
1.CPU给设备控制器的寄存器发送数据时,CPU是怎么找到要发送的给那个寄存器呢?
答:端口映射IO,或者给每个寄存器进行编址(内存映射IO).
如CPU会给每个寄存器分配一个端口,如数据寄存器端口是0X03A1,数据寄存器的端口是0X03B0等…
2.CPU通过什么指令将数据给到设备控制的各个寄存器?
答:使用IN(从外部设备控制器读取数据) OUT(内存数据写入设备控制器)等指令,
如将CPU中寄存器eax中的数据写到数据寄存器中,OUT 0X03B0 EAX
即可
当然IN OUT都是内核态的指令,设备控制器是内核态的代码,可以执行这些指令是不奇怪的。
我们用户态的应用程序是通过系统调用,将数据和指令传递给内核,进入内核态,由内核代码完成命令的下发和执行,最终完成设备控制器的工作。
总结:缺点
缺点一:轮询查状态,低效,使用中断机制替代
以上过程CPU全程参与了整个工作过程,CPU可能需要不断的在查询设备状态时,不断的轮询,会造成CPU时间片的浪费。
实际上,现在设备控制器会使用中断机制来处理该问题,当CPU看到设备的状态是BUSY,那么将会转去做别的事儿,当设备状态转为READ时,设备控制器会给CPU发送一个中断信号,通知告诉CPU,我当前时READY状态,可以使用,CPU接下来查询中断向量表,调用相应的中断服务程序,对相应设备控制器进行下发指令,完成相应的任务。
实际上,我们的系统中充斥着种种的中断,因为中断多数情况下能比轮询等方式高效,但是不是绝对的,因为中断有人上下文的切换等时间开销,对吧,当系统中充斥着大量的中断,系统不见得反应多灵敏呢。只能说多数情况下,中断能好一些。
缺点二: 拿打印机来讲,CPU需要参与整个数据的移动拷贝过程,使用DMA(Direct Memory Access)机制替换
操作系统如何与外部设备交互相关推荐
- 《操作系统》OS学习(二):启动、中断、异常
Bootloader:加载OS.操作系统一开始是放在DISK(硬盘)中,并不是放在内存中. BIOS:基本I/O处理系统.存放在ROMRead-Only Memory)只读存储中 BIOS(Basic ...
- 操作系统面试题(史上最全、持续更新)
尼恩面试宝典专题40:操作系统面试题(史上最全.持续更新) 本文版本说明:V28 <尼恩面试宝典>升级规划为: 后续基本上,每一个月,都会发布一次,最新版本,可以联系构师尼恩获取, 发送 ...
- 网络工程师考试-操作系统原理笔记
网络工程师 网络工程师... 1 1. 操作系统原理... 3 1.1. 操作系统概论... 3 1.1.1. 操作系统的概念... 3 1.1.2. 操作系统 ...
- 项目一.认识Linux操作系统
任务一.查找Linux系统的基本概况 任务实施 第一步:通过搜索引擎搜索"Linux" 在百度以及Google等搜索引擎中搜索"UNIX"."Linu ...
- 操作系统第一章操作系统引论相关习题
一.单项选择题 1.操作系统是一种____. A.通用软件 B.操作系统 C.应用软件 D.软件包 答:b 2.操作系统的___管理部分负责对进程进行调度. A.主存储器 B.控制器 C.运算器 D. ...
- 主流操作系统及其优缺点
主流操作系统介绍 目录如下: 文章目录 主流操作系统介绍 目录如下: 简介: 更多信息 中文名 外文名 英文简称 组成部分 主流操作系统及其优缺点: 85-95年主要操作系统- DOS MS-DOS的 ...
- excel正在等待某个应用程序以完成对象链接与嵌入操作_看完这篇操作系统,和面试官扯皮就没问题了
各位看官内容喜欢的话,动动手指点个 ,点个关注呗!!谢谢支持! 解释一下什么是操作系统 操作系统是运行在计算机上最重要的一种软件,它管理计算机的资源和进程以及所有的硬件和软件.它为计算机硬件和软件提供 ...
- 计算机操作系统还能这样玩?这一篇计算机操作系统的总结为你保驾护航(零风险、高质量、万字长文、建议收藏)
操作系统目录 1.什么是操作系统 2.计算机操作系统的基本特征 2.1.并发 2.2.共享 2.3.虚拟 2.4.异步 3.操作系统的发展 4.OS的运行机制和体系结构 4.1.运行机制 4.1.1. ...
- linux操作系统原理_Linux系统从新手到运维老鸟学习指南
Linux是在1990年底到1991年由芬兰大学的学生LinusTorvalds利用Minix操作系统作为开发平台编写了内核,目前由世界各地的爱好者共同开发和维护的与UNIX兼容的操作系统,也是自由和 ...
最新文章
- GridView实践
- 重新想象 Windows 8 Store Apps (4) - 控件之提示控件: ProgressRing; 范围控件: ProgressBar, Slider...
- python文件对象是可以迭代的_详解python可迭代对象、迭代器和生成器
- pycharm导入本地py文件时,模块下方出现红色波浪线
- 程序员如何成为编程高手并以此创业
- ad18常用快捷键可以修改吗_常用发泡剂之聚氨酯发泡剂在冬季可以用吗?
- 【前端基础】浏览器对象
- tomcat启动startup出现闪退问题
- 【Pix4d精品教程】Pix4d修编正射影像DOM的两种方法案例详解
- WiFi网络测速专业版
- php 定义宏函数,汇编语言宏函数
- word文档粘贴到html,将Word 文档复制到Dreamweaver的方法
- Html 实现角标效果
- 免费LOGO在线生成
- 字号与像素大小的关系
- 开始使用Elasticsearch (2): 了解如何进行搜索
- 【操作系统基础】文件管理系统(一)
- 思量QQ本地会员v3.8官方2013版【免费使用部分QQ会员功能】
- cogs 998. [東方S2] 帕秋莉·诺蕾姬
- 7-80 大炮打蚊子(C语言)
热门文章
- 大学毕业后,留在北京的人,要坚强!
- 注册登录模块设计浅谈
- 线代 | 【行列式及矩阵】经典例题及方法总结
- 计算机学院运动会方阵策划案,运动会方阵策划案(图文)教学文案
- IIC实战---》BH1750FVI光照强度传感器
- whitelist方法_whitelist
- 汽车方向盘电子助力转向器如何接线_相比于液压助力,电子助力有什么优势?...
- C++入门——Day1_Start with C++
- 使用两种脉冲神经网络(Spiking Neural Network)预测脑电图的癫痫发作:基于LIF神经元模型的实践与分析
- 杀死所有的tomcat进程