自己动手写操作系统

Virtual PC 5.2 下 DOS7.1 中 运行.com文件相关问题
2009-09-09 12:55

     刚才在进入dos后,编译.asm文件获得.com文件,但系统会出现:emm386:unrecoverable privileged operation error #n9.press enter to reboot.. 的显示。

     在网上一搜有如下解决办法:

               在dos下修改config.sys文件,将emm386那一行去掉即可。
                (修改文件的命令为:edit config.sys)

       但基本上没人更深究其原因,于是我有搜了一下config.sys相关内容发现原来如此:

     Config.sys是用来在启动时加载系统文件的。
加载文件的命令是Device,比如每个Config.sys里都有一条命令 Device=Himem.sys ,这就是加载Himem.sys的命令。
另外,这里还可以设置Dos命令占用空间,比如DOS=High,UMB
可以设置临时文件夹,比如 Set Temp=c:/Temp
而且Config.sys和Autoexec.bat相结合,还可以制作多模式启动菜单。

一些在config.sys中经常用到的配置项目如下:

1、FILES=数字

表示可同时打开的文件数,一般可选择20到50,需要注意的是,如果把FILES的值设得过大会占用过多的基本内存。系统缺省为FILES=8。

2、BUFFERS=数字

表示设置磁盘缓冲区的数目,通常设置为20-30左右。缺省值一般为15。磁盘缓冲区是一块内存区,用于存储从磁盘读入的数据或存储写到磁盘的数据。 

3、DEVICE和DEVICEHIGH

用于加载一些内存驻留程序,用于管理设备。比如内存管理程序和光驱驱动程序等。如:

DEVICE=C:\DOS\HIMEM.SYS

DEVICE=C:\DOS\EMM386.EXE RAM

DEVICEHIGH=C:\CDROM\CDROM.SYS

DEVICEHIGH与DEVICE的不同是前者将程序加载入高端内存。

4、HIMEM.SYS和EMM386.EXE

DOS只能直接使用640KB的内存,即基本内存,必须依靠其他内存管理程序来使用更多的内存,这两条命令就是最常用的内存管理程序。

其中640KB到1MB之间的内存被称为高端内存,是系统保留使用的。1MB以上的内存成为扩展内存,HIMEM.SYS就是负责管理扩展内存的。

EMM386.EXE负责管理高端内存并在扩展内存中模拟扩充内存供某些软件使用。

因此为了使用更多的内存,配置文件中应有以下指令。

DEVICE=C:\DOS\HIMEM.SYS

DEVICE=C:\DOS\EMM386.EXE RAM

需要注意的是:EMM386.EXE必须要求先安装HIMEM.SYS,因而必须确保安装HIMEM.SYS的配置命令在EMM386.EXE之前。

5、DOS=HIGH,UMB

一般情况下,需要CONFIG.SYS文件加入这条命令,这样会将DOS的系统文件移入高端内存,空出更多的基本内存给其他软件使用。需要注意的是,如果没有安装EMM386.EXE,UMB,那么这条指令将是无效的。

下是一个典型的CONFIG.SYS文件内容:

DEVICE=C:\DOS\HIMEM.SYS (加载himem,扩展内存管理器)

DEVICE=C:\DOS\EMM386.EXE NOEMS (高端内存并入扩展内存的工具)

BUFFERS=15,0          (缓冲区数目)

FILES=50            (同时打开的文件数)

DOS=UMB            (系统把DOS本身放在什么地方)

LASTDRIVE=Z          (驱动器盘符最大可以用大哪个)

DOS=HIGH                          

DEVICEHIGH=C:\DOS\ATAPI_CD.SYS /D:MSCD000 /I:0 (加载光驱驱动程序。)

STACKS=9,256

此外,在CONFIG中还可以配置菜单式多重任务选择的配置,用于不同任务的选择,比如玩游戏、设置虚拟磁盘等,不过在这些应用在目前已经不常用了,这里就不多做介绍了。

一个小小的错误背后居然有如此之丰富的内容,值得深思。

 

http://hi.baidu.com/lihui_lihux/blog/item/c22b1e0a9a6be339e9248800.html

你可能感兴趣的:(c,dos,存储,扩展,任务,磁盘)