参考资料:

1. 《Windows Internals》

2. http://bestcbooks.com

3. Windows Drive Kit

4. Microsoft Windows SDK

5. WDK下载地址

6. Windows内核模式和用户模式

知识点:

1. 用户模式下的四种基本进程类型:

● Fixed (or hardwired) system support processes, Such as the logon process & the session manager.

● Service processes, such as Task scheduler & Print spooler services.

● User applications

● Environment subsystem server processes

  图1 简化的系统架构

2. 通过上图,我们可以看到用户应用程序并不是直接调用本地Windows操作系统服务,而是通过Subsystem DLLs。而Subsystem DLLs的作用就是将文档化的函数转换为合适的内部的本地系统服务的调用。这种转换可能会涉及给Environment subsystems发送消息。

3. Windows内核态组件包括:

● Windows Executive:包含基本的操作系统服务,如:内存管理、进程&线程管理、安全、I/O、网络和进程间通信。

● Windows Kernel:由底层的操作系统函数组成,如:线程调度、中断&异常分派和多进程同步。同时,它也为上层提供例程和基础对象。

● Device drivers:包括硬件设备驱动(将用户I/O函数调用转换为特定的硬件设备I/O请求)和非硬件设备驱动(文件系统驱动和网络驱动)。

● Hardware Abstraction Layer:起隔离作用,用以隔离{内核、设备驱动和Windows Executive其余部分}与特定平台下的硬件差别。

● Windowing & Graphics System:实现了GUI函数。

4. Windows是一个SMP操作系统。所有处理器共享同一内存空间。Windows支持三种现代多处理器系统类型:Hyper-Threading、NUMA(non-uniform memory architecture)和Multicore。

● Hyper-Threading:由Intel引入,为每个物理内核提供两个逻辑处理器。每个逻辑处理器拥有自己的CPU状态,但共享执行引擎和缓存Cache。

● NUMA系统:处理器被分组成更小的单元,这些单元被称为“节点”。每个节点都有自己的处理器和内存,且通过总线连接到更大的system。

5. 通过查看注册表中的HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions中的ProductType来区分系统版本。

6. 环境子系统的作用是暴露Windows Executive System提供的基础服务子集给应用程序,且不同子系统可访问的服务子集是不一样。用户应用程序不是直接调用Windows系统服务,而是通过子系统DLLs来使用的。可以使用Dependency Walker tool查看Windows模块的依赖模块关系树。

7. 子系统由Session Manager(Smss.exe)进程启动。子系统的启动信息被存在注册表的HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems。

Windows Internals学习笔记(二)系统架构的更多相关文章

  1. Windows Internals学习笔记(六)Windows关键系统组件

    参考资料: 1. <Windows Internals> 2. Dependency Walker 3. Ntoskrnl.exe 4. Livekd的使用 5. WinDbg的使用(一) ...

  2. Windows Internals学习笔记(八)IO系统

    参考资料: 1. <Windows Internals> 知识点: ● 当一个进

  3. Windows Internals学习笔记(四)Trap Dispatching

    参考资料: 1. <Windows Internals> 知识点: ● 陷阱trap:它是一种处理器机制,用以在某一异常或中断出现时,捕捉该执行线程,并将其控制权转交到操作系统中某一固定位 ...

  4. Windows Internals学习笔记(七)Image Loader

    参考资料: 1. <Windows Internals> 2. Fibers 知识点: ● 当一个进程在系统上启动时,内核将创建一个进程对象来代表它,并执行各种内核相关的初始化任务.然而, ...

  5. Windows Internals学习笔记(五)Synchronization

    参考资料: 1. <Windows Internals> 2. 自旋锁spinlock剖析与改进 3. Lock指令前缀 4. Lock指令前缀(二) 5. Kernel Dispatch ...

  6. Windows Internals学习笔记(一)概念与工具

    参考资料: 1. <Windows Internals> 2. Windows Drive Kit 3. Microsoft Windows SDK 4. WDK下载地址 知识点: 1. ...

  7. 『TensorFlow Internals』笔记_系统架构

    一.架构概览 TensorFlow 的系统结构以 C API 为界,将整个系统分为前端和后端两个子系统: 前端系统:提供编程模型,负责构造计算图: 后端系统:提供运行时环境,负责执行计算图,后端系统的 ...

  8. Laravel5.1学习笔记i14 系统架构6 Facade

    Facades 介绍  使用 Facades Facade 类参考   #介绍 Facades provide a "static" interface to classes th ...

  9. Laravel5.1学习笔记12 系统架构4 服务容器

    Service Container 介绍 绑定的用法  绑定实例到接口 上下文绑定 标签 解析 容器事件 #介绍 The Laravel service container is a powerful ...

随机推荐

  1. Java字符串排列算法

    Java字符串排列算法 题目:现有ABCDE 5个球 构成的排列组合 可重复抽取 最多取到16个 共有多少种组合方式? 比如:取1个球可以构成的组合有 A B C D E 共5种,取2个球可以构成的组 ...

  2. OBD 14230 Slow, Addr激活

    const u8 LinkCmd14230[6] = { 0xC2, 0x33, 0xF1, 0x01, 0x00, 0xE7 }; u8 ISO14230ADDR_Check(){          ...

  3. makefile 中 $@ $^ %< 使用【转】

    转自:http://blog.csdn.net/kesaihao862/article/details/7332528 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将 ...

  4. oracle 11g升级

    手先需要下载oracle11g的补丁安装包,一般只有付费用户才能获取到该安装包,其他用户获取不到,那怎么办呢? 万能的互联网可以办到,可以用http://www.wangpansou.cn/所有其他用 ...

  5. Cacti Install

    一.Cacti简介 Cacti是通过snmpget来获取数据,使用RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数.它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查 ...

  6. php curl语句的用法

    system32文件夹下,修改php.ini文件,找到;extension= php_curl.dll行,去掉前面的;号,保存,重启服务器.在站点目录下建立一个PHP文件,内容如下 $ch = cur ...

  7. php中的curl】php中curl的详细解说

    本文我来给大家详细介绍下cURL的简单的使用方法,下文我将会给大家详细介绍cURL的高级应用, cURL可以使用URL的语法模拟浏览器来传输数据, FTP, FTPS, HTTP, HTTPS, GO ...

  8. windows7 安装 memcached

    下载 memcached 的 windows 稳定 memcached.exe 版本,然后解压到某个目录下面,这里放到了 D:\ApacheServer\memcached 找到 C:\Windows ...

  9. ACM题目————星际之门(一)

    描述 公元3000年,子虚帝国统领着N个星系,原先它们是靠近光束飞船来进行旅行的,近来,X博士发明了星际之门,它利用虫洞技术,一条虫洞可以连通任意的两个星系,使人们不必再待待便可立刻到达目的地. 帝国 ...

  10. Android网络连接之HttpURLConnection和HttpClient

    1.概念   HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源.在 JDK 的 java.net 包中 ...