输入子系统

科普中国-科学百科 2018-03-06

  输入子系统通常是一个独立的模块,由从操作系统读数据的函数或子程序组成,处于词法分析器的底层。把它同识别单词的机构分隔开来,使程序的结构比较清晰。同时,也使产生的代码更易于移植。分析程序中的大多数依赖于系统的操作都集中在输入层。1

  简介

  在拟定了输出子系统的设计方案后,系统设计人员即可着手设计输入子系统。为了生产出用户所规定的输出产品,其中包括数据分析人员所要的输出结果(例如数据分析人员所需的参考数据,如果这些参考数据必须利用数据处理系统来处理的话),就必须使数据处理系统能够接受实现这两个目的所需要的全部输入。输入予系统的主要设计目的便是为了实现这一点。

  为了将各种必要的输入编制成一份完整的清单,在讨论输入子系统的设计方法之前,我们有必要先对几种信息源作一番考查。其中比较明显的两种信息源是用户(和输出子系统的设计方案)和数据分析人员。此外,系统设计人员还必须对各种有关的数据收集系统的性能规格进行研究,特别是这些系统所产生的数据结果的特征。

  列出了各种必要输入的详细表格后,即可开始实际设计。请参考下图所示的输入子系统模型图,我们可以把该子系统的设计过程看作是这样一种过程,它将一套记录数据的媒体和格式通过处理变成另一套记录数据的媒体和格式。前者是由各种数据收集系统直接产生的,后者则必须是非常便于分析子系统存取的。变换后的数据经过编目分类,存储在一个或几个系统数据库中。这里所说的数据库是指利用单种格式存储在单种记录媒体中的数据集合。因为对典型的大容量遥感数据的存取能力是衡量数据处理系统总体有效性能的关键标志,因此对输入子系统中的数据库提出规格要求是输入子系统的设计重点。2

  构成

  输入子系统的实现需要满足以下需求:

  ①输入子系统要为每个输入设备在/dev/目录下生成一个设备文件,以方便应用程序读取指定输入设备产生的事件。

  ②对于每一个输入设备,在输入子系统只需要实现其事件获取即可,至于事件如何处理、如何到达设备文件则不需要考虑。

  ③Linux输入设备可以分为事件类(如USB鼠标、USB键盘、触摸屏等)、MOUSE类(特指PS/2接口的输入设备)、游戏杆类3种,为这些输入设备实现的设备文件的接口必须有所差别。因此,输入子系统需要为不同类型的输入设备实现正确的设备文件接口。

  为实现这些目的,输入子系统输入通过以下部分实现:

  设备驱动

  为实现需求①,输入子系统为每个输入设备都实现一个设备驱动,如图所示。每个设备驱动都可以动态注册到输入子系统,或从输入子系统中注销。

  

  在给输入设备编写驱动程序时,需要为输入设备实现一个设备驱动。设备驱动包含的设备信息有:

  a.设备的总线类型、厂商、产品、版本号、名称等身份信息;

  b.设备可产生的事件类型;

  c.各事件类型的分量。

  当输入设备发生输入事件时。驱动程序要把输人事件向输入子系统报告。

  Linux内核源码为一些常用的输入设备提供了驱动源码。这些源码分别在目录下的多个子目录下,这些子目录的内容如下表所列。

  

  事件管理器

  为实现目的①和③,输入子系统为每种输入设备类型都实现一个事件管理器。事件管理器管理自己类型下的所有输入设备的设备驱动。每个事件管理器都可以动态注册到输入子系统,或从输入子系统中注销。

  Linux的输入设备主要分为事件类、MOUSE类、游戏杆类型,所以内核源码为这3种类型的输入设备分别实现了evdev、mousedev、joydev事件管理器。输入子系统的事件管理器和设备驱动的关系如下图所示。

  

  当一个设备驱动注册到输入子系统后。每个事件管理器都扫描这个设备驱动的身份信息,并用自身携带的输入设备匹配列表和设备驱动的身份进行比较,以确定该设备驱动是否和自己匹配。若事件管理器检测到和自己匹配的设备驱动,则会为该设备驱动生成设备文件,如下图所示。

  

  事件管理器携带了一个file_operation类型的文件操作列表。新生成的设备文件的文件I/O实现就是由这个文件操作列表实现的,该文件操作列表为设备文件实现了open、close、read、ioctl、sync等调用。

  事件管理器为每个设备文件维护了一个输入事件缓冲区,如下图所示。

  

  当设备驱动获取到输入设备的输入事件后,就会向输入子系统报告。输入子系统会通知负责管理该设备驱动的事件管理器。事件管理器接到通知后,就把设备驱动提交的输入事件复制到相应的缓冲区中。当进程通过输入设备的设备文件读取输入事件时,就在该缓冲区中读取。若缓冲区没有输入事件读取,则进程将一直等到设备驱动提交了输入事件再读取。

  核心模块

  输入子系统使用了核心模块管理所有注册的设备驱动和事件管理器。同时,核心模块为设备驱动和事件管理器提供了注册/注销函数。另外.事件管理器和设备驱动之间沟通也由核心模块提供桥梁。核心模块的实现文件为。总的来说,设备驱动、核心模块、事件管理器构成了输入子系统,整体框图如下图所示。3

  联机数据输入子系统的主要功能和特点

  联机数据输入子系统(ODE),ODE是Online data entRy联机数据输入的缩写,它是由ESA-IRS开发的提供用户使用的辅助系统。它的功能较单一,结构也比较简单。主要功能是:用户可通过终端联机将自己的数据存入ESA-IRS的汁算机系统。它也提供了对数据进行各种操作如增加、删除的功能,并和其他文档一样可进行联机的或脱机的显示及打印。根据用户需要,也可将用户数据进行装入、倒排等处理,生成如其他文献库一样的联机检索文档。IRS已用这种方式对它的用户,或对每天每个用户运行情况等进行了管理,建立了一系列ODE文件,如ODE·USER,ODE LOG,在原始文献联机订购系统中也用ODE方式建立了用户地址文档,供文献提供者使用。

  使用ODE系统的终端设备必须是TEL42型高速终端,或IRS开发的双文字显示终端EVRAB,EURAB终端画画分成两个部分,一部分是欧洲语言(英、德,法、西文),另一部分为阿拉伯语。它的两个画面字符相当TEL42的—个画面。TEL42终端是一个屏幕22行, 每行80字符, 共21X 80=1760字符,为ODE系统规定的—·个信息块,也可称一页。ODE的操作基本以块为单位。

  ODE系统的内部数据组织有多种形式,对有共同格式的信息决,提供一种MASK手段,即将这种格式预先建好,并存在ODE系统的文件中,需要时可调出使用,每个文件最多可有10种MASK。如文献型的数据组织,MASK即可包含篇名,作者,出版日期,机构,类型,来源,分类号,主题间,文摘等数据项名。如是人事档案类型,·则可·为姓名姓别,年龄、工作单位、工资、工龄,专业等数据项名,这些数据项名就可做在一个MASK中成为MASK1,MASK2等等。并可在终端上编制简单的程序来建立被保护的MASK,即使用该MASK时,光标可向前,或向后跳过规定的数据项名,只停在要输入或更新的数据起始位上。

  ODE数据的保密有两种手段,一是文件存取使用文件所有者给定的文件名,二是系统设立了读键和写键。文件所有者可利用它们将文件的读或写加密,使只有知道读键的用户才可以打开文件得到显示,也只有知道写键的用户才可以联机输入和修改数据。读、写键可随时联机修改。4

  本词条内容贡献者为:

  李岳阳 - 副教授 - 江南大学

责任编辑:科普云

上一篇:域名

下一篇:ARCNET网络

科普中国APP 科普中国微信 科普中国微博
科普中国-科学百科
是中国科协为深入推进科普信息化建设而塑造的全新品牌,旨在以科普内容建设为重点,充分依托现有的传播渠道和平台,使科普信息化建设与传统科普深度融合,以公众关注度作为项目精准评估的标准,提升国家科普公共服务水平。

猜你喜欢