用Borland C++3.1实现外设与Windows应用程序实时通信

时间:2022-10-13 08:39:31 其他范文 收藏本文 下载本文

用Borland C++3.1实现外设与Windows应用程序实时通信(合集6篇)由网友“一条胖头鱼”投稿提供,下面是小编为大家推荐的用Borland C++3.1实现外设与Windows应用程序实时通信,欢迎阅读,希望大家能够喜欢。

用Borland C++3.1实现外设与Windows应用程序实时通信

篇1:用Borland C++3.1实现外设与Windows应用程序实时通信

用Borland C++3.1实现外设与Windows应用程序实时通信

摘 要 该文提出了一种在Windows3.1保护模式下,通过动态连接库(DLL)生成中断服务程序代码,实现外设与Windows应用程序实时通信的有效方法。

一、前 言

计算机的日益普及和计算机技术日益成熟,使得计算机在工业控制监测中的应用渐渐深入。但工业应用不同于其它方面,它要求有较强的实时性。现在有很多的DOS软件在运行过程中通过挂接外部中断方式实现DOS应用软件与外设的实时通信,这种方法实现起来十分简单。而在Windows中应用程序能否也能够利用外部硬中断实现外设与Windows应用程序的实时通信呢?答案是肯定的。这里的关键是要解决好中断代码与Windows应用程序相互之间交换信息的问题。

从外设发送异步的硬中断,通过中断处理程序传递一条信息给Windows应用程序。这时可以初始化相关端口,准备好数据,然后进行数据传送,从而做到实时通信。

实现Windows应用程序响应外部中断的方法有很多,如Microsoft公司自己开发的SDK、DDK软件包,使用嵌入式汇编等等。本文将介绍一种在BC++3.1的基础上利用Windows 3.1拥有的一些功能实现Windows实时通信的实例。

二、中断代码的位置

在Windows中,几乎所有的异步事件都是由中断处理程序来管理的。中断处理程序包含在设备驱动程序中,由Windows在环境初始化中安装。例如,KEYBOARD.DRV、MOUSE.DRV和COMM.DRV均含有中断处理程序,以处理相应的键盘、鼠标和串行口的'异步中断。可以仿照标准设备驱动程序,编写中断处理代码,以响应外设的通信请求,从而完成一次实时通信。

中断代码既可以包含在应用程序的可执行代码中,也可以包含在动态连接库(DLL)中。包含在应用程序中的代码只能在一个程序中使用,而在动态连接库中的代码则可以在Windows系统中所有的应用程序所共享。这样不仅在整个Windows系统中只有一个中断代码的副本,提高了内存的使用效率,更重要的是可以防止由于同时存在多个中断代码的副本而发生冲突。本文将在DLL中编制中断处理程序。

当动态连接库被装入时,要调用DLL库的入口点LibMain,利用这一点可以执行一些初始化工作,可以分配一些内存块,可以初始化一些全局变量或者静态变量,可以安装中断服务程序的代码等等。例如:

void interrupt (oldIsr)(--CPPARGS)

/* 旧的中断服务程序地址 */

LibMain(HANDLE hInstance,WORD wDataSeg,WORD cbHeapSize,L

PSTR

lpszCmdLine)

{

oldIsr=getvect(IRQNum);

/* IRQNum指中断号 */

setvect(IRQNum,newIsr);

/* newIsr指新中断服务程序代码 */

return(1);

}

函数setvect()既可在实模式下,也可在保护模式下设置中断处理向量。

上述代码也可以放在一个由用户设置的引出(export)函数中,在应用程序中用户可以调用此引出函数来安装中断服务程序代码。

由于中断可以在任何时刻发生,中断代码必须驻留在内存中,并且在应用程序运行的过程中一直处于某一固定内存中。这一点无论是在实模式还是在保护模式下都是一致的。

在DLL的模块定义文件中应注意:

1.CODE语句为固定代码段,即FIXED;

2.EXPORTS语句要引出被应用程序和其它DLL用作入口点的函数。

三、通信机制

编写实时通信例程关键在于必须认识到,异步事件对应用程序的触发是异步发生的,不在Windows的消息处理机制和多任务范围内。为了使通信例程能够正确地工作,通信例程必须通知Windows有异步事件发生,且不能打断应用程序的任务管理或消息流。要作到这一点,通信例程必须通过调用PostMessage或PostAppMessage函数向应用程序的消息队列中加入一条消息。

需要注意的是,在DLL中调用PostMessage(HWND hwnd, …)时,必须先确定hwnd的实际值,可以通过使用引出函数的办法来实现,如下所示:

static HWND hWndApp;

void FAR PASCAL SetIsrWin(HWND hwnd)

{

hWndApp=hwnd;

}

然后在应用程序的窗口函数中,对WM-CREATE消息进行处理时调用此函数来初始化DLL中的静态变量hWndApp:

CASE WM-CREATE:

SetIsrWin(hwnd); /* hwnd指应用程序窗口句柄 */

定义一个在应用程序中使用的消息:

#define ISRM-RUPT WM-USER+255最后在DLL中的中断服务程序代码中,调用PostMessage即可完成Windows应用程序和中断服务程序代码相互的信息交流:

void interrupt newIsr(--CPPARGS)

{

PostMessage(hWndApp,WM-RUPT,wParam,lParam);

}

四、程序实例

本示例先安装在DLL中的外中断服务代码,通过386/AT总线上的中断申请线(IRQ12)外触发,由中断服务代码发送一条消息WM-RUPT通知Windows应用程序外设有实时通信请求,应用程序收到这条消息后,在窗口用户区显示一条信息,表明已和外设联络上,并同时鸣叫一声喇叭。

程序分为两部分:DLL库代码和Windows应用程序代码。

1.DLL库代码

/*----------*

* interrupt include file,named handle.h*

*----------*/

void FAR PASCAL SetIsrWin(HWND hwnd);

void FAR PASCAL SetIRQNum(unsigned char IRQ);

/*----------*

* module defination file, named handle.def *

*----------*/

LIBRARY HANDLE

EXETYPES WINDOWS

STUB 'WINSTUB.EXE'

CODE PRELOAD FIXED

DATA PRELOAD SINGLE

HEAPSIZE 1024

EXPORTS

WEP

@1 RESIDENTNAME

SetIRQNum @3

/*----------*

* interrupt service program in dll,named handle.dll *

篇2:用Borland C 3.1实现外设与Windows应用程序实时通信

用Borland C 3.1实现外设与Windows应用程序实时通信

摘 要 该文提出了一种在Windows3.1保护模式下,通过动态连接库(DLL)生成中断服务程序代码,实现外设与Windows应用程序实时通信的有效方法。

一、前 言

计算机的日益普及和计算机技术日益成熟,使得计算机在工业控制监测中的应用渐渐深入。但工业应用不同于其它方面,它要求有较强的实时性。现在有很多的DOS软件在运行过程中通过挂接外部中断方式实现DOS应用软件与外设的实时通信,这种方法实现起来十分简单。而在Windows中应用程序能否也能够利用外部硬中断实现外设与Windows应用程序的实时通信呢?答案是肯定的。这里的`关键是要解决好中断代码与Windows应用程序相互之间交换信息的问题。

从外设发送异步的硬中断,通过中断处理程序传递一条信息给Windows应用程序。这时可以初始化相关端口,准备好数据,然后进行数据传送,从而做到实时通信。

实现Windows应用程序响应外部中断的方法有很多,如Microsoft公司自己开发的SDK、DDK软件包,使用嵌入式汇编等等。本文将介绍一种在BC 3.1的基础上利用Windows 3.1拥有的一些功能实现Windows实时通信的实例。

二、中断代码的位置

在Windows中,几乎所有的异步事件都是由中断处理程序来管理的。中断处理程序包含在设备驱动程序中,由Windows在环境初始化中安装。例如,KEYBOARD.DRV、MOUSE.DRV和COMM.DRV均含有中断处理程序,以处理相应的键盘、鼠标和串行口的异步中断。可以仿照标准设备驱动程序,编写中断处理代码,以响应外设的通信请求,从而完成一次实时通信。

中断代码既可以包含在应用程序的可执行代码中,也可以包含在动态连接库(DLL)中。包含在应用程序中的代码只能在一个程序中使用,而在动态连接库中的代码则可以在Windows系统中所有的应用程序所共享。这样不仅在整个Windows系统中只有一个中断代码的副本,提高了内存的使用效率,更重要的是可以防止由于同时存在多个中断代码的副本而发生冲突。本文将在DLL中编制中断处理程序。

当动态连接库被装入时,要调用DLL库的入口点LibMain(),利用这一点可以执行一些初始化工作,可以分配一些内存块,可以初始化一些全局变量或者静态变量,可以安装中断服务程序的代码等等。例如:

void interrupt (oldIsr)(--CPPARGS)

/* 旧的中断服务程序地址 */

LibMain(HANDLE hInstance,WORD wDataSeg,WORD cbHeapSize,L

PSTR

lpszCmdLine)

{

oldIsr=getvect(IRQNum);

/* IRQNum指中断号 */

setvect(IRQNum,newIsr);

/* newIsr指新中断服务程序代码 */

return(1);

}

函数setvect()既可在实模式下,也可在保护模式下设置中断处理向量。

上述代码也可以放在一个由用户设置的引出(export)函数中,在应用程序中用户可以调用此引出函数来安装中断服务程序代码。

由于中断可以在任何时刻发生,中断代码必须驻留在内存中,并且在应用程序运行的过程中一直处于某一固定内存中。这一点无论是在实模式还是在保护模式下都是一致的。

在DLL的模块定义文件中应注意:

1.CODE语句为固定代码段,即FIXED;

2.EXPORTS语句要引出被应用程序和其它DLL用作入口点的函数。

三、通信机制

编写实时通信例程关键在于必须认识到,异步事件对应用程序的触发是异步发生的,不在Windows的消息处理机制和多任务范围内。为了使通信例程能够正确地工作,通信例程必须通知Windows有异步事件发生,且不能打断应用程序的任务

[1] [2] [3] [4]

篇3:基于Vxworks实时操作系统的串口通信程序设计与实现

基于Vxworks实时操作系统的串口通信程序设计与实现

摘要:结合嵌入式实时操作系统VxWorks实现风洞测控系统的实际应用,以其中的串口通信为例,讨论了在VxWorks下实现串口通信的关键技术,给出了基本原理、环境配置和程序示例。

关键词:VxWorks; 实时操作系统; 嵌入式操作系统;串行通信

[Abstract] Combining with the application of wind tunnel measure and control system with embedded real-time operating system VxWorks , with the serial communication in  it as an example ,the key techniques about realization of the serial communication in VxWorks are discussed. Communication mechanism, environment configure and corresponding program examples are provided.

[Key words] VxWorks;RTOS;embedded operating system; Serial Communication

1前言

目前市场上比较著名的实时操作系统有:VxWorks、PSOS、Nucleus、QNX、VRTX、Windows  CE、Palm  0S、Lynx0S等。  其中,VxWorks是一个具有微内核、可裁剪的高性能强实时操作系统,在实时操作系统市场上处于领先地位。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、弹道制导、飞机导航等。在美国的 F-16战斗机、B-2 隐形轰炸机和爱国者导弹上,甚至火星探测器上都使用了VxWorks实时操作系统。在嵌入式实时操作系统中使用串口通信,不仅可扩展嵌入式设备通信能力,而且可扩大其应用范围。

2 VxWorks简介

VxWorks是由wRS(wind River Systems,Inc.)公司开发的一套具有微内核、高性能、可伸缩的实时操作系统,支持广泛的网络通信协议,并能够根据用户的需求进行组合,其开放式的结构和对工业标准的支持使开发者只需做最少的工作即可设计出有效的适合于不同用户要求的系统。除了性能出众的操作系统之外,wRS公司还提供了优秀的实时操作系统开发工具Tornado。Tornado由三个高度集成的部分组成:Tornado工具,一整套强有力的交叉开发工具;VxWorks运行系统,是运行在目标机上的高性能、可裁剪的实时操作系统;连接目标机和宿主机的通信选项,加以太网、串行线路、在线仿真等。Tornado能够支持Windows、Unix等流行的工作平台和PowerPC、X86、ARM等几乎所有的目标处理器,所提供的.工具可用于所有目标机,并具有两种调试模式(系统模式和任务模式)。除了基本的功能和开发工具外,Tornado还具有先进的系列网络产品,极大地扩展了Tornado的网络特性,并增强了嵌人式微处理器的网络特性。[1]

3 串口通信基本原理

串口在嵌入式系统当中是一类重要的数据通信接口,其本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行端口发送出去时,字节数据转换为串行的位;在接收数据时,串行的位被转换为字节数据。应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。

串口通信的优点是开发简单,在传输数据量不大、要求速度不高而传输距离较大的通信场合得到广泛应用。

在VxWorks中,将I/O系统设计成为任何类型的设备提供一个简单、统一、独立于设备的接口,任何对于串口的操作都可以视为对一个文件的操作,而不必了解串口设备或程序驱动实现的细节。在串口通信软件的设计中,当串口初始化完成后,在使用之前利用open打开相应串口,然后进行配置。

VxWorks提供终端和伪终端设备驱动。Tty驱动针对实终端;pty针对仿真终端的程序。Tty设备有两种操作模式:raw模式和line模式。在raw模式下,每个刚从设备输入的字符对读者都是有效的;在line模式下所有输入字符被存储,直到NEWLINE字符输入。设备选项字使用带FIOSETOPTIONS 功能的ioctl()程序来设置。[2]

配置完成后,依据串口打开时的读写标志,调用函数write()、read()对串口进行只读操作、只写操作或同时进行读写操作。

为提高数据接收的实时性,可采用中断方式,利用VxWorks提供的select函数的事件触发机制,将读串口的任务阻塞使其一直等待数据,当有数据来到的时候该任务会立刻自动响应,提高系统的实时性。

4 环境配置

在本实时应用系统中采用486机作为目标机,串口通信时目标机VxWorks系统启动盘的制作步骤:

(1) 修改通用配置文件Tornadotargetconfigpc486config.h。在config.h文件中加入以下宏定义:

#define INCLUDE_WDB

#define INCLUDE_WDB_TTY_TEST

#undef WDB_COMM_TYPE

#define WDB_COMM_TYPE WDB_COMM_SERIAL /*定义通信方式为串口联结*/

#define WDB_TTY_CHANNEL 1 /*通道号*/

#define WDB_TTY_BAUD 9600 /*串口速率,可设置至38400*/

#define WDB_TTY_DEV_NAME “tyCo/1”

#define CONSOLE_TTY 0

#define DEFAULT_BOOT_LINE “fd=0,0(0,0)hostname:/fd0/vxWorks h=主机

ip e=目标机ip u=主机上的登录用户名”

(2) 在Tornado集成环境中执行菜单命令Project > Make PC486 > Common Targets > clean删除以前生成的文件,执行菜单命令Project > Make PC486 > Boot Rom Targets > bootrom_uncmp编译链接生成bootrom_uncmp ;再选择VxWorks Target,编译生成vxworks;

(3) 拷贝Tornadotargetconfigpc486bootrom_uncmp至Tornadohostbin下

(4) 重命名文件bootrom_uncmp为bootrom;

(5) 准备一张已格式化的空盘插入软驱;

(6) 在目录Tornadohostbin下执行命令 mkboot a: bootrom;

(7)拷贝Tornadotargetconfigpc486VxWorks至软盘;

(8) 将系统制作盘插入目标机软驱,加电启动目标机即载入VxWorkst系统。[3]

5程序示例

5.1 在程序中加入下列头文件

#include

#include “strLib.h”

#include

#include

#include

#include

#include

#include

#include “types/vxTypesOld.h”

5.2 打开串口

int open_com1(void) //打开串口1函数

{    int sfd;//串口设备文件描述符

sfd =open(”/tyCo/0”,0_RDWR,0);//打开串口并返回串口设备文件描述符

if(sfd ==ERROR)  //如果不能打开串口1则打印出错信息

printf(“You can’t open port com1 !”);

篇4:用Windows 实现软RAID

一、概述

大家知道,硬件RAID解决方案速度快、稳定性好,可以有效地提供高水平的硬盘可用性和冗余度,但是居高不下的价格实在令人可畏, 不过可庆幸的是,Windows 2003提供了内嵌的软件RAID功能,并且软RAID可以实现RAID-0、RAID-1、RAID-5。软RAID不仅实现上非常方便,而且还大量地节约了宝贵的资金,确实是Windows 2003 Server的一个很实用的新功能。RAID-5 卷是数据和奇偶校验间断分布在三个或更多物理磁盘的容错卷。

如果物理磁盘的某一部分失败,我们可以用余下的数据和奇偶校验重新创建磁盘上失败的那一部分上的数据。对于多数活动由读取数据构成的计算机环境中的数据冗余来说,RAID-5 卷是一种很好的解决方案。可使用基于硬件或基于软件的解决方案来创建 RAID-5 卷。通过基于硬件的 RAID,智能磁盘控制器处理组成 RAID-5 卷的磁盘上的冗余信息的创建和重新生成。

Windows Server 2003 家族操作系统提供基于软件的 RAID,其中 RAID-5 卷中的磁盘上的信息的创建和重新生成将由“磁盘管理”来处理,两种情况下数据都将跨磁盘阵列中的所有成员进行存储。当然,软RAID的性能和效率是不能与硬RAID相提并论的。下面我们首先从动态磁盘的创建谈起,然后说明在Windows 2003 Server 实现如何实现软RAID,最后讲一下软RAID的管理。

二、创建动态磁盘

在安装Windows 2003 Server时,硬盘将自动初始化为基本磁盘。我们不能在基本磁盘分区中创建新卷集、条带集或者RAID-5组,而只能在动态磁盘上创建类似的磁盘配置。也就是说,如果想创建RAID-0、RAID-1或RAID-5卷,就必须使用动态磁盘。在Windows 2003 Server安装完成后,可使用升级向导将它们转换为动态磁盘。

在将一个磁盘从基本磁盘转换为动态磁盘后,磁盘上包含的将是卷,而不再是磁盘分区。其中的每个卷是硬盘驱动器上的一个逻辑部分,还可以为每个卷指定一个驱动器字母或者挂接点。但是要注意的是只能在动态磁盘上创建卷。动态磁盘有以下几个优于基本磁盘的特点:

卷可以扩展到包含非邻接的空间,这些空间可以在任何可用的磁盘上。

对每个磁盘上可以创建的卷的数目没有任何限制。

Windows 2003将动态磁盘配置信息存储在磁盘上,而不是存储在注册表中或者其他位置。同时,这些信息不能被准确地更新。Windows 2003将这些磁盘配置信息复制到所有其他动态磁盘中。因此,单个磁盘的损坏将不会影响到访问其他磁盘上的数据。

一个硬盘既可以是基本的磁盘,也可以是动态的磁盘,但不能二者兼是,因为在同一磁盘上不能组合多种存储类型。但是,如果计算机有多个硬盘,就可以将各个硬盘分别配置为基本的或动态的。

1、从基本磁盘升级到动态磁盘:

①依次单击“开始”->“所有程序”->“管理工具”->“计算机管理”选项,显示“计算机管理”窗口。

②在左侧控制台中依次展开“存储”->“磁盘管理”选项,以显示计算机中安装的所有磁盘。

③右击要设置为动态磁盘的硬盘,并在弹出的快捷菜单中选择“升级到动态磁盘”选项,将显示“升级到动态磁盘”对话框。

④选中要升级的磁盘,然后单击“确定”:按钮,将显示“要升级的磁盘”对话框,在这里要求用户对要升级为动态磁盘的硬盘进行确认。这样做的原因很简单,因为这一升级操作是不可逆的。也就是说,基本磁盘可以升级为动态磁盘,但动态磁盘却不能恢复为基本磁盘。

⑤单击“升级”按钮,将显示“磁盘管理”提示框,系统再次要求用户对磁盘升级予以确认。当将该磁盘升级为动态磁盘后,Windows98/Me等操作系统将不能再从该磁盘引导启动。

⑥单击“是”按钮,将显示“升级磁盘”警告框。在这里提示要升级磁盘上的文件系统将被强制卸下,并要求用户对该操作进一步予以确认。

⑦单击“是”按钮,系统将开始磁盘的升级过程。当升级完成后,将显示 “确认”警告框,单击“确定”按钮将重新启动计算机,以完成磁盘的升级过程。

在升级到动态磁盘时,应该注意以下几个方面的问题:

必须以管理员或管理组成员的身份登录才能完成该过程。如果计算机与网络连接,则网络策略设置也可能阻止我们完成此步骤。

将基本磁盘升级到动态磁盘后,就再也不能将动态卷改回到基本分区。这时惟一的方法就是,必须删除磁盘上的所有动态卷,然后使用“还原为基本磁盘”命令。

在升级磁盘之前,应该关闭在那些磁盘上运行的程序。

为保证升级成功,任何要升级的磁盘都必须至少包含1MB的未分配空间。在磁盘上创建分区或卷时,“磁盘管理”工具将自动保留这个空间,但是带有其他操作系统创建的分区或卷的磁盘上可能就没有这个空间。

扇区大小超过512字节的磁盘,不能从基本磁盘升级为动态磁盘。

一旦升级完成,动态磁盘就不能包含分区或逻辑驱动器,也不能被非Windows 2003的其他操作系统所访问。

2、将新磁盘设置为动态磁盘

①计算机安装新硬盘后,当第一次访问“计算机管理”中的“磁盘管理”工具时,将自动运行“写入签名和升级磁盘向导”窗口。

②单击“下一步”按钮,将显示“选择要写入签名的磁盘”页面,在该列表中选择要写入签名的磁盘。需要注意的是,磁盘在安装到系统前必须进行签名。

③单击“下一步”按钮,将显示“选择要升级的磁盘”页面,选择要升级为动态磁盘的磁盘。

④单击“下一步”按钮,将显示“完成写入签名和升级磁盘向导”页面,在这里要求确认签名并升级的磁盘。如果有任何不妥,可单击“上一步”按钮返回并重新进行设置。

⑤单击“完成”按钮,动态磁盘升级过程完成。

三、实现软RAID

软RAID也必须在多磁盘系统中才能实现。实现RAID-1最少要拥有两块硬盘,而实现RAID-5则最少要拥有三块硬盘。通常情况下,操作系统所在磁盘采用RAID-1,而数据所在磁盘采用RAID-5。

1、卷的类型

①简单卷

简单卷由单个物理磁盘上的磁盘空间组成,它可以由磁盘上的单个区域或链接在一起的相同磁盘上的多个区域组成。可以在同一磁盘中扩展简单卷或把简单卷扩展到其他磁盘。如果跨多个磁盘扩展简单卷,则该卷就是跨区卷。

只能在动态磁盘上创建简单卷。简单卷不能包含分区或逻辑驱动器,也不能由MS-DOS 或Windows 2003以外的其他Windows操作系统访问。如果网络中的计算机还在运行Windows98或更早版本,那么应该创建分区而不是动态卷。

如果想在创建简单卷后增加它的容量,则可通过磁盘上剩余的未分配空间来扩展这个卷。要扩展一个简单卷,则该卷必须使用Windows 2003中所用的NTFS版本格式化。同时不能扩展基本磁盘上作为以前分区的简单卷。也可将简单卷扩展到同一计算机的其他磁盘的区域中。当将简单卷扩展到一个或多个其他磁盘时,它会变成为一个跨区卷。在扩展跨区卷之后,不删除整个跨区卷便不能将它的任何部分删除。要注意的是跨区卷不能是镜像卷或带区卷。

②条带卷

利用条带卷,可以将两个或者更多磁盘(最多为32块硬盘)的空余空间组成为一个卷,

在向条带卷中写入数据时,数据被分割为64KB的块,并均衡地分布在阵列中的所有磁盘上。一个阵列是两个或者多个磁盘的集合。条带卷可以有效地提高磁盘的读取性能,但是它并不提供容错功能,任何一块硬盘的损坏都会导致全部数据的丢失。条带卷类似于RAID-0。

③跨越卷

利用跨越卷,也可以将来自两个或者更多磁盘(最多为32块硬盘)的空余磁盘空间组成为一个卷。与条带卷所不同的是,将数据写入跨越卷时,首先填满第一个磁盘上的空余部分,然后再将数据写入下一个磁盘,依次类推。虽然利用跨越卷可以快速增加卷的空量,但是跨越卷既不能提高对磁盘数据的读取性能,也不提供任何容错功能。当跨越卷中的某个磁盘出现故障时,存储在该磁盘上的所有数据将全部丢失。

④镜像卷

利用镜像卷即RAID-1卷,可以将用户的相同数据同时复制到两个物理磁盘中。如果其中的一个物理磁盘出现故障,虽然该磁盘上的数据将无法使用,但系统能够继续使用尚未损坏而仍继续正常运转的磁盘进行数据的读写操作,从而通过另一磁盘上保留完全冗余的副本,保护磁盘上的数据免受介质故障的影响。由此可见,镜像卷的磁盘空间利用率只有50%(即每组数据有两个成员),所以镜像卷的成本相对较高。要创建一个镜像卷,必须使用另一磁盘上的可用空间。动态磁盘中现有的任何卷(甚至是系统卷和引导卷),都可以使用相同的或不同的控制器镜像到其他磁盘上大小相同或更大的另一个卷。最好使用大小、型号和制造厂家都相同的磁盘作镜像卷,以避免可能产生的兼容性错误。

镜像卷可以大大地增强读性能,因为容错驱动程序同时从两个磁盘成员中同时读取数据,所以读取数据的速度会有所增加。当然,由于容错驱动程序必须同时向两个成员写数据,所以它的写性能会略有降低。镜像卷可包含任何分区(包括启动分区或系统分区),但是镜像卷中的两个硬盘都必须是Windows 2003动态磁盘。

⑤RAID-5卷

在RAID-5卷中,Windows 2003通过给该卷的每个硬盘分区中添加奇偶校验信息带区来实现容错。如果某个硬盘出现故障,Windows 2003便可以用其余硬盘上的数据和奇偶校验信息重建发生故障的硬盘上的数据。

由于要计算奇偶校验信息,所以RAID-5卷上的写操作要比镜像卷上的写操作慢一些。但是,RAID-5卷比镜像卷提供更好的读性能。其中的原因很简单,Windows 2003可以从多个磁盘上同时读取数据。与镜像卷相比RAID-5卷的性价比较高,而且RAID-5卷中的硬盘数量越多,冗余数据带区的成本越低。但是RAID-5卷也有一些限制。第一,RAID-5卷至少需要3个硬盘才能实现,但最多也不能超过32个硬盘;第二,RAID-5卷不能包含根分区或系统分区;RAID-1卷与RAID-5卷的区别如下表1所示:

2、实现软RAID

①在“磁盘管理”中,右击要设置软RAID的硬盘,并在快捷菜单中选择“创建卷”选项,将显示“创建卷向导”窗口。

②单击“下一步”按钮,将显示“选择卷类型”页面,在这里选择要创建的卷类型。通常情况下,为了保障数据的安全,应当选择采用RAID-1或RAID-5卷。

③单击“下一步”按钮,将显示“选择磁盘”页面。在左侧“所有可用的动态磁盘”列表框中选择要添加的磁盘,并单击“添加”按钮,即可将其添加至该RAID-5卷,并显示在“选定的动态磁盘”列表框中。

④动态磁盘添加安毕后,单击“下一步”按钮,将显示“指派驱动器号和路径”页面。选中“指派驱动器号”选项,并为该RAID-5卷指派驱动器号,以便于管理和访问。

⑤单击“下一步”按钮,显示“卷区格式化”页面。选择“按下面提供的信息格式化这个卷”选项,并采用默认的NTFS文件系统和分配单位大小。可以为该RAID-5卷指定一个卷标,以用于与其他卷相区别。

⑥单击“下一步”按钮,将显示“完成创建卷向导”页面,此时卷的创建完成。

⑦单击“完成”按钮,系统将自动格式化新创建的卷。至此,RAID-5卷已创建完成。

四、RAID卷的管理

1、添加镜像卷

对于已有的动态磁盘,可以简单地通过添加镜像卷的方式来提高数据的安全性。

在“磁盘管理”中,右击要添加镜像磁盘的动态磁盘,并在快捷菜单中选择“添加镜像”选项,此时将显示“添加镜像”对话框。在磁盘列表中选择要设置为镜像的动态磁盘,然后单击“添加镜像”按钮,至此镜像添加完成,需要注意的是,添加为镜像的磁盘空间必须大于或等于现存卷。

2、测试镜像系统或启动卷

关闭计算机,然后断开或关闭某个磁盘以模拟磁盘故障,使用剩余镜像来重新启动计算机。验证 Windows 可正确启动后,请关闭计算机然后重新连接磁盘,重新启动计算机。启动菜单出现时,选择仍保持连接状态的磁盘上的镜像。打开计算机管理(本地),在控制台树中单击“磁盘管理”,右键单击具有任一标有“失败的重复”的卷的磁盘,然后单击“重新激活磁盘。

3、重新激活 RAID-5 磁盘

如果 I/O 错误是暂时的,则可以尝试重新激活磁盘;打开计算机管理(本地),在控制台树中单击”磁盘管理“。右键单击局部出现故障的磁盘,然后单击”重新激活磁盘“,RAID-5 卷的状态应变为”正在重新生成“,然后变为”良好“。

4、软RAID的恢复

磁盘冗余的目的就在于当磁盘出现故障时,系统能够保存数据的完整性。虽然在RAID-1和RAID-5中某个磁盘成员的失败不会导致丢失数据,其他成员仍然可以继续运转,但是如果失败不能得到及时恢复,那么磁盘卷将不再拥有冗余的特性。因此,必须及时恢复失败的RAID-1和RAID-5。

1)修复镜像卷和RAID-5卷

在“磁盘管理”中,失败卷的状态将显示为“失败的冗余”,磁盘之一将显示为“脱机”、“丢失”或“联机(错误)”。可以通过下述操作来恢复镜像卷:

①确保该磁盘已连接到了计算机,并且已经加电。

②在“磁盘管理”中,右击标识为“脱机”、“丢失”或“联机(错误)”的磁盘,然后在快捷菜单中单击“重新激活磁盘”选项。此时该磁盘的状态应当回到“良好”,同时镜像卷应该自动重新生成。

如果磁盘被严重破坏或者不可能修复,在弹出的快捷菜单中将只能看到“删除”命令,此时Windows 2003将无法再修复该镜像卷。另外,如果磁盘连续显示“联机(错误)”,则有可能表明该磁盘很快就要发生故障了,应当尽可能快地替换该磁盘。

2)替换磁盘和创建新的镜像卷

如果经修复仍未能重新激活镜像磁盘,或者镜像卷的状态没有恢复到“良好”状态,就必须替换失败磁盘,并创建新的镜像卷。

①在失败的卷上右击鼠标,并选择“删除镜像”选项,将显示“删除镜像”对话框。

②从磁盘列表中选择丢失的磁盘,然后单击“删除镜像”按钮,将显示“磁盘管理”警告框,以提示用户确认。

③单击“是”按钮,将删除该镜像卷。然后右击该丢失的磁盘,并在弹出的快捷菜单中选择“删除磁盘”选项,将该磁盘删除。

④更换新的磁盘,并将磁盘设置为动态磁盘。

⑤创建新的镜像卷。新镜像卷的创建过程请参见前述“添加镜像卷”。

3)替换磁盘和重新生成RAID-5卷

①更换故障磁盘,并将它设置为动态磁盘。

②在“磁盘管理”中,右击失败磁盘的RAID-5卷,在弹出的快捷菜单中选择“恢复卷”选项,将显示“修复RAID-5卷”对话框。

③选择要在RAID-5卷中替换失败磁盘的磁盘,并单击“确定”按钮。此时RAID-5卷开始自动修复。

④右击失败的磁盘,并在弹出的快捷菜单中选择“删除磁盘”选项,并从系统中删除该磁盘。

篇5:Windows 7中与IE6应用程序相处

从Windows XP的IE6迁移到Windows 7的IE8:如果你已经部署或正在部署Windows 7,但是却要运行基于IE6的Web应用程序,那该怎么办呢?微软将在9月30日举办一次技术大会,为IE6向IE8迁移提供策略、标准和技术支持,

IE8应用程序兼容列表:这份文档中列出了哪些软件兼容IE8,、哪些软件不兼容IE8,并且经常更新,对IT专业人士非常有用;

迁移IE8过程中解决应用程序兼容问题:很多企业仍然在使用基于IE6的Web应用程序,如果想要部署Windows 7,那么这些企业需要一个完整策略和可执行路线将旧的应用程序迁移至IE8,这个文档就为IT专业人员提供了IE8兼容性问题的详细综述,并且提供了补救措施,

禁闭IE本地URL:该视频演示了如何禁闭IE6或仅用来浏览你所指定的URL。

使用IE8解决企业应用程序兼容性问题。

使用MED-V虚拟化IE:教你如何在需要使用IE6或IE7时利用MED-V来虚拟化你的Web应用程序。

篇6:实时通信在调车作业中的设计与实现

实时通信在调车作业中的设计与实现

调车作业中普遍采用了无线平面凋车设备,配合逐渐推广的计算机联锁系统,使调车作业在进路间和进路内的'安全保障进一步提高.但受到站内轨道电路的制约,加上地面调车信号与机车监控装置无法联锁,实际调车做业仍依靠司乘人员确认地面信号,导致调车机车”冲、挤、脱"以及冒进事故时有发生.

作 者:窦东东 张瑜 贾秀敏 Dou Dongdong Zhang Yu Jia Xiumin  作者单位:郑州铁路局长治北车站,450000,山西长冶 刊 名:铁道通信信号 英文刊名:RAILWAY SIGNALLING & COMMUNICATION 年,卷(期):2009 45(2) 分类号:U2 关键词: 

c语言学习总结

基于FPGA 的VME自定义总线接口设计论文

嵌入式系统低功耗软件技术分析论文

计算机课件

计算机应用基础教案

UCTD系统及其关键技术介绍

对未授权无线设备的检测方法

基于DSP和以太网的数据采集处理系统

计算机基础二级考试真题及答案

医院信息安全与系统监控研究论文

用Borland C++3.1实现外设与Windows应用程序实时通信
《用Borland C++3.1实现外设与Windows应用程序实时通信.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

【用Borland C++3.1实现外设与Windows应用程序实时通信(合集6篇)】相关文章:

Windows 95下智能数据采集系统2023-03-19

计算机应用基础报告2023-04-07

矿井通风与安全生产的关系研究论文2024-04-28

浅析基于PC的开放式数控系统论文2022-04-29

计算机基础知识课件2023-04-07

串行通信控制器85C30及其应用2022-12-25

计算机excel试题和答案2022-11-02

计算机基础课件2023-10-15

货车运行图像检测系统的实施2022-09-03

计算机基础知识题2023-11-02

点击下载本文文档