操作系统-I/O(4)I/O控制方式
- 程序直接控制方式(最简单的I/O方式)

copy_string_to_kernel (strbuf, kernelbuf, n); // 将字符串复制到内核缓冲区
for (i=; i < n; i++) { // 对于每个打印字符循环执行
while ( printer_status != READY); // 未就绪时,一直等待直到打印机状态为“就绪”
*printer_data_port=kernelbuf[i]; // 向数据端口输出一个字符
*printer_control_port=START; // 发送“启动打印”命令
}
return_to_user ( ); // 返回用户态



- 中断方式


copy_string_to_kernel ( strbuf, kernelbuf, n);// 将字符串复制到内核缓冲区
enable_interrupts ( ); // 开中断,允许外设发出中断请求
while ( printer_status != READY); // 等待直到打印机状态为“就绪”
*printer_data_port=kernbuf[i]; // 向数据端口输出第一个字符
*printer_control_port=START; //发送启动打印命令
scheduler ( ); // 阻塞用户进程P,调度其他进程执行
if (n==){
unblock_user ( ); //若字符串打印完,则用户进程P解除阻塞,P进就绪队列
}
else{
*printer_data_port=kernelbuf[i]; //向数据端口输出一个字符
*printer_control_port=START; //发送启动打印命令
n = n-; // 未打印字符数减1
i = i+; // 下一个打印字符指针加1
}
acknowledge_interrupt(); // 中断回答(清除中断请求)
return_from_interrupt(); // 中断返回
- 直接存储器访问(DMA)方式
- 数据传送过程是不连续的和不规则的
- CPU大部分情况下与Cache进行数据交换,直接访问内存较少。仅在DMA控制器初始化和处理DMA结束中断时介入,在DMA传送过程中不参与,因而CPU用于I/O的开销非常小。





//sys_write进行字符串输出的程序段:
copy_string_to_kernel(strbuf, kernelbuf, n); // 将字符串复制到内核缓冲区
initialize_DMA ( ); // 初始化DMA控制器(准备传送参数)
*DMA_control_port=START; // 发送“启动DMA传送”命令
scheduler ( );
// 阻塞用户进程P,调度其他进程执行
//DMA结束中断服务程序:
acknowledge_interrupt(); // 中断回答(清除中断请求)
unblock_user ( ); // 用户进程P解除阻塞,进入就绪队列
return_from_interrupt(); // 中断返回
- I/O通道,又称为通道控制器、I/O处理器
- CPU在遇到I/O请求后,组织通道程序,置通道程序地址字CAW,启动指定通道,通道从CAW获得指定通道程序
- 一旦启动成功,通道开始控制I/O设备进行操作, CPU执行其他任务,与通道并行工作
- I/O操作完成后,I/O通道发出I/O操作结束中断,CPU停止当前工作,转向处理I/O操作结束事件
操作系统-I/O(4)I/O控制方式的更多相关文章
- 操作系统:进程管理和IO控制
一.进程管理 进程管理包括进程控制,进程调度,进程同步与通信,死锁控制四个内容. (一)进程控制 进程是操作系统中运行的基本单位,包括程序段,数据段和进程控制段.操作系统通过进程控制块(PCB)管理进 ...
- ZeroMQ接口函数之 :zmq_proxy_steerable – 以STOP/RESUME/TERMINATE控制方式开启内置的ZMQ代理
ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ——————————————————————————————————— ...
- JAVAEE——BOS物流项目10:权限概述、常见的权限控制方式、apache shiro框架简介、基于shiro框架进行认证操作
1 学习计划 1.演示权限demo 2.权限概述 n 认证 n 授权 3.常见的权限控制方式 n url拦截权限控制 n 方法注解权限控制 4.创建权限数据模型 n 权限表 n 角色表 n 用户表 n ...
- JAVAEE——BOS物流项目11:在realm中授权、shiro的方法注解权限控制、shiro的标签权限控制、总结shiro的权限控制方式、权限管理
1 学习计划 1.在realm中进行授权 2.使用shiro的方法注解方式权限控制 n 在spring文件中配置开启shiro注解支持 n 在Action方法上使用注解 3.★使用shiro的标签进行 ...
- RobotFrameWork接口项目分层及通用控制方式
1. 前言 上一篇文章介绍了在设计接口用例之前应遵守的设计规范,详见<RobotFramework接口设计规范>,当然读者公司的内部规范也不一定非得完全遵循笔者所提到的,适合自己公司内部的 ...
- I/O控制方式
I/O控制方式 在计算机系统中,CPU管理外围设备也有几种类似的方式: 1 程序查询方式 程序查询方式是早期计算机中使用的一种方式.数据在CPU和外围设备之间的传送完全靠计算机程序控制,查询方式的优点 ...
- Android——UI和View——控制方式
控制方式 只用xml实现 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns ...
- 1、 Shiro框架:认证,授权(验权 2. Shiro框架实现权限控制方式:
1. Shiro框架:认证,授权(验权) a) 认证逻辑:applicationCode—>通过工具类获取subject对象,调用login方法参数令牌信息->安全管理器------> ...
- 项目一:第十二天 1、常见权限控制方式 2、基于shiro提供url拦截方式验证权限 3、在realm中授权 5、总结验证权限方式(四种) 6、用户注销7、基于treegrid实现菜单展示
1 课程计划 1. 常见权限控制方式 2. 基于shiro提供url拦截方式验证权限 3. 在realm中授权 4. 基于shiro提供注解方式验证权限 5. 总结验证权限方式(四种) 6. 用户注销 ...
随机推荐
- 深入理解Spring AOP 1.0
本文相关代码(来自官方源码spring-test模块)请参见spring-demysify org.springframework.mylearntest包下. 统称能够实现AOP的语言为AOL,即( ...
- Day02_企业权限管理(SSM整合)
学于黑马程序员和传智播客联合做的教学项目 感谢 黑马程序员官网 传智播客官网 个人根据教程的每天的工作进度的代码和资料 密码:cti5 b站在线视频 微信搜索"艺术行者",关注并回 ...
- PHP array_fill_keys() 函数
------------恢复内容开始------------ 实例 用给定的指定键名的键值填充数组: <?php$keys=array("a","b",& ...
- Python 告诉你疫情扩散有多可怕
今年(2020年)是注定要铭记史册的一年,从年初开始新冠疫情,席卷了全球,中国人民众志成城,为战胜疫情做出了巨大牺牲.最近北京疫情形式又变得严峻,面对疫情我们不能掉以轻心.今天我们模拟一下病毒的扩散过 ...
- Netty之旅:你想要的NIO知识点,这里都有!
高清思维导图原件(xmind/pdf/jpg)可以关注公众号:一枝花算不算浪漫 回复nio即可.(文末有二维码) 前言 抱歉好久没更原创文章了,看了下上篇更新时间,已经拖更一个多月了. 这段时间也一直 ...
- web新手第二周知识汇总
这周学习了盒模型以及一些定位的知识,现在简单做下汇总 盒模型组成部分: ie浏览器默认值是border-box content(内容盒)蓝色 padding(内容和边框的距离 绿色 填充盒包含内容)b ...
- Java 方法的重载及引用数据类型(类)
方法的重载 我们假设要在程序中实现一个对数字求和的方法,由于参与求和数字的个数和类型都不确定,因此要针对不同的情况去设计不同的方法. Java允许在一个类中定义多个名称相同的方法,但是参数的类型或个数 ...
- csapp第六章笔记-存储器结构
目录 随机访问存储器(Random-Access-Memory) 静态RAM 动态RAM 增强的DRAM 非易失性存储器 磁盘存储 磁盘构成 磁盘容量 磁盘操作 逻辑磁盘块 访问磁盘和连接I/O设备 ...
- C#LeetCode刷题之#13-罗马数字转整数(Roman to Integer)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3842 访问. 罗马数字包含以下七种字符: I, V, X, L, ...
- C#LeetCode刷题之#645-错误的集合(Set Mismatch)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3887 访问. 集合 S 包含从1到 n 的整数.不幸的是,因为数 ...