Linux操作系统下IDE设备热插/拔系统及实现方法技术方案

技术编号:2862155 阅读:162 留言:0更新日期:2012-04-11 18:40
一种Linux操作系统下IDE设备热插/拔系统,用于在Linux操作系统带电运行的过程中,实现IDE设备的插入和拔除,其中该系统包括:    一中断处理模块,用于自动检测并分析IDE设备热插/拔操作所引起的硬件中断;    一用户空间处理模块,用于在接到该中断处理模块发出的通知后根据插/拔类型而将该IDE设备与应用程序在用户空间相分离;及    一IDE注册信息处理模块,用于根据用户空间的处理情况以及插/拔类型而对IDE设备的注册信息进行修改。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及一种IDE设备热插/拔系统及实现方法,特别是涉及一种在Linux操作系统下实现IDE设备热插/拔的系统及方法。
技术介绍
IDE(Integrated Device Electronics)是一种磁盘驱动器的接口类型,也称为ATA(AT Attachment)接口。IDE接口模式经历了三个不同时期的技术变化,由最早的PIO(Programmed I/O)传输方式升级到先进的DMA(DirectMemory Access)传输方式,直至现在最新的Ultra DMA(Ultra Direct MemoryAccess)传输方式。IDE设备指的是采用IDE接口的计算机设备。目前,我们的计算机中标配的IDE设备无外乎两类——硬盘和光驱,硬盘的存在形式比较简单,而光驱则包括CD-ROM驱动器、DVD-ROM驱动器和CD-R/RW光盘刻录机三种常见的类型。此外,我们不常见的IDE设备还有ZIP软盘驱动器、ORB活动硬盘驱动器等。总的来说,IDE与存储设备几乎可以说是如影随形。无论具体IDE设备的工作原理及结构设计如何,由于采用了同样的接口、在同样的总线上被同一个控制器指挥着,使用同样的指令体系来完成与系统数据的双向传输,因此,它们之间有很多共同之处。从具体的地方来看,这些相同之处表现在设备的数据连接/传输电缆、接口形状、设置方式都大致相同。直接与IDE设备打交道是IDE控制器,最早8086、286和386时代(甚至486时代的早期),IDE设备都需要一个单独的控制卡来连接IDE设备,并通过这个卡上的IDE控制器来完成对IDE设备的各种访问操作。但自从486时代开始,IDE控制器被集成到了系统的芯片组的南桥芯片中,直到今天。这些芯片组都提供了完全相同的配置集成两个独立IDE控制器,每个控制器可接驳两个IDE设备(分别为主设备和从设备)。在IDE设备上也有一个IDE控制器来完成设备与主机之间IDE控制命令以及数据监控/传输等功能。只不过,这些控制器的存在形式由于IDE设备的不同,与主机端(芯片组内集成)完全不一样。简单来说,整个IDE就是由IDE设备、主机/设备的IDE控制器、IDE数据连接/传输电缆和接口共同构成的一个子系统。所谓热插拔,指的就是带电插/拔计算机的硬件。热插拔可以节省计算机关机重新激活的时间,还能降低开关机时计算机激活电流过大对硬件造成的冲击,所以在高级计算机用户中备受青睐。现有的IDE设备热插拔的实现,大致有如下两种方法一种采用专用的硬设备,在硬件磁盘数组的基础上,不需要软件(操作系统)的干预,实现IDE设备的热插/拔。这种方法硬设备造价昂贵,只适用于高档的服务器。另一种方法需要安装IDE控制器的专用驱动程序,由该专用的驱动程序实现IDE设备热插/拔。这个驱动程序依赖于特定的IDE控制器,通用性不强。同时,在Linux操作系统中,支持热插/拔的专用驱动程序并不容易获得。因此,如何在不需要专用的硬设备和专用的驱动程序的前提下,提供一种低成本且通用性较好的IDE设备热插/拔的方法已经成为急待解决的问题。
技术实现思路
本专利技术为解决上述问题而提供一种Linux操作系统下IDE设备热插/拔的实现方法,不需要昂贵的硬设备和专用的驱动程序,即可在系统带电运行的过程中,实现IDE设备的插入和拔除。本专利技术提供一种Linux操作系统下IDE设备热插/拔系统,用于在Linux操作系统带电运行的过程中,实现IDE设备的插入和拔除,该系统包括一中断处理模块,用于自动检测并分析IDE设备热插拔操作所引起的硬件中断;一用户空间处理模块,用于在接到该中断处理模块发出的通知后根据插/拔类型而将该IDE设备与应用程序在用户空间相分离;以及一IDE注册信息处理模块,用于根据用户空间的处理情况以及插/拔类型而对IDE设备的注册信息进行修改。本专利技术进而提供一种Linux操作系统下IDE设备热插/拔的实现方法,在Linux操作系统带电运行的过程中,实现IDE设备的插入和拔除,该方法首先捕获IDE设备热插/拔事件,接着定位发生该热插/拔事件的具体IDE设备并分析插/拔类型,然后根据该IDE设备的使用情况将其与应用程序在用户空间分离,最后根据插/拔类型修改IDE控制器中的注册信息。本专利技术通过动态修改Linux内核中IDE设备的数据结构信息,在Linux操作系统层次上实现IDE设备插/拔操作,不需要专用的硬设备和专用的驱动程序,主要利用软件进行处理,成本很低且通用性较好。附图说明图1为本专利技术的Linux操作系统下IDE设备热插/拔的实现方法流程图;图2为本专利技术的Linux操作系统下IDE设备热插/拔系统模块结构图;图3为本专利技术所提供的中断处理模块的处理流程图;图4为本专利技术所提供的用户空间处理模块的处理流程图;及图5为本专利技术所提供的IDE注册信息处理模块的处理流程图。其中,附图标记说明如下步骤101 捕获IDE设备热插/拔事件步骤102 定位发生该热插/拔事件的具体IDE设备并分析插/拔类型步骤103 根据该IDE设备的使用情况将其与应用程序在用户空间分离步骤104 根据插/拔类型修改IDE控制器中的注册信息步骤301 注册中断处理程序步骤302 等待中断发生步骤303 判断中断具体内容步骤304 唤醒用户空间处理模块步骤401 等待中断处理模块唤醒通知步骤402 是否被中断唤醒步骤403 取得发生中断的具体设备步骤404 是否为拔除操作步骤405 控制器是否被使用步骤406 控制器是否有冗余步骤407 强制终止使用控制器的程序步骤408 调用IDE注册信息处理模块步骤409 从冗余中移除控制器步骤501 得到控制器的数据结构步骤502 是否为插入操作步骤503 初始化控制器的硬件参数步骤504 探测控制器,填充注册信息到控制器的数据结构中步骤505 设置控制器的DMA方式步骤506 启用DMA方式步骤507 清除控制器的注册信息具体实施方式如图1所示,本专利技术提供一种Linux操作系统下IDE设备热插/拔的实现方法,在Linux操作系统带电运行的过程中,实现IDE设备的插入和拔除,该方法首先捕获IDE设备热插/拔事件(步骤101);接着定位发生该热插/拔事件的具体IDE设备并分析插/拔类型(步骤102);然后根据该IDE设备的使用情况将其与应用程序在用户空间分离(步骤103);最后根据插/拔类型修改IDE控制器中的注册信息(步骤104)。为进一步清楚的描述本专利技术的实现,请参阅图2,其为本专利技术的模块结构图,功能模块按照Linux的特点被划分成内核空间的“IDE注册信息处理模块”、“中断处理模块”和用户空间的“用户空间处理模块”三个模块。IDE控制器在发生热插/拔事件时,会产生硬件中断。“中断处理模块”注册一个中断处理程序,用来捕获热插/拔事件。在捕获到热插/拔事件后,中断处理模块分析中断原因具体的IDE控制器和插入/拔除类型。然后会通知“用户空间处理程序”进行处理。“用户空间处理模块”设计成一个守护进程,在Linux系统启动后自动执行并处于等待。在接到“中断处理模块”的通知后,“用户空间处理程序”完成用户空间需要进行的处理如拔除设备前,终止各个应用程序对该设备的使用,使该设备处本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:刘文涵陈玄同王兴家
申请(专利权)人:英业达股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利