编程语言

img crunch

What Happens to File Systems During System Boot

发表于2004/10/14 14:06:00  1182人阅读

What Happens to File Systems During System Boot

 

 

系统引导过程中,文件系统被初始化;特别是在I/O系统初始化过程中。I/O manager建立global file system queue以及初始化被OS loaderPnP Manager加载的文件系统filter driver

 

system (OS) loader and the PnP Manager.

 

Following is a summary of selected portions of the system boot process that are of interest to file system and filter driver developers.

 

1 系统boot过程中,OS loader在其转换 控制 到内核之前加载boot file systemRAW file system、以及所有SERVICE_BOOT_START类型的驱动程序,当内核获得控制权的时候这些driver已在内存当中了。

 

Driver被按照在load order groups中被指定的顺序加载。在文件系统filter中,那些被一个新的文件系统filter driver load order groups指定的filter被先于其他的filter driver加载。关于这些load order groups详细描述,见File System Filter Driver Load Order Groups

 

接下来(then),所有在load order group中指定的filter load 注意:“filter groups还包括storage filter而不仅仅是文件系统filter,而且,还包括第三方的filter driver而不仅仅指buildin(内建)的filter driver

 

2 IO Manager 创建一个有4segment的全局文件系统队列:CD-ROMdisktape以及network file system各一个。以后,当每个文件系统被注册时,他们的Controld device object被添加到相应的队列的segment中。然而,至此,还没有文件系统被注册,所以这个对列是空的。PnP Manager呼叫所有SERVICE_BOOT_START类型driversRAW file systemDriverEntry例程。如果有SERVICE_BOOT_START 类型的driver需要依赖其他的drivers,最好是这些被依赖的drivers已经被加载并启动了。

 

3 PnP manager通过呼叫boot device driverAddDevice例程来启动boot device,如果一个boot device还有子device的话,这些子device会被枚举。假如这些子devicesboot-start类型driver的,他们也会被配置并启动。如果一个设备的驱动程序并不是所有都是boot-start类型的,PnP Manager就会为这个设备创建一个devnode,但并不启动它.

至此,所有的boot driver被加载,boot device被启动。

 

4 PnP manager检查PnP device tree 发现并加载每个与 devnode 相关联但还没有运行的driver,当每个PnP Device启动后,PnP manager枚举该设备的子设备。PnP Manager配置这些子设备,configures the child devices, 加载他们的设备驱动程序,并启动他们。

PnP Manager加载每个设备的驱动程序并不去管这些driverStarttypeloadordergroup或者依赖的values。在这一步骤中,PnP manager只配置和启动能被枚举到的device。如果一个设备不能被枚举,PnP Manager将忽略这些设备而且不会再去枚举他们的子设备,尽管他们的子设备能够被PnP枚举到。

 

5 PnP Manager加载并初始化那些至此还没被加载的SERVICE_SYSTEM_START类型的驱动程序。FsRec就是在此时被加载的。注意,尽管FsRec是在“boot file systemload order group中, FsRec却不是boot file system,实际的引导文件系统是被mountedboot volume的文件系统。该文件系统在引导过程中被加载。

以后,在SERVICE_SYSTEM_START阶段,那些在”file systemload order group中的文件系统被load,他们包括命名管道文件系统(NPFS)和邮槽文件系统(MSFS),但不包括任何介质类型的文件系统,诸如NTFS,FAT,CDFS,UDFS.

网络文件系统处于“netword load order group中,也是在这个阶段被load

 

6 在所有引导时被加载的驱动程序被初始化后,IO Manager呼叫所有driver都拥有的reinitialization 例程。reinitialization 例程是一个被boot driver注册的callback例程,一个需要在引导过程中的这个地方被附加的处理. Reinitialization通过调用 IoRegisterBootDriverReinitialization or IoRegisterDriverReinitialization来注册。

 

7 The service Control Manager加载已经被加载的SERVICE_AUTO_START类型的驱动程序。

 

File System Recognizer(文件系统识别器)

系统引导后,所有被attach到系统的volumestorage device driver被加载并启动,然而,并不是所有的内建的文件系统被加载了,也不是所

有的文件系统volumemounted了。FsRec执行这些任务还需要处理IRP_MJ_CREATE请求。FsRec在系统启动过程中的SERVICE_SYSTEM_START被加

 

载,注意,虽然FsRec是在“Boot File Systemload order group中,然而,FsRec并不是boot File system,实际的boot file system却是

 

在引导过程中被加载的文件系统mountedboot file ststem

 

 

阅读全文
0 0

相关文章推荐

img
取 消
img