《深入理解Windows操作系统》笔记2

SDK中有一个工具依赖性查找工具depends.exe 可以看到进程的子系统类型。发现这个工具和VS6企业版中的Microsoft Visual Studio 6.0 Tools中的Depends"C:\Program Files\Microsoft Visual Studio\Common\Tools\DEPENDS.EXE")是一样的。晕!!

Windows子系统:

1、环境子系统csrss.exe包括下列支持:

a) 控制台文本窗口

b) 创建或删除进程和线程

c) 对16位虚拟DOS机进程的一部分支持

d) 其他一些函数,比如gettempfiledefinedosdeviceexitwindowsex

2、内核模式设备驱动程序win32k.SYS 包含:

a) 窗口管理器,包括采集键盘,鼠标的输入

b) 图形设备接口GDI(在NT4之前,作为用户模式windows子系统的一部分)

3、子系统DLL比如kernel32.DLLadvapi.DLLuser32.DLLGDI32.dll

4、图形设备驱动程序

USERGDI放在内核模式中,windows会不稳定吗?

答:在此NT4之前,一个错误指针会导致系统崩溃,将窗口管理器和GDI从用户模式迁移到了内核模式,不仅提高了性能,而且可以将稳定性降到最低!

Posix子系统

一个基于UNIX的可移植的操作系统接口的首字母缩写,这个POSIX标准有很多,Windows实现的是POSIX.1

POSIX子系统有助于将UNIX应用移植到windows平台上,然而,这个程序仍然被链接为可执行程序,不能调用windows函数。如果你需要unix移植到windows中并且可以调用windows函数,你需要购买UNIX TO WINDOWS的软件,比如www.MKSSOFTWARE.COM

如果要在windows编译链接一个posix程序,需要在SDK的中POSIX头文件和库文件中使用链接库psxdll.DLL

OS/2子系统

支持有局限,如果OS/2中设计的硬件及高级视频IO代码,在windows上使用该子系统不可用。

原生的OS/2 1.2上有16M的内存限制。而在windows提供的OS/2中可以使用512M

硬件抽象层HAL

C:\WINDOWS\Driver Cache\i386>dir

 驱动器 中的卷没有标签。

 卷的序列号是 18F6-A188

 C:\WINDOWS\Driver Cache\i386 的目录

2011-12-05  10:36    <DIR>          .

2011-12-05  10:36    <DIR>          ..

2008-04-14  20:00        62,857,674 driver.cab

               2 个文件     83,085,231 字节

               2 个目录 146,253,623,296 可用字节

如果打了SP3补丁,则在此CAB压缩包中有多个版本的HAL.DLL文件

C:\>dir ntoskrnl.exe /a/s

 驱动器 中的卷没有标签。

 卷的序列号是 18F6-A188

 C:\WINDOWS\system32 的目录

2008-04-14  20:00         2,144,768 ntoskrnl.exe

               1 个文件      2,144,768 字节

     所列文件总数:

               1 个文件      2,144,768 字节

               0 个目录 146,251,362,304 可用字节




其中,我们发现ntoskrnl链接了HALHAL又链接了ntoskrnl,相互使用了对方的函数。Ntoskrnl也链接了BOOTVID.DLL,这个是用来实现GUI启动屏幕的引导视频驱动程序,在XP系统以后的环境中还有一个附加的DLLkdcom.DLL它包含了内核调试器的基础代码,在XP之前,它被包含在ntoskrnl.EXE中。

WINDOWS 2000开始使用WDM驱动也就是windows驱动程序模型。从WDM来看,有三种驱动程序

1、总线型驱动:总线控制器,适配器,桥,带有子设备的设备提供服务器。比如PCI,USB

2、功能性驱动:这个是必须的,比如SCSI

3、过滤性驱动,一般只有OEM来提供放在总线型驱动之上

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值