h1 { margin-bottom: 0.21cm; }h1.western { font-family: "Liberation Sans",sans-serif; font-size: 18pt; }h1.cjk { font-family: "微软雅黑"; font-size: 18pt; }h1.ctl { font-family: "AR PL UMing CN"; font-size: 18pt; }h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { font-family: "微软雅黑"; font-size: 16pt; }h2.ctl { font-family: "AR PL UMing CN"; font-size: 16pt; }p { margin-bottom: 0.25cm; line-height: 120%; }

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管理概述的更多相关文章

  1. 操作系统学习笔记----进程/线程模型----Coursera课程笔记

    操作系统学习笔记----进程/线程模型----Coursera课程笔记 进程/线程模型 0. 概述 0.1 进程模型 多道程序设计 进程的概念.进程控制块 进程状态及转换.进程队列 进程控制----进 ...

  2. kvm虚拟化学习笔记(四)之kvm虚拟机日常管理与配置

    KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...

  3. 深挖计算机基础:趣谈Linux操作系统学习笔记

    参考极客时间专栏<趣谈Linux操作系统>学习笔记 核心原理篇:内存管理 趣谈Linux操作系统学习笔记:第二十讲 趣谈Linux操作系统学习笔记:第二十一讲 趣谈Linux操作系统学习笔 ...

  4. 操作系统学习笔记5 | 用户级线程 && 内核级线程

    在上一部分中,我们了解到操作系统实现多进程图像需要组织.切换.考虑进程之间的影响,组织就是用PCB的队列实现,用到了一些简单的数据结构知识.而本部分重点就是进程之间的切换. 参考资料: 课程:哈工大操 ...

  5. Spring MVC 学习笔记10 —— 实现简单的用户管理(4.3)用户登录显示全局异常信息

    </pre>Spring MVC 学习笔记10 -- 实现简单的用户管理(4.3)用户登录--显示全局异常信息<p></p><p></p>& ...

  6. Spring MVC 学习笔记9 —— 实现简单的用户管理(4)用户登录显示局部异常信息

    Spring MVC 学习笔记9 -- 实现简单的用户管理(4.2)用户登录--显示局部异常信息 第二部分:显示局部异常信息,而不是500错误页 1. 写一个方法,把UserException传进来. ...

  7. Spring MVC 学习笔记8 —— 实现简单的用户管理(4)用户登录

    Spring MVC 学习笔记8 -- 实现简单的用户管理(4)用户登录 增删改查,login 1. login.jsp,写在外面,及跟WEB-INF同一级目录,如:ls Webcontent; &g ...

  8. GIT学习笔记(3):分支管理

    GIT学习笔记(3):分支管理 何谓分支 GIT是如何存储数据的 GIT不是存储文件差异或者变化量,而是一系列文件的快照.在Git提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容 ...

  9. SpringBoot学习笔记:Swagger实现文档管理

    SpringBoot学习笔记:Swagger实现文档管理 Swagger Swagger是一个规范且完整的框架,用于生成.描述.调用和可视化RESTful风格的Web服务.Swagger的目标是对RE ...

随机推荐

  1. linux下使用vi操作

    ESC : 进入命令模式 linux下使用vi后,怎样跳转到文件结尾 pagedown键连续按 虽然我也这么用,但还是太笨了.问了高手,方法是按shift+g,另外,到文件开头是gg.   linux ...

  2. wxWidgets刚開始学习的人导引(1)——前言

    wxWidgets刚開始学习的人导引全文件夹   PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wx ...

  3. ecshop2.7.3怎么自动清除缓存

    1.在ecs_shop_config表中插入一条数据 进入ECSHOP后台-数据库管理-SQL查询 复制下面SQL,粘贴到里面执行.注意这时是默认表前缀ecs_,如果你的修改过要和你的统一了. INS ...

  4. Codeforces 432E Square Tiling(结构体+贪婪)

    题目连接:Codeforces 432E Square Tiling 题目大意:给出一个n∗m的矩阵,要求对该矩阵进行上色,用大写字母,可是每次上色的区域必须是正方形,不求相邻的上色区域不能有同样的颜 ...

  5. JDK源码学习系列03----StringBuffer+StringBuilder

                         JDK源码学习系列03----StringBuffer+StringBuilder 由于前面学习了StringBuffer和StringBuilder的父类A ...

  6. PocketSphinx语音识别系统语言模型的训练和声学模型的改进

    PocketSphinx语音识别系统语言模型的训练和声学模型的改进 zouxy09@qq.com http://blog.csdn.net/zouxy09 关于语音识别的基础知识和sphinx的知识, ...

  7. 【原创】leetCodeOj ---Remove Duplicates from Sorted List II 解题报告

    明日深圳行,心情紧张,写博文压压惊 囧 ------------------------------------- 原题地址: https://oj.leetcode.com/problems/rem ...

  8. Java Web整合开发(78) -- Struts 1

    在Struts1.3中已经取消了<data-sources>标签,也就是说只能在1.2版中配置,因为Apache不推荐在 struts-config.xml中配置数据源.所以建议不要在st ...

  9. Oracle 11G CRUD操作监控单个表

    前言:    线上oracle数据库有张表的数据有些乱,依据应用db的log和应用的log也没有检查出来谁改动了.所以决定把这张单表做个具体的insert.update.delete监控.一:使用数据 ...

  10. c语言 int (*p)[5] 类型分析

    #include<stdio.h> int main() {     int i;     int  b[5]={1,3,5,7,9};     int  (*a)[5] = &b ...