操作系统学习笔记_12_I/O管理 --I/O管理概述
I/O管理
--I/O管理概述
一、I/O控制方式
1.I/O 设备概念
I/O设备:是指计算机系统中除控制器、运算器(中央处理机)和内存以外的全部设备,通常也称为外部设备。
I/O操作:是内存与外设的介质之间的传输数据操作。
2.I/O 设备分类
(1)按交互对象分类:人机交互设备等。
(2)按交互方向分类:输入输出设备等。
(3)按外设特性分类:块传输设备或字符传输设备等。
3.I/O 管理目标
设备管理的功能是依照I/O子系统的结构和设备类型指定分配和使用设备的策略。
设备管理的目标是:提高效率;方便使用;方便控制。
4.I/O 应用接口
提供设备使用的用户接口:命令接口和编程接口。
设备分配和释放:使用设备前,须要分配设备和对应的通道、控制器。
设备的訪问和控制:包含并发訪问和差错处理。
I/O缓冲和调度:目标是提高I/O訪问效率。
5.I/O 接口控制方式
设备管理的主要任务之中的一个是控制设备和内存或处理机之间的数据传送,外围设备和内存之间的I/O控制方式有四种,例如以下所述。
(1)程序訪问控制方式
(2)中断控制方法
(3)DMA[直接存储器寻址]方式
【DMA与中断控制使得CPU从大量没用的工作中解放出来】
(4)通道方式
【冯诺依曼计算机体系:运算器,控制器,存储器,I/O设备】
二、 I/O软件层次结构
1.I/O软件的目标
(1)设备独立性。
(2)统一命名。
2.I/O 软件层次结构
I/O软件中,较低的层处理与硬件有关的细节,并将硬件的特征与较高的层隔离;而较高的层则向用户提供一个友好的、清晰而规整的 I/O接口。
一般的I/O软件结构分为四层。
|
用户层 |
|
设备无关独立层(操作系统) |
|
设备驱动程序 |
|
中断处理程序 |
中断处理程序:I/O设备中断方式是控制输入输出设备和内存与CPU之间的数据传送的主要方式。 设备驱动程序:I/O设备驱动程序是直接同硬件打交道的软件模块。
【中断处理程序与设备驱动程序一般由硬件开发商来完毕】
设备独立层:在I/O软件中,除了设备驱动程序以外,大部分软件是与设备无关的。
用户层软件:用户使用设备的系统调用或API。通常的I/O由图书馆系统调用过程。
版权声明:本文博主原创文章。博客,未经同意不得转载。
操作系统学习笔记_12_I/O管理 --I/O管理概述的更多相关文章
- 操作系统学习笔记----进程/线程模型----Coursera课程笔记
操作系统学习笔记----进程/线程模型----Coursera课程笔记 进程/线程模型 0. 概述 0.1 进程模型 多道程序设计 进程的概念.进程控制块 进程状态及转换.进程队列 进程控制----进 ...
- kvm虚拟化学习笔记(四)之kvm虚拟机日常管理与配置
KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...
- 深挖计算机基础:趣谈Linux操作系统学习笔记
参考极客时间专栏<趣谈Linux操作系统>学习笔记 核心原理篇:内存管理 趣谈Linux操作系统学习笔记:第二十讲 趣谈Linux操作系统学习笔记:第二十一讲 趣谈Linux操作系统学习笔 ...
- 操作系统学习笔记5 | 用户级线程 && 内核级线程
在上一部分中,我们了解到操作系统实现多进程图像需要组织.切换.考虑进程之间的影响,组织就是用PCB的队列实现,用到了一些简单的数据结构知识.而本部分重点就是进程之间的切换. 参考资料: 课程:哈工大操 ...
- Spring MVC 学习笔记10 —— 实现简单的用户管理(4.3)用户登录显示全局异常信息
</pre>Spring MVC 学习笔记10 -- 实现简单的用户管理(4.3)用户登录--显示全局异常信息<p></p><p></p>& ...
- Spring MVC 学习笔记9 —— 实现简单的用户管理(4)用户登录显示局部异常信息
Spring MVC 学习笔记9 -- 实现简单的用户管理(4.2)用户登录--显示局部异常信息 第二部分:显示局部异常信息,而不是500错误页 1. 写一个方法,把UserException传进来. ...
- Spring MVC 学习笔记8 —— 实现简单的用户管理(4)用户登录
Spring MVC 学习笔记8 -- 实现简单的用户管理(4)用户登录 增删改查,login 1. login.jsp,写在外面,及跟WEB-INF同一级目录,如:ls Webcontent; &g ...
- GIT学习笔记(3):分支管理
GIT学习笔记(3):分支管理 何谓分支 GIT是如何存储数据的 GIT不是存储文件差异或者变化量,而是一系列文件的快照.在Git提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容 ...
- SpringBoot学习笔记:Swagger实现文档管理
SpringBoot学习笔记:Swagger实现文档管理 Swagger Swagger是一个规范且完整的框架,用于生成.描述.调用和可视化RESTful风格的Web服务.Swagger的目标是对RE ...
随机推荐
- 用JavaScript实现网页动态水印
1.基本原理 页面加载后,通过javascript创建页面元素div,并在div元素中创建文本节点,展示水印内容 设置div元素样式,将其zIndex设置一个较高的值,并设置透明度,实现浮在页面的水印 ...
- PB数据库相关
---------------------------------------------------------------- 数据库画板: 一张表定义了主键或者唯一索引,则能够在Results视窗 ...
- ecshop2.7.3怎么自动清除缓存
1.在ecs_shop_config表中插入一条数据 进入ECSHOP后台-数据库管理-SQL查询 复制下面SQL,粘贴到里面执行.注意这时是默认表前缀ecs_,如果你的修改过要和你的统一了. INS ...
- malloc功能具体解释
一.原型:extern void *malloc(unsigned int num_bytes); 头文件:#include <malloc.h> 或 #include <alloc ...
- Eclipse+Maven命令创建webapp项目<三>
1.使用maven命令:mvn archetype:create -DgroupId=xxxxx -DartifactId=web-sample -DarchetypeArtifactId=maven ...
- ORA-00600 [kollasg:client-side tmp lob]
今天在查看一个库的日志时,发现被ORA-00600 [kollasg:client-side tmp lob] 错误刷屏了. 发生该错误的原因是由于应用那边lob的问题.lob没有被初始化,建议使用E ...
- QT 4.7.6 驱动 罗技C720摄像头
编译器: mingw32 gcc 4.8.1 mingw32 g++ 4.8.1 QT 版本: 4.8.6 OpenCV版本: 3.0.0 测试平台: win7 x64 --------------- ...
- 解决编译时出错提示: 'error: array must be initialized with a brace-enclosed initializer' 的错误
编译出现这个错误的原因非常简单编译的标准不相同.如果用stdc90,这个就可以直接编译通过了. 下面是代码例子: ...... ] = NULL;或者 :char cmd[256] = '\0'; . ...
- height:100%失败
height显然,设置100% 为什么不能看到效果.非常多的时间不是很扎实的时间的基础上,,经常会遇到这样的问题,原因很简单的事实 首先,你必须确保 html{height:100%;} body{h ...
- 使用ThinkPHP框架高速发展网站(多图)
使用ThinkPHP框架高速搭建站点 这一周一直忙于做实验室的站点,基本功能算是完毕了.比較有收获的是大概了解了ThinkPHP框架.写一些东西留作纪念吧.假设对于相同是Web方面新手的你有一丝丝帮助 ...