Windows Internals学习笔记(二)系统架构
参考资料:
1. 《Windows Internals》
5. WDK下载地址
知识点:
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学习笔记(二)系统架构的更多相关文章
- Windows Internals学习笔记(六)Windows关键系统组件
参考资料: 1. <Windows Internals> 2. Dependency Walker 3. Ntoskrnl.exe 4. Livekd的使用 5. WinDbg的使用(一) ...
- Windows Internals学习笔记(八)IO系统
参考资料: 1. <Windows Internals> 知识点: ● 当一个进
- Windows Internals学习笔记(四)Trap Dispatching
参考资料: 1. <Windows Internals> 知识点: ● 陷阱trap:它是一种处理器机制,用以在某一异常或中断出现时,捕捉该执行线程,并将其控制权转交到操作系统中某一固定位 ...
- Windows Internals学习笔记(七)Image Loader
参考资料: 1. <Windows Internals> 2. Fibers 知识点: ● 当一个进程在系统上启动时,内核将创建一个进程对象来代表它,并执行各种内核相关的初始化任务.然而, ...
- Windows Internals学习笔记(五)Synchronization
参考资料: 1. <Windows Internals> 2. 自旋锁spinlock剖析与改进 3. Lock指令前缀 4. Lock指令前缀(二) 5. Kernel Dispatch ...
- Windows Internals学习笔记(一)概念与工具
参考资料: 1. <Windows Internals> 2. Windows Drive Kit 3. Microsoft Windows SDK 4. WDK下载地址 知识点: 1. ...
- 『TensorFlow Internals』笔记_系统架构
一.架构概览 TensorFlow 的系统结构以 C API 为界,将整个系统分为前端和后端两个子系统: 前端系统:提供编程模型,负责构造计算图: 后端系统:提供运行时环境,负责执行计算图,后端系统的 ...
- Laravel5.1学习笔记i14 系统架构6 Facade
Facades 介绍 使用 Facades Facade 类参考 #介绍 Facades provide a "static" interface to classes th ...
- Laravel5.1学习笔记12 系统架构4 服务容器
Service Container 介绍 绑定的用法 绑定实例到接口 上下文绑定 标签 解析 容器事件 #介绍 The Laravel service container is a powerful ...
随机推荐
- V4L2读取摄像头程序流程【转】
本文转载自:https://my.oschina.net/u/1024767/blog/210801 v4l2 操作实际上就是 open() 设备, close() 设备,以及中间过程的 ioctl( ...
- Hibernate API申明事务边界
在Hibernate API中,Session和Transaction接口提供了以下声明事务边界的方法: 声明事务的开始边界: Transaction tx = session.beginTransa ...
- HTTP Live Streaming直播(iOS直播)技术分析与实现
本文转载自:http://www.cnblogs.com/haibindev/archive/2013/01/30/2880764.html 不经意间发现,大半年没写博客了,自觉汗颜.实则2012后半 ...
- ecshop编辑器fckeditor换百度ueditor编辑器教程
1.下载uediter编辑器,解压上传目录uediter到根目录/includes/下 2.修改admin/includes/lib_main.php /** * 生成编辑器 ...
- C语言中使用静态函数的好处
C语言中使用静态函数的好处: 静态函数会被自动分配在一个一直使用的存储区,直到退出应用程序实例,避免了调用函数时压栈出栈,速度快很多. ???(对这个不是很理解)其实我觉得上面这种说法是错误的,它的主 ...
- JavaScript中创建类,赋值给ajax中的data参数
缘由:因为要给根据是否选中checkbox来动态增加ajax中data的属性(ajax的data属性格式的几种方法,参考http://www.jb51.net/article/46676.htm) d ...
- 过滤DataTable中的空数据
DataTable dt = new DataTable(tableName); for (int i = 0; i < columnsNames.Length; i++) { dt.Colum ...
- 判断sql执行效率以及针对临时表的使用
/****** Script for SelectTopNRows command from SSMS ******/ SET STATISTICS io ON SET STATISTICS time ...
- 一种奇特的DEDE隐藏后门办法
转自:http://www.91ri.org/6462.html 一种奇特的DEDE隐藏后门办法 单位某站用的dedecms,今天被某黑阔getshell了,提交到了wooyun. 为了还原黑阔入 ...
- HashMap, HashTable, CurrentHashMap的区别
转载:http://www.jianshu.com/p/c00308c32de4 HashMap vs ConcurrentHashMap 引入ConcurrentHashMap是为了在同步集合Has ...