中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 如何用批处理修改硬盘的DMA 上一主题 | 下一主题
wjg0622
初级用户





积分 26
发帖 11
注册 2007-4-30
状态 离线
『楼 主』:  如何用批处理修改硬盘的DMA

如何用批处理修改硬盘的DMA为关闭?????????????????

2007-5-2 16:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dingamao
初级用户





积分 118
发帖 47
注册 2007-3-10
状态 离线
『第 2 楼』:  

先找找要修改哪些注册表项,剩下的工作其实很简单,LZ该不会单纯只是为了要别人发所有的代码给你吧?

2007-5-2 17:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wjg0622
初级用户





积分 26
发帖 11
注册 2007-4-30
状态 离线
『第 3 楼』:  

请 高手 发一下 代码!!!!!

2007-5-2 18:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 4 楼』:  

你给出 资料吧。。

DMA 的资料。。

这个倒可以用vbs 做一个出来发表。



知,不觉多。不知,乃求知
2007-5-2 18:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wjg0622
初级用户





积分 26
发帖 11
注册 2007-4-30
状态 离线
『第 5 楼』:  硬盘的DMA模式!

硬盘的DMA模式大家应该都知道吧,硬盘的PATA模式有DMA33、DMA66、DMA100和DMA133,最新的SATA-150都出来了!一般来说现在大多数人用的还是PATA模式的硬盘,硬盘使用DMA模式相比以前的PIO模式传输的速度要快2~8倍。DMA模式的起用对系统的性能起到了实质的作用。以前有很多文章介绍过如何打开DMA模式,我在这里也就不多说了。

  但笔者发现一个新的“问题”——Windows 2000、XP、2003系统有时会自行关闭硬盘的DMA模式,自动改用PIO模式运行!这就造成在使用以上系统中硬盘性能突然下降,其中最明显的现象有:系统起动速度明显变慢,一般来说正常Windows XP系统启动时那个由左向右运动的滑条最多走2~4次系统就能启动,但这一问题发生时可能会走5~8次或更多!而且在运行系统时进行硬盘操作时明显感觉变慢,在运行一些大的软件时CPU占用率时常达到100%而产生停顿,玩一些大型3D游戏时(比如极品飞车6)画面时有明显停顿(很多人这时以为是自己的显卡问题,当然如果你使用的是三年前的显卡玩这些游戏是有点老了,但如果你用的是今年才买的GF显卡那就不是它的问题了),出现以上问题时大家最好看看自己硬盘的DMA模式是不是被Windows 系统自行关闭了。查看自己的系统是否打开DMA模式:

  1. 双击“管理工具”,然后双击“计算机管理”;

  2. 单击“系统工具”,然后单击“设备管理器”;

  3. 展开“IDE ATA/ATAPI 控制器”节点;

  4. 双击您的“主要IDE控制器”;

  5. 点击“高级设置”。

  看到“设备0”,下面的传输模式应设为“DMA(若可用)”,再下面“当前传输模式”,如果是“Ultra DMA Mode *(*为数字,DMA33为2,DMA66为4,DMA100为5、DMA133为6)”,那么你的系统正常,但如果以前你自己设的是“Ultra DMA Mode 6”又没有改动,而现在是“Ultra DMA Mode 4”或“Ultra DMA Mode 2”更或者是“PIO 模式”而且改不过来!可能就是系统自行关闭了DMA模式了。

  分析问题:

  好了,先来说说问题是如何产生的。在Windows 2000/XP/2003中有这样一个设定: Windows IDE/ATAPI 端口驱动程序 (Atapi.sys) 累积收到总共6个超时或循环冗余检验 (CRC) 错误后,驱动程序将把通信速度(传送模式)从最快的直接内存访问 (DMA) 模式分步骤降为较慢的 DMA 模式。如果驱动程序继续收到超时或 CRC 错误,则驱动程序最终将把传送模式降为最慢的模式(PIO 模式)。 问题就在这里!一般来说一个正常的硬盘很少会有超时或循环冗余检验 (CRC) 错误,但是当我们使用这些系统里的挂起(也有叫休眠)并恢复计算机后就很容易造成超时或循环冗余检验 (CRC) 错误。因为系统设定的超时值为4秒,当系统向 ATA 磁盘发出读取请求时如果硬盘回应时间超过 4 秒的超时值时才会产生超时或循环冗余检验 (CRC) 错误,但因为系统在挂起(也有叫休眠)时硬盘是在停转状态中,恢复计算机时硬盘有个从停止到运动的过程,这就很容易造成大部分硬盘回应时间超过 4 秒的超时值。也就是说当我们使用计算机挂起6次后系统就会把通信速度(传送模式)从最快的直接内存访问 (DMA) 模式分步骤降为较慢的 DMA 模式。如果挂起6次以上则驱动程序最终将把传送模式降为最慢的模式(PIO 模式)。这就是Windows 系统突然变慢的原因。

  解决问题:

  若要为受影响的设备重新启用典型DMA或更快DMA的传送模式,请执行以下操作:

  1. 双击“管理工具”,然后双击“计算机管理”;

  2. 单击“系统工具”,然后单击“设备管理器”;

  3. 展开“IDE ATA/ATAPI 控制器”节点;

  4. 双击您要为其恢复典型 DMA 传送模式的控制器;

  5. 单击“驱动程序”选项卡;

  6. 单击“卸载”。

  当此过程完成后,重新启动您的计算机。当 Windows 重新启动后,将重新枚举硬盘控制器,同时与该控制器相连的每个设备的传送模式将重置为默认值。
   但这样只是把硬盘设备的传送模式重置为默认值,当我们再使用挂起系统时系统又会自行关闭DMA模式!所以我们还要做以下操作:

  1. 单击“开始”,单击“运行”,键入 Regedit,然后单击“确定”。

  2. 在注册表中找到并单击以下项:

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\0001

  和

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\0002

  3. 在“编辑”菜单上,指向“新建”,然后单击“DWORD 值”。

  4. 键入 ResetErrorCountersOnSuccess,然后按 Enter 键。

  5. 在“编辑”菜单上,单击“修改”。

  6. 键入 l,然后单击“确定”。

  7. 按照下列步骤操作,然后退出注册表编辑器:

  注意:上面注册表最后的项“{4D36E96A-E325-11CE-BFC1-08002BE10318}”列出的带有“0001”编号的子项对应于一台仅有一个 IDE 控制器的计算机的主要 IDE 通道和次要 IDE 通道。如果您的计算机有两个 IDE 控制器,则对于每个控制器,主要 IDE 通道和次要 IDE 通道的带有编号的子项分别是:“0001、0002、0003、0004、0005、0006……”。

  为检查是否找到了正确的子项,请检查子项的 DriverDesc 值是包含字符串值“主要 IDE 通道”,还是包含字符串值“次要 IDE 通道”。

  建立以上注册表键值的目的是:

  在Windows中,使系统向 ATA 磁盘发出读取请求时的 4 秒的超时值更改为 10 秒。还实现了一种较不严格的变通策略以在发生超时错误和 CRC 错误时降低传送模式(从较快的 DMA 模式到较慢的 DMA 模式,最终降为 PIO 模式)。以前的情况是,在每当累积发生的超时错误或 CRC 错误的总数达到 6 次时,IDE/ATAPI 端口驱动程序 (Atapi.sys) 将降低传送模式。当我们建立以上注册表键值实现新的策略后,Atapi.sys 仅在连续发生 6 次超时错误或 CRC 错误后才降低传送模式。

  这一新的策略实现后将大大降低系统降低或关闭DMA传送模式的机会。现在我们可以安心地使用挂起系统和高性能的DMA硬盘模式,再也不会发生系统性能突然下降的情况了。

2007-5-3 08:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bing614
初级用户





积分 44
发帖 20
注册 2007-5-2
状态 离线
『第 6 楼』:  

学到东西了,支持地,留个脚印.

2007-5-3 09:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wjg0622
初级用户





积分 26
发帖 11
注册 2007-4-30
状态 离线
『第 7 楼』:  怎么用批处理实现 "关闭"DMA

怎么用批处理实现 "关闭"DMA

请 高手指点!!!!

2007-5-3 17:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qq43142691
中级用户





积分 327
发帖 152
注册 2007-5-4
状态 离线
『第 8 楼』:  

呵呵...我知道

2007-5-4 07:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qq43142691
中级用户





积分 327
发帖 152
注册 2007-5-4
状态 离线
『第 9 楼』:  

@echo off
title 这是我们网吧用的优化P处理哦..by 彬 QQ43142691
:: 修改IDE通道检测设备模式,不接设备的设置为无,提高XP启动速度
:: 建议在系统第二次重新启动检测到所有已经安装的IDE设备后运行
@set _debug=
@echo %_debug% off & setlocal ENABLEDELAYEDEXPANSION
set hkey1=HKLM\SYSTEM\CurrentControlSet\Enum\PCIIDE\IDEChannel
set hkey2=HKLM\SYSTEM\CurrentControlSet\Control\Class
for /f "usebackq tokens=*" %%I in (`reg query %hkey1% ^| find /i "IDEChannel\"`) do call :_check "%%I"
goto :eof

:_check
::echo %1
set subkey=
for /f "usebackq tokens=3*" %%J in (`reg query %1 ^| find /i "driver"`) do set subkey=%%J
set DriverDesc=
for /f "usebackq tokens=3,4*" %%K in (`reg query "%hkey2%\%subkey%" /v DriverDesc ^| find /i "driverdesc"`) do set DriverDesc=%%K %%L 通道
reg query "%hkey2%\%subkey%" /v MasterDeviceType | find /i "0x1" > nul
if %errorlevel%==1 goto _ChgMaster
goto _CheckSlave

:_ChgMaster
reg add "%hkey2%\%subkey%" /v UserMasterDeviceType /t REG_DWORD /d 3 /f
echo “%DriverDesc%”的设备0检测方式设置为无。

:_CheckSlave
reg query "%hkey2%\%subkey%" /v SlaveDeviceType | find /i "0x1" > nul
if %errorlevel%==1 goto _ChgSlave
goto :eof

:_ChgSlave
reg add "%hkey2%\%subkey%" /v UserSlaveDeviceType /t REG_DWORD /d 3 /f
echo “%DriverDesc%”的设备1检测方式设置为无。
goto :eof

2007-5-4 07:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wjg0622
初级用户





积分 26
发帖 11
注册 2007-4-30
状态 离线
『第 10 楼』:  

我的意思 是 关掉DMA 让他慢点!!!

2007-5-4 12:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: