Operating System
Operating System
书接上回,今天继续分析双误异常导致的蓝屏。上次说到因为发生双误,CPU动用硬件的任务切换机制,切换到了专门用于处理双误异常的新线程。在分析了TSS结构和栈回溯中的TSS信息后,我们找到了切换回本来触发双误线程的方法,也就是执行.tss 28命令。
0: kd> .tss 28eax=f655d5d4 ebx=af0d4180 ecx=00000000 edx=af0d2081 esi=80460dd0 edi=f655d7d4eip=aebc6af2 esp=f655cfb8 ebp=f655d7dc
更多...
网球里有个术语叫双误,英文叫double fault。简单说,就是发球失误了一次之后,第二次发还失误。一次失误可以理解,第二次还失误,那么只好不客气了。类似的,在IA-32 CPU中,也有个双误,double fault,是一种异常,向量号是8,属于终止类(Abort)异常,一旦发生,问题就很严重。
老雷不会网球,因此下面讨论的都是计算机中的双误。
简单来说,双误就是发生了一个比较严重的异常后,还没处理完,就又发生了第二个比较严重的异常。用句成语,就是一波未平一波又起。为什么要在异常前面加上一个“比较严重”的限定呢?因为对于不严重的异常,那么CPU是可以分而治之,逐一把它们搞定的,只有当CPU无法逐一处理时,它才会抛出双误异常,意思是,“这他妈的也太糟糕了,按下葫芦起来瓢,老子不干了”。
更多...
大脑很辛苦,给它吃点什么呢?这个地方收集了很多经典的美餐:
http://www.comms.scitech.susx.ac.uk/fft/
从编程语言,到各种架构CPU的文档和编程手册,到芯片设计,到操作系统,密码学,安全、网络、集群、蓝牙、数学......很是全面。
特别喜欢操作系统下面的那几篇文档:
Operating systems
Introduction to OS [pdf]
Process scheduling [pdf]
更多...
Windows 7(Win7)是Windows操作系统的下一个客户端版本,计划在明年中正式发布。在前不久的WinHec上,每个参会者都得到了一份Win7的预览版本,是比Beta版本还早的所谓Milestone 3(M3)版本。
老雷曾经说过他是使用调试器来了解和学习操作系统的。但到底可以怎么用调试器来帮我们了解新的操作系统或者它的新版本呢?这个系列文章就想以这种方法来学习一下Win7。今天是第一个部分,到底写多少次还没有计划,如果大家喜欢,老雷写的高兴,那么就一直写下去,不然可能就这一篇。
首先该介绍一下道具(工具),第一,当然少不了WinDBG,老雷机器上有从WinDBG2.x开始的n个版本,但大多数时候用的还是6.X。第二,要有目标机来运行Win7,为了可以随时唤出来把玩,我还是把它运行在虚拟机里,用的是VPC2007。第三,要有一些附属的小工具,比如观察符号的SymView小工具,触发异常的I'm
更多...
在Vista之前,NTLDR是Windows操作系统的加载程序,它负责将CPU从实模式切换为保护模式,加载内核文件和启动类型的驱动程序,然后把执行权交给内核文件的入口函数,即KiSystemStartup。
从要完成的任务角度来看,NTLDR内部又分为两个部分,一部分负责接受执行权,做模式切换,硬件检查,即启动的准备工作,这部分通常称为boot;另一部分负责加载内核文件,并为内核的运行做必要的准备,通常称为OsLoader。
Vista将以上两个部分分成两个独立的程序文件,即BootMgr和WinLoad.exe。下图描述了BootMgr和WinLoad的相互关系和它们在启动过程中的作用。
更多...
《软件调试》于上周进入工厂印刷,第一本有望在本周装订完成。第一本审查无误后,那么第一批600册将在下周完成!
同时,《软件调试》的主页也初步建成,网址为http://advdbg.org/books/swdbg/。欢迎大家访问和提宝贵意见!
更多...
2008年的第一天,阳光灿烂!对于上海这个多阴多雨的城市,这冬日的阳光着实是为新的一年送了一份厚礼!
每个人对新的一年都会有很多期待,北京奥运会无疑是最有共性的一个。于我,《软件调试》的出版是第一号的期待。一些热心的朋友也在期待这本书,他们的期待是我的动力。
以下是《软件调试》一书的主要内容,全书共30章,分为六篇。
第一部分:绪论(第1章)作为全书的开篇,这一部分介绍了软件调试的概念、基本过程、分类、和简要历史,并浏览了本书后面将详细介绍的主要调试技术。
第二部分:CPU的调试支持(2~7章)CPU是计算机系统的硬件核心。这一部分以IA-32
更多...
在下面这小段代码中,存在一个故意的除零操作,并且使用了Windows操作系统的结构化异常处理(SEH)机制对其进行了保护。
59: n=1;
60: m=0;
61: __try
62: {
63: n=n/m;
更多...
泰克(http://www.tek.com/)是全球著名的测试测量仪器生产厂商,它的最著名产品是示波器。从调试的角度来看,示波器对于硬件工程师来说就好像是软件工程师使用的调试器。
在硬件领域,已经形成了一个不算太小的产业来专门生产以示波器、逻辑分析仪为代表的测试和调试设备,人们愿意以高昂的价格来购买这些设备,厂商们也不断的加大投入来研发更好、更先进、价格也更昂贵的设备。
与硬件领域相比,软件领域中人们对调试的重视真是天壤之别。著名的SoftICE在去年宣布停止开发了(看高手们对此是多么伤心http://blogs.msdn.com/matt_pietrek/archive/2006/04/07/570927.aspx)。Syser的开发还在维持,但是开发者最大的顾虑不是技术难度,而是客户太少。
更多...
IA-32 CPU从P6开始便支持分支监视和记录机制。说白了这种机制就是记录下CPU曾经执行的分支。把这些分支信息串联起来便可以得到CPU的执行轨迹。这一机制的名称被称为BTS,Branch Tracing Store,它与Debug Store,简称DS有着紧密关系。
以下是使用BTS机制所编写的一个示例程序CpuWhere的工作画面。
窗口左侧是一系列控制按钮,编辑框用来指定BTS缓冲区可以容纳的BTS记录数,也就是SetupDSArea函数的参数。窗口右侧的列表框用来显示从驱动程序读取到的BTS记录。显示的顺序与栈回溯类似,最近发生的在上方。或者说,CPU的运行轨迹是从下到上。
更多...
开发软件应该写文档么?如果是应该写成什么样?是拿个template然后填充些不痛不痒的废话么?
先看一下下面这幅图:
这是NT团队开发NT时使用的文档。仔细看那个标签,NT OS/2 Design Workbook。我首先留下深刻印象的是Workbook这个名字,非常的平实,工作手册——帮助设计的手册,备忘和方便查阅。而后,对于这个厚度,有人可能吃惊有这么厚!对于NT这样复杂的系统,这么厚应该都是非常精练的语言了。如果像今天的很多文档那样,翻了几页还没看到正文,那么不知要有这样的多少册。
更多...
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,
更多...
Windows系统服务列表,欢迎大家补充。
Windows service
File name
Component name
Alerter
AlrSvc.dll
This service runs within the context of SvcHost.exe.
Alerter Service
Application Layer Gateway Service
Alg.exe
Windows Firewall/Internet Connection
更多...
使用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部门。
更多...
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
更多...