【GUI与shell】||windows
tj051181吧
全部回复
仅看楼主
level 6
tj051181 楼主
SHELL是windows的加壳程序,即用户可以直接看到的,比如explorer.exe(桌面)============================================================================GUI启动  Win 9X的GUI启动过程是非常复杂,更是微软公司的核心秘密,不为外人所知。而对普通用户而言,完全掌握这个复杂多变的机制也无必要,这里只对整个GUI启动机制做一个大致的说明。  1、GUI的配置文件  同所有复杂的系统一样,Win 9X主要是根据系统配置文件调用各类程序来组合系统,保证系统正常运行的。Win 9X的GUI系统配置文件以系统注册表为核心,以各系统目录下的INI文件为辅助配置。把握住系统配置文件,就掌握了系统的核心。  GUI系统的核心配置文件主要有5个,即:Win.INI、SYSTEM.INI、SYSTEM.DAT、USER.DAT和POLICES.DAT。  Win.INI和SYSTEM.INI据说是为Win 3.X下的Win 16保护模式程序保留的,Win 3.X在这两个文件中的设置在Win 9X 中大部分已移入系统注册表中。Win 9X下Win 32保护模式程序主要通过系统注册表完成配置,不需要这两个文件的支持。这一做法规范了应用程序的开发和使用,消除了随意设置INI文件的混乱,便于Win 9X统一管理系统,增加了系统的稳定性。但如果删除这两个文件,Win 9X系统无法启动,并提示“找不到SYSTEM.INI文件”,这说明Win 9X的启动还是离不开这两个文件的。  Win.INI提供了Win 16程序需要的字体设置、文件关联等种种信息,主要完成GUI下相应的环境配置,对Win 9X应用没有太大影响,如果没有这个文件,Win 9X将自动生成一个最简单的只有几行配置命令的Win.INI。  SYSTEM.INI则不同,它是Win 16的系统硬件配置文件,Win 9X又为其增加了一些新设置,以保证Win 16和Win 32相互协调,使Win 16可以调用VXD驱动程序,这一点在Win.COM提供的系统调试参数中已有充分体现。另外GUI的外壳程序(SHELL,即界面程序)、鼠标器、显示器等驱动程序必须通过SYSTEM.INI设置才能加载使用,这些决定了SYSTEM.INI是绝对不能删除的。这充分证明了Win 9X是一个Win 16和Win 32的混合系统,也揭示了Win 9X系统先天脆弱的根本原因。  SYSTEM.DAT和USER.DAT即所谓的系统注册表文件,是Win 9X的核心文件,Windows就是通过它来管理整个系统的。SYSTEM.DAT保存着硬件配置及软件安装信息, USER.DAT保存着与用户的个人设置有关的信息,前者只能有一个,而后者可以有多个。这两个文件共同作用,包含了系统的全部信息,在使用注册表编缉软件(如REGEDIT.EXE)时,这两个文件共同被修改,不能分开。它们的损坏将导致系统彻底瘫痪,无法挽救。不幸的是,系统注册表非常脆弱,缺乏自我整理和维护机制,当系统运行一段时间后,用户往往只能走上痛苦的系统重建之路。  在Win 95/96/97中,注册表的备份为 SYSTEM.DA0和USER.DA0,保存在\Windows下;在Win 98中,Win.INI、SYSTEM.INI、SYSTEM.DAT和 USER.DAT四个文件被合并备份成一个文件RB00?.CAB,保存在\Windows\SYSBCKUP下,默认保留5个。 
2008年01月21日 01点01分 1
level 6
tj051181 楼主
 每次GUI启动时系统会对备份文件自动更新,这种处理缺乏安全管理机制,难以保证备份文件不受错误信息干扰,多数情况下备份文件形同虚设。  令人遗憾的是,除了手工编缉注册表软件REGEDIT.EXE,Win 9X没有提供更有效的注册表维护工具。在Win 98提供了注册表检测软件 ScanReg.exe和ScanRegw.exe,这是一个进步,但它只能处理注册表的物理故障,无法解决结构性问题,其可靠性又有多大呢?  博大的注册表完全应该用一本专著来剖析,在《新潮电子精华本1》中也有简单的介绍,这里就不做更深的解释了。  POLICES.DAT是微软的MSN(Microsoft Network)注册支持文件,该网络国内用户很少,该文件也很少使用。  尽管没有更直接的资料介绍,但是有充分的理由证明在Win 9X的启动过程中,保存在\Windows\INF目录下的各种INF文件是Win 9X系统中最有力的支持文件。在启动系统的过程中,Win 9X会适时地调用这些文件,以装载相应的驱动程序。如果没有了这些文件,Win 9X也是无法启动的。另外,Win 9X的PNP技术主要是通过INF文件实现驱动程序安装的。 2、GUI的启动过程  GUI的启动过程主要由三个阶段组成:WinINIT.EXE阶段、16位保护模式启动和32位保护模式启动。  ⑴WinINIT.EXE阶段Win.COM开始运行后,首先调用\Windows下的WinINIT.EXE,该命令在同目录下寻找 WinINIT.INI,如果有则按照该文件配制对系统文件进行重新调整或升级,以保证整个系统的驱动程序能够得到及时更新。这是Windows系统支持 PNP技术,实现系统驱动程序升级的主要途径。这个过程自然是在DOS状态下完成的。  ⑵16位保护模式启动   Win.COM开始执行后,调入\Windows\SYSTEM下的VMM32.VXD,VMM32.VXD将处理器置于保护模式下,根据 SYSTEM.INI和注册表的配置开始启动GUI系统的16位保护模式。这可以保证系统支持Win16软件,更主要的是PNP BIOS(即插即用 BIOS)规范只提供16位保护模式接口,以PNP为硬件技术核心的Win 9X必须通过16位模式直接获得BIOS提供的硬件设备信息来配置系统,提高系统启动性能,否则对硬件的配置必须在实模式下从头开始。  GUI的启动首先加载Win 9X的系统驱动程序,再从PNP BIOS获得硬件设备信息,先后加载PNP设备驱动程序VXD和支持非PNP硬件所需的全部16位虚拟保护模式驱动程序VXD,分配系统资源,避免设备冲突,然后初始化所有的驱动程序(包括系统驱动程序和设备驱动程序),完成系统硬件配置。最后加载16位外壳组件USER.EXE、GUI.EXE、 KRNL386.EXE等,形成Win16的API,完成16位保护模式启动,此时,每个系统组件都已存在,但还不具使用界面。  ⑶32位保护模式启动  完成16位模式启动后,系统调用32位的外壳程序资源管理器,16位内核一看到这一调用,就先自动加载VWin32.386,由它加载三个32位DLL 库文件:USER32.DLL、GDI32.DLL、KERNEL32.DLL,形成Win32的API(这是Win 9X的核心), VWin32.386完成这一任务后,将控制权还给16位内核,16位内核再将控制权交给32位内核,开始32位保护模式启动。这时系统加载并初始化所有 32位驱动程序,这个过程与16位模式相同。  最后,运行GUI的外壳程序(该外壳程序由SYSTEM.INI中的[BOOT]节中“SHELL=”设置,默认是资源管理器),完成GUI启动。  3、GUI启动过程中故障的排除  GUI系统相当复杂,相关的技术资料却极少,这决定了用户不能象在DOS中那样根据启动过程去排查故障。  Win 9X对GUI的启动过程从未提供详尽的说明,仅在根目录下提供了一份启动日志文件BOOTLOG.TXT。该文件记录了启动过程使用的所有程序模块的加载情况,是解决系统问题的唯一依据。根据该记录可以全面了解GUI启动过程中发生的种种问题。  面对启动过程中的失败,主要有两个处理方法,一是用完好的源程序覆盖出现问题的程序,但其难点在于如何在各类软件包中找到那些完好的源程序,注意,直接调试、修复出现问题的程序在Win 9X下是难以想象的;一是从启动配置文件(CONFIG.SYS、AUTOEXEC.BAT、Win.INI、 SYSTEM.INI和注册表)中删除调用有问题模块的命令。后者主要用于解决某软件卸载失败出现的问题。  在图形模式GUI下解决系统问题时多会受到种种限制,而纯DOS模式不受系统制约,是最后的系统之门(对于电脑高手来说,DOS仍是永恒的主题)。  Windows系统的复杂性决定了排除那些莫名其妙的故障的难度,若对系统经过几次调整后仍未解决问题,最保险也是最快捷的办法就是重新安装系统。也许这是微软对用户唯一有用的建议。  在Windows下重新安装系统,要保证产品的序列号一致,否则系统可能拒绝安装。
2008年01月21日 01点01分 2
1