第11章IO系统与终端ch11IO系统与终端

上传人:E**** 文档编号:91544215 上传时间:2019-06-29 格式:PPT 页数:48 大小:1,015.50KB
返回 下载 相关 举报
第11章IO系统与终端ch11IO系统与终端_第1页
第1页 / 共48页
第11章IO系统与终端ch11IO系统与终端_第2页
第2页 / 共48页
第11章IO系统与终端ch11IO系统与终端_第3页
第3页 / 共48页
第11章IO系统与终端ch11IO系统与终端_第4页
第4页 / 共48页
第11章IO系统与终端ch11IO系统与终端_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《第11章IO系统与终端ch11IO系统与终端》由会员分享,可在线阅读,更多相关《第11章IO系统与终端ch11IO系统与终端(48页珍藏版)》请在金锄头文库上搜索。

1、操作系统,授课教师:李治军,Operating System,lizhijun_ 综合楼404室,第11章 I/O系统与终端,Chapter 11: I/O and Terminals,回顾一下图灵机,对应CPU管理(进程)!,对应内存管理!,认识计算机外设与计算机!,图灵机!,越来越多的任务超越了这个部分(如Web)!,想一想外设怎么工作?,CPU向控制器中的寄存器读写数据,控制器完成真正的工作,并向CPU发中断信号,想让外设工作并不复杂!,I/O系统想给用户提供一个什么样的视图?,从用户开始讲操作系统的故事总是合适的!,看一段操纵外设的程序,(1) 不论什么设备都是open, read,

2、write, close 操作系统为用户提供统一的接口!,(2) 不同的设备对应不同的文件(设备文件) 设备文件中存放了设备的属性!,显然操作系统将完成,键盘命令,磁盘命令,设备驱动,键盘控制器,磁盘控制器,中断处理,中断处理,键盘,磁盘,称为I/O系统,I/O系统如何向设备发命令?,I/O系统向设备控制器发命令,设备控制器的结构,I/O系统向哪里发送设备发命令?,读写设备控制器的寄存器!,怎么读写?,mov 100, ax,关键是地址,设备寄存器的编址,独立编址: 需要独立的指令(in, out),如out 0x21, AL,内存映像编址: 是内存物理地址空间的一部分,使用mov命令,如mo

3、v 0x8000f000, AL,I/O系统发完命令后做什么?,方案1: 原地踏步等待!,轮询!,轮询,浪费CPU资源(CPU比外设快太多了)!,I/O系统发完命令后做什么?,方案2: 设备就绪了告诉CPU一声!,中断,中断是大部分I/O的处理方式!?,中断在某些场合还不够!,如果用中断来读磁盘,每个字节从缓存移动内存都由CPU负责完成,可以设计有一定处理能力的外围设备,将一些简单任务交给它!,I/O系统发完命令后做什么?,方案3: 简单任务自己做,完成了告诉CPU一声!,引入DMA(直接内存存取),幸运的是: 该方式的细节由DMA设计者考虑,对于操作系统而言,考虑的仍然只是中断处理,总结一些

4、I/O系统要完成的工作!,OS需要提供系统调用接口,查一下手册就可以找到该写什么命令?该向哪里写?,让出CPU?,需要写中断处理程序!,总的感觉: 很简单,处理流程是很简单,复杂的是一些细节问题,如滚屏,PC终端和Linux终端管理!,为什么选择终端设备?,前面的内容已经可以让(多个)程序运行起来? 现在我们很想看到屏幕显示,很想输入参数,完成这些任务的I/O设备通常称为终端设备(控制台),从哪里开始这个故事呢?,Shell要打出提示符,等待输入命令 Shell启动前必定会初始化终端设备。就从这里开始,open展开成系统调用!,0x80的中断处理程序会找到_NR_open(编号,在ax中)对应

5、的函数sys_open!,解析目录,读入设备信息!,和块设备(磁盘)对应。终端设备是典型的字符设备!,我们来向屏幕输出点东西!,write中的printbuf显然是要输出的字符串,那么1呢?,write也要展开成系统调用!,fd成为了找到file的索引!,文件描述符表和打开文件表,回头再看一下 sys_open,全局打开文件表,开始真正向屏幕输出!,继续sys_write!,转到rw_char!,一个函数数组,处理各种字符设备!,看看crw_table!,第4个!,再转到tty_write! /实现输出的核心函数,可以猜测:输出就是放入队列!,继续tty_write这一核心函数,fs:数据段选

6、择符!,tty-write应该是真的开始输出屏幕了!,看看tty-write,先应该看看tty_struct这个结构!,看看tty_struct结构的初始化!,走了很久的路,终于到了con_write,con_write用来真正的向显示器写东西!,32-126是可视字符!其它是控制字符。 32是空格,126是。,将c写到pos处,pos指向显存。,看看pos,pos指向显存,先来了解一下显存,PC/AT机内存区域图,回忆: 分页时内存640K-1M不和逻辑页映射!,pos指向显存: pos=0xA0000,别忘了,段选择符改为内核段,基址为0,所以完成显示中最核心的秘密就是控制pos,跟踪po

7、s.,pos的修改: pos+=2,跟踪pos: pos初值+pos修改,为什么加2?,屏幕上的一个字符在显存中除了字符本身还应该有字符的属性(如颜色等),这就需要说一说适配器标准了,1个byte字符,1个byte属性!,0xb8000 0xbc000,字符的显示属性,EGA/VGA的显存起始地址: 0xa0000,现代计算机大都是EGA/VGA,EGA/VGA兼容CGA和MDA,黑底白字!,跟踪pos之pos初值!,pos初值的设定一定在终端控制台的初始化con_init,con_init(),一些控制显示的全局变量!,一些物理参数取出来放在0x90000处!,gotoxy(ORIG_X,O

8、RIG_Y),设为25,0x90006的高字节,屏幕有限而显示内容无限 翻页,在movw(ax, pos)之前,还有一小段程序,x的作用!,x,y定位光标行列坐标!,显然,翻页时的pos另外处理?,用来控制翻页的,翻页scrup(),根据显存想一想如何翻页?,整屏向上翻!,超过显存末端!,在显存中移动数据、填充空格,新行填充空格字符,移动整屏数据(向下翻动一行),set_origin() /真正的翻屏,各参数初始化(con_init),移动整屏数据(向下翻动一行),r12:卷屏起始地址高字节,梳理printf的整个过程!,read_write.c,char_dev.c,tty_io.c,终端控

9、制台设备=显示器 + 键盘,关于键盘的故事从哪里开始?,对于使用者(人): 敲键盘、看结果,对于操作系统: “等着”你敲键盘,敲了就中断,故事应该从键盘中断开始,从中断初始化开始,了解一点键盘硬件,0x21是什么? 两个0x21一样吗?,8259初始化后才使用,主片中断号从0x20开始,从片从0x28开始,了解一点键盘硬件,0x61是什么?,键盘控制器804X端口,0x61端口可读可写: 其中位7=1表示禁止键盘;位7=0表示允许键盘,禁止了一下,又允许了一下。挺好玩!,con_init: 设置键盘中断处理;允许中断;复位键盘控制器,让键盘开始正常工作,键盘中断处理keyboard_inter

10、rupt,处理扫描码!,处理扫描码key_table+eax*4,key_table是一个函数数组,扫描码02对应按键1;01对应ESC;12对应E等等,显示字符通常都用此函数处理!,找到映射表,如a的key_map映射为a,而shift_map映射为A,从key_map中取出ASCII码,各种map(alt_map,shift_map,key_map)放在哪里?,继续do_self,从1f开始,ebx放的是map起始地址,put_queue将ASCII码放到?,put_queue /可见,取出的ASCII码放入队列就完事,edx指向tty_table0 (console),head指向队列头

11、部,把ebx:eax中最多8个字节放到队列,con.read_q,do_tty_interrupt要做什么?,到目前为止还差什么?,对了 “回显”,push $0,copy_to_cooked/一定是拷贝到另一个队列中,do_tty_interrupt要做什么?,一定还有许多if,进行规范化处理!,键盘中断整理,漫长的键盘处理到此基本结束,现在整理一下,控制台输入输出整理,键盘、显示器在一个tty_struct,两者紧密关联,关于队列的一点补充,总结“显示器写”和“键盘读”可以发现: 问题的一切集中在操作read_q,write_q和secondary上,操作这三个队列的接口是: PUTCH,

12、为了故事的完整,有必要看一看!,tty与console,键盘+显示器=console=tty_table0,其他tty呢?,主机控制台:,串行终端:,串行终端需要增加一层通信软件!,I/O与终端设备总结,控制器和纸带是计算的核心 但我们更需要的交互(I/O),如何实现交互? 首先需要了解I/O的工作原理,从用户如何I/O开始 用户发送一个命令(read),系统调用read 被展开成给一些寄存器发送命令的代码,发送完命令以后 CPU轮询,CPU干其它事情并等中断,中断方案最常见 相比其他设备,CPU太快了,从哪里开始 Linux控制台读写过程,看看Linux终端的I/O处理 许多人把终端当成完整计算机,写控制台 写显存; 读控制台 键盘中断,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号