Windows NT和Window 95的差异比较,NT在性能上支持多处理器,支持访问安全性,纯32位代码,程序地址空间保护。总而言之Windows 95除了是从16位代码发展而来,可以完全兼容运行DOS时代的程序,其他方面都没有任何优势。(哎,现在的脚本小孩们有谁用过Win95和DOS呢,本书还提及了当时代号为“Longhorn”下一代Windows系统,就是后来惨败的Vista,不得不说时间过得好快,我的技术学得太慢太晚了。)

  Windows API有分为以下几类:基本服务、组件服务、用户界面服务、图形和多媒体服务、消息和协作、网络、Web服务。

  程序是静态的指今序列,而进程是包含程序执行各种资源的容器,进程由以下元素构成:私有虚拟地址空间、一个可执行程序并被映射到虚拟地址中、已打开的句柄列表、访问令牌、进程标识ID、至少一个执行线程。

  每个进程有指向父进程或创建者进程,但父进程退出时并不更新子进程中的相关信息,也就是说一个子进程可能指向已经不存在的父进程。

  线程包括:一组CPU寄存器状态、用户栈内核栈、TLS、线程标识ID、安全环境(可选)。寄存器、栈、TLS合称线程的环境(context),GetThreadContext函数可得到CONTEXT信息块。

  虚拟内存:虚拟地址到物理地址要经过一层映射,且虚拟内存有可能被交换到磁盘文件中。x86中通常0x80000000以下为用户空间,以上为系统空间。

  对象和句柄:这里的对象指的是用户对象,但对象所定义的数据结构只有在内核态中能访问修改,而句柄就是用于此对象在用户层和内核层间的联系。

  安全性:有两种访问形式,自主访问控制,即当前访问权限是否在对象访问控制列表中。特权访问控制,即使无法联系到对象所有者,也能通过某种方式访问被保护对象。

  注册表:是系统数据库,包含了引导和配置系统所必要的信息。

  内核调试:命令行工具Kd.exe或图形版工具Windbg.exe,这两个工具提供了相同的命令集。可以使用内核扩展命令(以!开头)来显示内部数据结构的内容。使用dt命令显示数据结构,如dt nt!_*,dt nt!_LIST_ENTRY,-r参数递归显示子结构。

01-30 13:25