自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (2)
  • 收藏
  • 关注

原创 翻译花絮

虽然是本牛书,作者也是牛人,但是行文过于啰嗦,很多地方就是翻来覆去的说一些根本不重要的内容,这时,我不得不怀疑几位牛人是不是按字数收钱的,虽然他们早不缺钱了。一开始打算采用两遍翻译,即先译草稿,后面再详细校对。前100页基本是这么做的,后来发现这种做法其实效率比较低,还是一次到位比较好越来越能理解为什么诸如mark,pjplauger之类的技术牛人,都爱写书了,不仅爱写技术书,而且还爱写小说,创作

2013-01-30 06:42:50 419

原创 博客简介

本博客主要用于翻译windows internal第6版,作者是mark russinovich david solomon 和 alex Ionescu。翻译文章的命名规范为A(B),A为pdf的页码,B为原书中的页码,诸位可以从pdf中方便的找到对应章节。这是博主翻译的第一本书,大家有任何建议和意见,都可以留言。未经作者允许,进行翻译,是有侵权嫌疑的。博主的翻译不为牟利,仅供参考,

2013-01-17 06:51:53 290

翻译 63(85)--windows internals mark david alex

硬件抽象层正如本章开头所说,windows的一个重要设计就是硬件平台的可移植性。硬件抽象层(HAL)是可移植性的关键。HAL为硬件平台提供底层接口,它隐藏了硬件相关信息,比如说IO接口,中断控制器,多处理器通信机制,任何与架构相关和机器相关的功能。相比直接使用硬件,windows内部组件和驱动程序通过调用HAL的例程来保证可移植性。HAL在WDK中有详细描述。尽管有几个HAL,wind

2013-02-03 06:05:42 518

翻译 60(82)---windows internals 6 mark david alex

实验:查看KPCR和KPRCB通过内核调试器的!pcr和!prcb可以分别查看KPCR和KPRCB默认情况下展示处理器0的信息,加上参数可以查看任意cpu的信息(!prc 2 查看第3个cpu)。在作者的机器上,输出如下lkd> !pcrKPCR for Processor 0 at 81d09800:Major 1 Minor 1NtTib.ExceptionList:

2013-02-01 06:11:17 525

翻译 58(80)---windows internals 6 mark david alex

缓存管理器(第二部分第11章介绍)增强文件io的性能。它可以将最近访问的磁盘数据存在内存中,这有助于加快读操作的速度;还可以推迟磁盘写入,有助于加快写操作的速度。这个机制依赖于内存管理器对内存映射文件的支持。内存管理器(第二部分第十章介绍)实现虚拟内存,为每个进程提供一个虚拟地址空间,大小可能超过物理内存。内存管理器也对缓存管理器提供底层支持。逻辑预取器和superfetch(第二部分第十

2013-01-31 06:51:12 680

翻译 55(77)----windows internals 6 mark david alex

unix子系统SUA允许在windows上运行Unix程序。所有的服务器版本、企业版、旗舰版都有这个特性。SUA提供了2000个Unix函数以及300个unix工具,http://technet.microsoft.com/en-us/library/cc771470.aspx有详细介绍。第五章介绍了如何创建SUA进程。早期的POSIX子系统POSIX,定义是““a portabl

2013-01-30 05:47:58 580

翻译 53(75)--windows internals 6 mark david alex

windows子系统虽然windows支持多个环境子系统,但是从实用的角度来看,每个子系统都支持窗口和io将会导致系统功能的大量重复,从而对系统的大小和性能都产生有害影响。由于windows是主要子系统,windows的设计者决定把主要功能都实现在windows子系统里,供其他子系统调用来显示界面。所以SUA子系统调用windows子系统来显示。由于这个设计决策,windows子系统在任何

2013-01-29 06:35:53 968

翻译 50(72)---windows internals 6 mark david alex

环境子系统用于暴露windows执行体的一部分服务。不同的子系统可以看到不同的系统服务接口。一个子系统下的应用程序能做的事情,另外一个不一定能,如windows程序不能调用fork函数。exe只能绑定到一个子系统相。当exe运行时,系统会检查它文件头中的子系统类型标志,并启动对应的子系统。通过VC的/subsystem开关可以指定子系统。前面提到,用户程序不直接调用windows系统服务,

2013-01-28 06:37:31 416

翻译 48(70)---windows internals mark david alex

根据不同的产品类型,在启动时制定一些不同的资源分配策略(如操作系统堆的大小和数量,系统工作者线程的数量,数据缓存的大小)和一些运行时策略(如内存管理器对系统和进程内存的折中,线程调度等)本书如果没有特别声明,所讲述的内容一般适用于两个版本。实验:根据授权策略确定已启用的功能通过软件授权,windows支持100多项特性。这些策略决定了客户端和服务端的差别,也决定了不同版本的差别。可以从ww

2013-01-25 06:45:28 668

翻译 43(65)---windows internal 6 mark divd alexa

超线程是intel发明的技术,可以在一个核上提供两个逻辑处理器。每个逻辑处理器有自己的cpu状态,共享执行引擎和缓存。这样,当允许一个逻辑处理器停止的时候,另一个逻辑处理器仍然可以运行。调度算法为超线程做了优化(选择空闲cpu还是逻辑处理器一忙一闲的cpu)。第5章有线程调度的详细信息。在NUMA系统上,处理器被分组为更小的单元,称为节点。每个节点有自己的内存和处理器,通过缓存一致总线连接到更

2013-01-24 06:46:27 519

翻译 38(60)--windows internals 6 david mark alex

架构概要下面我们来看一下windows的关键系统组件。下图只是个概要,没有包含所有的细节,如网络组件和各种类型的驱动程序就没有显示出来。首先请注意内核模式和系统模式之间的线。线上的方框代表用户模式进程,线下的方框代表内核模式系统服务。第一章我们提到过,用户模式线程在运行在受保护的地址空间中,所以线上的方框都有自己独立的私有进程空间。四种基本类型的用户进程固定的系统支持进程

2013-01-23 06:49:56 560

翻译 34(56)---windows internals 6 mark david alex

系统架构我们已经介绍过一些术语,概念和工具,现在开始进一步探索windows的设计目标和结构。本章讲述系统整体架构,包括其中的关键组件,每个组件之间如何交互以及它们的运行环境。为了提供一个了解windows内部机制的框架,我们首先回顾下windows系统的需求和设计目标。需求和设计目标在1989年,下面的需求,导致了windows NT的规范提供一个32位的,抢先式,可重入的,虚拟

2013-01-22 06:23:56 409

翻译 32(54)-- windows internals 6 mark david alex

livekd给调试器传递一个模拟的崩溃转储文件,因此在livekd中可以执行和分析转储文件时一样的命令。由于livekd依赖物理内存来支持模拟的崩溃转储,内核调试器可能会碰到数据结构处于中间态的情况。每次调试器启动时,都会创建一个新的系统状态视图。如果需要刷新系统状态,可以通过q命令退出调试器,livekd会询问你是否需要重新启动调试器。如果调试器一直在输出内容,可以通过ctrl+c中断。如果

2013-01-21 07:40:34 644

原创 windows到底是什么语言开发的?

这个问题在今天应该不是问题了,N年前发生的windows源码泄露事件,已经给出了答案。感兴趣的读者,可以上网找找代码,然后有选择的看一下。在windows internals里面,作者也给出了明确的答案,大部分是c,小部分是汇编,也有一部分是c++.这个选择也是合情合理的。c简单明了,功能强大,标准统一,是系统编程的不二之选。汇编操作机器相关特性非常容易,并且可以尽量优化来提高效率

2013-01-20 07:10:17 20902

翻译 31(53)---windows internals mark david alex

内核调试内核调试,指的是检查内核数据结构并且跟踪内核函数的执行。这是了解windows内部机制的一种有用方式。通过这种方式,可以得到其他工具所不能显示的内部系统信息,以便更清楚的了解内核代码流程。在介绍调试内核的各种方法之前,首先介绍一下必须的一些文件。内核调试符号符号由链接器生成,包含了函数,变量的名字和数据结构的定义。调试器依赖符号来引用和显示名字。符号一般不会和二进制映像文件

2013-01-20 06:53:46 400

翻译 26(48)----windows internals 第6版 mark david alex

本书中大部分知识是通过阅读windows源码、与开发者交流获取的,但并非所有的内容都一直正确。Windows内部的许多细节可以通过各种工具了解,比如说windows自带的工具,或者windows调试工具。这些工具稍后会有介绍。为了帮助读者探索windows内部机制,我们包含了“实验”部分,讲述如何查看windows某些内部特性的步骤。建议读者亲自动手做一下这些实验,以便加深印象。性能监视器

2013-01-19 10:26:14 363

翻译 24(46)----windows internals 第6版 mark david alex

windows一开始就被设计为安全的,以满足各种政府和工业安全等级,如Common Criteria for Information TechnologySecurity Evaluation (CCITSE)规范。达到政府要求的安全等级,可以允许windows在政府市场上竞争。当然,这些能力对多用户来说都是有好处的。windows安全核心能力包括任意和强制的完整性检查(针对所有的可共享的系统

2013-01-19 06:50:24 478

翻译 21(43)---windows internal 第6版 mark david alex

每个windows进程都有自己私有的内存空间,但是内核模式代码和设备驱动程序共享同一虚拟地址空间。虚拟内存中的每个页面都有对应的标志,来表明处理器必须在哪个模式下访问(读/写)。系统空间的页面只能由内核模式访问,用户地址空间的页面可以被用户空间访问。只读页面(如静态数据页面)在任何模式下都是不可写的。此外,在支持不可执行内存保护的处理器上,windows将包含数据的页面标志为不可执行的,从而阻止数

2013-01-18 05:42:26 702

翻译 17(39)---windows internal 第6版 mark david alex

线程位于进程内,是windows调度执行的基本单位。没有线程,进程将不能运行。线程由以下内容组成:一组cpu寄存器,代表当前的CPU状态两个栈。当线程运行于内核态时,使用内核栈;运行在用户态时,使用内核栈。私有存储区域,成为线程局部存储(thread-local storage TLS)。供子系统,运行时库和dll使用。线程id,用于唯一标识线程。线程id是内部结构client I

2013-01-17 06:52:59 712

windows internal 6 part2

windows internal 6 six 六

2013-01-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除