|
Windows Internals
Windows OS Internals
在《Showstopper试译》一文的评论中,几位朋友都建议不要把术语翻译成中文。我很能理解这种观点。但是线下调查时,也有一种意见建议尽可能翻译。单纯的讨论可能很难得出结论。不妨以实际的一段来比较一下两种效果。
以下是英文原文,加粗的当属术语。
When the builders needed outlets for their nervous energy, they practiced spinning basketballs on one finger or tossed baseballs 更多...
Showstopper是本好书,几乎每个深刻思考过软件的人都喜欢这本书。这本书的英文版已经卖完,而且目前也还没有重印的计划。作者对出中文版非常高兴和期待。这两天,尝试翻译了该书的第8章。对于这样一本具有报告文学性质的著作,翻译起来真是很难。为了将这本书翻译好,现拿出第一部分的草稿,来征集大家的意见。特别是以下几个问题:
1)人名地名要不要翻译成中文?
2)计算机术语要不翻译成中文?
3)语言风格。
8 更多...
除了串行口、1394和USB 2.0这些链接方式外,WinDBG还支持一种很特殊的连接方式来做内核调试。这种方式被称为EXDI,通常写为eXDI。简单来说,EXDI是WinDBG与硬件调试器协同工作的一个接口。
《软件调试》的第7章介绍了JTAG调试协议和Intel CPU的JTAG支持,即ITP/XDP接口。ITP调试器借助专用的硬件设备(ITP调试仪)通过CPU的专用信号引脚与CPU通信,实施调试任务。
ITP/XDP调试器都有自己的软件,可以观察内存、设置断点、接收CPU的事件等。但如果使用ITP调试器调试Windows操作系统或者其中的驱动程序时,一个明显的问题便是难以处理调试符号和支持操作系统相关的观察功能,比如WinDBG的那么多个扩展命令所提供的功能。于是,一种很自然的想法便是把ITP调试器当作一种读写数据的特殊连接方式,让其为WinDBG传递数据。 更多...
拙作《软件调试》出版两个月了,有热心读者建议我讲些阅读这本书的方法。有读者愿意读自己的书,当然是好事,再说读者是客户,他们的意见就是命令,不能怠慢。粗略思考一番,计划先为《软件调试》的每一篇写一个导读短文。总为开篇,今日先谈谈《软件调试》这本书的篇章结构,用软件的术语就是架构,用写作的术语也就是提纲。
从最初的书名说起
早在2003年,我就萌生了写一本关于软件调试的书的念头。但是软件调试是个大话题,有很多东西可以写,必须选择好一个角度才能写出一本好书来。于是我开始搜索当时已经有的书,无论是美国出的,还是英国出的,一共找到了十来本。而后,逐一了解了已有的这些书,归纳了它们的主要内容和特色。 更多...
在Vista之前,NTLDR是Windows操作系统的加载程序,它负责将CPU从实模式切换为保护模式,加载内核文件和启动类型的驱动程序,然后把执行权交给内核文件的入口函数,即KiSystemStartup。
从要完成的任务角度来看,NTLDR内部又分为两个部分,一部分负责接受执行权,做模式切换,硬件检查,即启动的准备工作,这部分通常称为boot;另一部分负责加载内核文件,并为内核的运行做必要的准备,通常称为OsLoader。
Vista将以上两个部分分成两个独立的程序文件,即BootMgr和WinLoad.exe。下图描述了BootMgr和WinLoad的相互关系和它们在启动过程中的作用。 更多...
大家都知道,对于位于当前调试目标中的指令,可以使用WinDBG的u命令进行反汇编。u命令的参数是要反汇编代码的地址值或者符号,如果不指定,那么WinDBG会使用当前程序指针寄存器所指向的代码,例如:
0:001> untdll!DbgBreakPoint:7c901230 cc int 37c901231 更多...
有人说,Windows成功的一个关键是Win32 API。这句话可能有所偏颇,但也不无道理。作为一个操作系统,其成功的关键是上面要有丰富的应用软件,因为用户花钱买操作系统的目的绝不是为了整天折腾控制面板或者“观赏”启动过程。要想有丰富的应用软件,那么必须有一大批程序员愿意在上面开发。要有程序员喜欢在上面开发,那么就要有便捷的开发接口,和高效的开发环境。从这角度来看,精湛的Win 32 API确实对Windows的辉煌有着举足轻重的作用。
Win32 API的主要缔造者是Mark Lucovsky,与Windows调试子系统的缔造者相同。 更多...
我在《软件调试》一书的2.7节介绍了CPU的分页机制,因为这属于这本书的支持性内容,考虑篇幅限制,没有介绍启用PAE的情况。书出版后,很多读者对这一内容很感兴趣,也有读者遇到了启用PAE的情况。因此决定写这篇短文来介绍一下PAE的概况,以及如何在启用PAE后的系统中做2.7.5节的试验。
PAE是Physical Address Extension的缩写,即物理地址扩展。简单来说,就是把IA-32处理器的寻址能力从原来的4GB扩展到64GB。寻址4GB空间,要求物理地址的宽度为32位。类似的,要寻址64GB空间,那么物理地址的宽度就是36位。因为这个原因,PAE又被称为PAE-36bit。 更多...
今天收到了编辑部快递给我的《软件调试》!
下班一进门,就看到了邮包,迫不及待的打开外面的包装后,里面是印有博文标记的纸袋,包裹的严严实实。因为《软件调试》的体型比较大,所以将其从纸袋中取出来还是费了点劲,也许是因为我有些激动。:-)
小女儿跑过来,要拿过来看一看,抱在怀里没走几步就喊重,显然这本书对她来说是有些重(后来称了下,1800克:-))。我把书接在手中,看着好亲切。仔细看了封面和封底后,大致翻阅了一下序言和正文,字体、行距、代码和插图看着都很舒服。特别是我担心的几幅插图,印刷出来后也很清晰。接下来,我想对它做一个“压力测试”。把书翻到差不多中间一页,向两侧用力掰了掰,然后再合上,看看书脊,没留下任何印记。看来装订的很牢固(不比担心像有些书那样一本被翻成几本)。而且翻开到中间页时,两边两页的文字都清楚可见。这样检查一番后,心中悬了许久的石头落地了。或者说持续了三年多的一次马拉松长跑终于到终点了。 更多...
《软件调试》于上周进入工厂印刷,第一本有望在本周装订完成。第一本审查无误后,那么第一批600册将在下周完成!
同时,《软件调试》的主页也初步建成,网址为http://advdbg.org/books/swdbg/。欢迎大家访问和提宝贵意见!
更多...
好消息,今天一早看到了Gregg的来信,他兴奋的告诉我机械工业出版社(华章)已经购买了Showstopper中文版的版权,双方正式签约。因此,这本英文名著的中文版本应该在今年年内就能与大家见面了。:-)
接下来应该是比较艰辛的翻译工作。这本书首先是一本好的报告文学,作者笔触灵动,妙语连珠,因此最好有一位文科的人来翻译。但同时,这本书又涉及到较深的技术和对软件工程的深刻思考,所以翻译的人还是要懂计算机。
书名也体现了这一点!不论是主标题和副标题都不那么容易翻译!:-)欢迎大家来试一试呀!
主标题: 更多...
OSR新闻组中有人询问如何知道一个DUMP文件对应的目标系统中有几个CPU。其实这有很多方法,聊举数例(:-))。
1)首先如果使用WinDBG打开DUMP文件,那么从WinDBG输出的概要信息中就可以判断出CPU的个数。举例来说,以下是打开一个来自双核CPU系统(Vista)的DUMP文件时WinDBG所显示的信息:
Windows Vista Kernel Version 6000 MP (2 procs) Free x86 compatibleProduct: WinNt, suite: 更多...
在下面这小段代码中,存在一个故意的除零操作,并且使用了Windows操作系统的结构化异常处理(SEH)机制对其进行了保护。
59: n=1;
60: m=0;
61: __try
62: {
63: n=n/m;
更多...
开发软件应该写文档么?如果是应该写成什么样?是拿个template然后填充些不痛不痒的废话么?
先看一下下面这幅图:
这是NT团队开发NT时使用的文档。仔细看那个标签,NT OS/2 Design Workbook。我首先留下深刻印象的是Workbook这个名字,非常的平实,工作手册——帮助设计的手册,备忘和方便查阅。而后,对于这个厚度,有人可能吃惊有这么厚!对于NT这样复杂的系统,这么厚应该都是非常精练的语言了。如果像今天的很多文档那样,翻了几页还没看到正文,那么不知要有这样的多少册。 更多...
WinDBG是个调试器,但其本身也是个软件,也有BUG,这就好像医生也会生病一样。如何调试WinDBG呢?WinDBG的设计者们早考虑到了。比如.dbgdbg命令就是启动一个调试器来调试当前的调试器。
再如,使用.outmask命令可以让WinDBG输出自己的调试信息。参数可以是下表中的各个标志位的组合。
Value
Default setting
Description
1
On
Normal output
2
On
Error output 更多...
不论是Windows XP/2000,还是刚兴起的 Windows Vista,它们都是基于经典的Windows NT内核。 NT内核从1998年开始开发,历时将近5 年与1993年7月26 日发布,即NT 3.1。
在开发NT内核的近 5年中,有很多精彩的故事,和发人深省的东西,这些东西既有软件工程方面的、技术方面的,也有团队协作、和最基本的人性方面的。
幸运的是,有一本书很好的记录了开发NT内核的人和事,这本书的名字叫 《Showstopper》。
http://www.amazon.com/Show-Stopper-Cloth-BREAKNECK-GENERATION/dp/0029356717 更多...
Windows Internals第一版的书名叫Inside Windows NT,出版日期是1992年11月,作者是Helen Custer。Helen是NT团队的技术编辑。从出版日期看,这个日期比NT 3.1正式发布的日期还要早8个月。
第二版的书名还叫Inside Windows NT,尽管已经介绍了一些处于开发中的Windows 2000(NT 5.0)的内容。这一版的出版日期是1998年4月27日,作者是David Solomon。以下链接是当年的新闻发布资料。
http://www.microsoft.com/presspass/press/1998/apr98/winntpr.mspx 更多...
在ReactOS的网站上(http://www.reactos.org/en/interviews.html),有去年年底时对几个主要设计者的采访纪录,值得一看。
Art Yerkes Art, born in Philadelphia, PA, USA in 1974. He's been involved with ReactOS since 2002 ...by frik85 on 2006-12-28
Johannes Anderwald Johannes Anderwald, born 更多...
Alex是ReactOS的设计者之一。以下是ReactOS网站上他的简介(http://www.reactos.org/wiki/index.php/Alex_Ionescu):
Early Life
Alex Ionescu was born on April 26th, 1986, in the city of Bucharest, RomaniaSon of a doctor and an engineer, he took up a passion with computers at 更多...
不知道这是不是第一届PDC大会,但可以看到很多重量级的人物在其中演讲。再也不会有这样的PDC了!
Microsoft Win32 Professional Developers Conference VideotapesMicrosoft University is pleased to announce the availability of a set of 22 videotapes of key sessions from the Win32 Professional Developers 更多...
之前看到了很多人在虚拟机上安装Vista的经历,大多都是有这样那样的问题。不是安转有问题(Windows Vista Beta 2 and Virtual PC 2004: Installation Cannot Be Completed),就是运行的不好(Windows Longhorn/Vista Beta1 on Virtual PC)。今天自己实际安装了一把,记录如下。
Host机器:Windows XP SP2,IBM T40笔记本电脑,1G内存,80G硬盘。
虚拟机:Virtual 更多...
针对目前OS和进程架构的诸多问题,MSR的一个名为Singularity 的项目小组提出了很多新的理念,并实现了一个原型。
他们的主页是:
http://research.microsoft.com/os/singularity/
这是发表在MSDN杂志上的文章:
{End Bracket}
James Larus, Galen Hunt, and David Tarditi
When the C and C++ programming languages were invented, 更多...
使用SetupAPI安装驱动程序时,如果出现问题,往往比较难以调试。MSDN介绍了如何让SetupAPI输出更多信息到记录文件,和如何理解记录文件的信息。
Setting SetupAPI Logging Levels
[This is preliminary documentation and subject to change.]
You can control the amount of information that is written to the SetupAPI log, 更多...
2006,7月18日,微软宣布吸纳Winternals/Sysinternals。
http://www.microsoft.com/presspass/press/2006/jul06/07-18WinternalsPR.mspx
Winternals/Sysinternals的两位创始人Mark Russinovich和Bryce Cogswell也分别到了微软的Platforms and Services Division (PSD)和Core Operating Systems Division部门。 更多...
想知道关于WinFS开发的一些内幕信息么?想了解WinFS开发的最新情况么?WinFS团队的BLOG是寻找这些问题答案的不二选择。
以下两篇特别值得推荐:
Monday, June 26, 2006 8:26 PM
Update to the Update
Hi. Wow there has been a lot of, let’s say, interest in the posting Friday. I knew there would be interest, and I knew 更多...
Windows Server“Longhorn”与 Windows Vista 中的新增网络功能
注意:
本文所述的功能可能随时发生变化。由于市场、技术或其它方面的原因,有些功能可能不会包含在最终的产品中。
本页内容
摘要
简介
协议与核心网络组件
无线和基于 802.1X 的有线连接
网络基础结构
弃用的技术
总结
相关链接
摘要
Microsoft?Windows Server?“Longhorn”(目前处于 更多...
微软网站的文章,尽管有点老,但是读起来仍觉得津津有味,归纳的很不错。有一篇关于Vista的这样的文章就好了。
Kernel Enhancements for Windows XP
更新日期: 2003 年 1 月 13 日
本頁內容
Introduction
Registry Enhancements
Windows Support Enhancements
I/O Subsystem
Memory Management 更多...
Don Burn: ...the checked build of Windows when they pry it from my cold dead workstation.
This artical is abstracted from?WHDC website by Don.
The checked build of Windows is the Rodney Dangerfield of Redmond, "It don't get no respect," even from many 更多...
大家一定听说过刷系统BIOS、刷网卡(上面的firmware)、刷显卡。其实CPU也是支持并可以刷新升级的。
随着CPU复杂度的不断提高,以及一些复杂指令(如多媒体和浮点运算)的引入,测试CPU的复杂度也在成倍提高。再加上集成芯片的生产特征使得可以通过软件刷新产品化的CPU成为必要。
刷新的具体过程和刷其它firmware很相似,通常是由BIOS程序在POST的早期阶段通过CPUID指令把新的数据(2048字节)更新到CPU内部的可擦写ROM上。
不过也有工具可以在操作系统启动后来更新(http://www.urbanmyth.org/microcode/) 更多...
Windows XP附带了一个很好的小工具driverquery,使用它可以很轻松的查询出本机或远程系统中的驱动信息。尤其是给系统管理员和驱动程序开发人员带来了很大方便。
Driverquery是个控制台程序,位于Windows系统的system32目录下(大小50多K),因此你可以在任何控制台窗口运行它。
不带任何参数,便可以列出目前系统中已经加载的所有驱动,是按名字列出的。
Module Name Display Name 更多...
When we debug kernel drivers through a 1394 or COM cable using windbg, we can use .kdfiles command to transfer new driver build to the debuggee machine from the debugger machine or a share foler at any place accessable. The steps are as below.
1, Create 更多...
Gflags Flag Reference
摘自TechNet,原始链接为:http://technet2.microsoft.com/WindowsServer/en/Library/6a183942-57b1-45e0-8b4c-c546aa1b8c471033.mspx
Buffer DbgPrint output
Abbreviation
ddp
Hexadecimal value
0x08000000
Symbolic Name
更多...
使用WinDbg进行Windows内核调试通常需要两台计算机,一台是Debuggee,一台作为Debugger,又成为Host。使用Virtual PC可以在同一台电脑上进行内核调试,对于某些调试任务来说还是非常有用的。
下面以Virtual PC 2004为例,介绍一下利用Virtual PC进行Windows内核调试的详细过程。
1,下载并安装Virtual PC 2004,从略。
2,启动Virutal PC Console(控制台),创建一台新的虚拟PC,安装向导的提示配置硬盘、内存等参数。 更多...
BlackHat的历年高端培训资料:
http://www.blackhat.com/html/bh-media-archives/bh-multi-media-archives.html#USA-2005
将由微软的两个人(Jason Geffner & Scott Lambert)deliver的培训:
http://www.blackhat.com/html/bh-usa-06/train-bh-us-06-sl-advmal.html
大家有空时慢慢挖掘吧,其中有用的内容应该不少 更多...
Where do "checked" and "free" come from?
By Larry Osterman
People who have MSDN or the DDK know that Windows is typically built in two different flavors, "Checked" and "Free". The primary difference between the two is that the "checked" build 更多...
根据Raymond Chen的关于Dr. Watson的文章,Dr. Watson的第一作者名为Don Corbitt。以下是关于他的一篇报道。
Downed Bellevue Pilot Was An Inventor
Sherry Grindeland
Seattle Times Eastside Bureau
BELLEVUE
Don Corbitt of Bellevue was developing instrumentation to make general 更多...
最近,VISTA再次宣布延期,企业版本从2006年10月延迟到11月,普通用户版本从2006年年底推迟到2007年1月。看来VISTA当之无愧成为微软历史上开发时间最久的一个Windows版本。让我们一起记下VISTA的时间表:
2001年10月25日: Windows XP发布,微软内部开始筹划Windows的下一个版本,代号为Longhorn。
2004年8月6日: 微软完成Windows XP Service Pack 2的开发,SP2包含了很多安全方面的增欠,也加入了部分其它新功能,从SP2的近200MB的安装包就可以知道,SP2决不是一个单纯的补丁。SP2的开发占用了很多开发力量,这无疑成为Longhorn延期的一个原因。 更多...
至少两年前就听说Windows将支持通过USB 2.0接口进行内核调试。Vista推出后从它的配置文件中终于看到了配置USB的选项,安转WinDbg6.6后,在建立内核调试的对话框中也可以看到USB的TAB了。
但是帮助文档中却没有详细的说明介绍如何具体操作。于是很多人开始询问:
Yeah yeah yeah ... we've heard THAT before ... :)
Gary G. Little
-----Original Message-----From: bounce-247538-27300@lists.osr.com[mailto:bounce-247538-27300@lists.osr.com] 更多...
ReactOS是开源的仿Windows系统,与WINE只模拟WIN32 API不同,ReactOS是一个彻头彻尾的'Windows'系统——从内核到API。
但是近一段时间传出了很多ReactOS涉嫌抄用Windows源代码的评论和消息。比如下文是ReactOS的开发者之的发言。
by sedwards on 2006-01-27
Hello,There has been a lot of talk about possible tainted code in ReactOSand or 更多...
大家知道,DDK公开了两个内核API用于产生BSOD,分别是KeBugCheck()和KeBugCheckEx()。其原型分别如下:
VOID KeBugCheck(IN ULONG BugCheckCode );
VOID KeBugCheckEx(IN ULONG BugCheckCode, IN ULONG_PTR BugCheckParameter1, 更多...
Windows Internals可谓是迄今为止讨论Windows深层结构的最好资料。该书的二位作者David Solomon和Mark Russinovich(严格说来他们是从从第三版开始合作的)也在业界有着非同凡响的声誉。早听说他们有关于Windows内核的培训,心中估计价格也一定不菲,但是觉得应该和MindShare的培训差不多,通常3~5天的课,每个人要800~1000美金。
但是今天仔细看了一下2006年Windows Internals培训的计划和价格,哇,不仅吃了一惊,5天的培训(包括实验)居然近3000美金。每也就是天的价格约600美金。看来要想听听大师的声音(或者说面对面提问和讨论)真的不是那么容易! 更多...
听说过Captive么?简单说它是Linux下完全读写NTFS文件系统的一个免费方案。因为其它Linux下的免费NTFS驱动大多在写NTFS文件系统时会有问题。所以这个Captive号称彻底解决了这一问题,因此受到很多人的特别青睐。之所以能彻底解决问题呢?原因是使用微软的NTFS驱动来访问NTFS文件系统,可谓原汤化原食!
那么如何让NTFS驱动在LINUX下跑起来呢?很多人自然想到虚拟机技术。但是细想仍然有问题,如果使用虚拟机,那么虚拟机里的NTFS驱动如何与作为HOST OS的LINUX进行文件操作这样的密集型通信呢,岂不是很慢? 更多...
今年一月份起,Channel9陆续访谈了一些微软内部的高级设计师和架构师,每次探讨Windows内核的一个方面。尽管录像和采访水准比.NetShow差很多,但是正因为采访的场合就在办公室,气氛也很随意,又很有针对性,因此谈的内容还是很值得一看的。建议大家茶余饭后边听边消遣一下。
Surendra Verma: Vista Transactional File System
42:35
12/2/2005
8
9,379
Singularity Revisited 更多...
|