什么是subsystem?
NT架构(Windows NT、Windows XP、Windows 2003)的初始设计是很有野心的,它希望在NT上可以不加修改地运行OS2、UNIX程序。
所以在NT中有subsystem的概念,每个subsystem针对一个平台,ntdll.dll是所有subsystem的基础。或者说ntdll.dll统一提供NT系统的API接口,subsystem为各个平台的应用程序提供包装。
在winnt.h中,对subsystem的定义如下:
#define IMAGE_SUBSYSTEM_UNKNOWN 0 // Unknown subsystem.
#define IMAGE_SUBSYSTEM_NATIVE 1 // Image doesn't require a subsystem.
#define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 // Image runs in the Windows GUI subsystem.
#define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 // Image runs in the Windows character subsystem.
#define IMAGE_SUBSYSTEM_OS2_CUI 5 // image runs in the OS/2 character subsystem.
#define IMAGE_SUBSYSTEM_POSIX_CUI 7 // image runs in the Posix character subsystem.
#define IMAGE_SUBSYSTEM_NATIVE_WINDOWS 8 // image is a native Win9x driver.
#define IMAGE_SUBSYSTEM_WINDOWS_CE_GUI 9 // Image runs in the Windows CE subsystem.
CUI就是Console UI了。我们使用的subsystem主要是3和2。
NT架构另一个主要概念就是用户态和核心态了。32位计算机的地址空间中,0x0-0x10000是保留的,然后0x80000000以下属于用户态,0x80000000以上属于核心态。核心态管理所有硬件。用户态不能使用核心态的任何东西。在核心态运行的程序,例如驱动程序,可以在系统中为所欲为,当然错误的后果会很严重。
我用Win32dsm查看了NT核心模块的导入表,整理了它们之间的调用关系:
在用户态看起来很底层的东西,例如Win32 subsystem的核心:kernel32.dll、user32.dll、gdi32.dll,基本上只是ntdll.dll的一个包装,而ntdll.dll包装了从用户态到核心态的system call,也称作“Native System Service”。
用户态不能访问核心态的任何函数和变量,所以system call不同于一般的API调用。system call可以被看作:将要调用的功能ID放到eax,然后执行INT 2e。
ntdll.dll通过system call使用核心态的ntoskrnl.exe和win32k.sys提供的功能。ntoskrnl.exe被尊称为“Executive”,可以看作是NT的大脑级模块。win32k.sys提供NT图形库接口的API。
HAL(硬件抽象层)是NT硬件访问的核心模块。
分享到:
相关推荐
win7电脑一直弹出16 bit MS-DOS Subsystem
mac80211开发手册 里面有各个模块的数据结构和关键函数及其描述
Simulink高级仿真技术 s-function subsystem
通过一个详细的例子深入分析了linux驱动关于input subsystem的机制
Linux GPIO subsystem
TMS320DM646x DMSoC ARM Subsystem Reference Guide,DM646x系列达芬奇芯片的ARM子系统的文档。
Windows子系统WSL2文档,Windows Subsystem for Linux Documentation
师布置的作业(传热学的一维稳态导热数值计算),可是有点问题,查了好几天了。可以运行,但是结果有问题。
The Impact of Memory Subsystem Resource Sharing onDatacenter Applications
DMA/Bridge Subsystem for PCI Express v4.1 读书笔记 (中文) XDMA 参考文档:PG195, https://github.com/Xilinx/dma_ip_drivers, https://support.xilinx.com/s/article/65443?language=en_US XDMA IP核的中文...
telnet, ssh to connect disk array
用于x64机器的WSL2 Linux内核更新程序包。windows下linux虚拟机(WSL-Windows Subsystem for Linux)。低版本wsl1升级到wsl2用。
讲述symbian系统安全架构问题。英文版,看的不是太懂。
此文档为XILINX官方对于TSN(时间敏感网络)的集成IP核的用户手册,IP核名称为100M/1G Time Sensitive Networking (TSN) Subsystem,其中集成实现了802.1AS 802.1QBV、802.1QBU等协议。开发平台为vivado。
1.已经调试通过 2.zyqnmp上实现mipi输入,hdmi输出
本软件讲述了TMS320的相关知识
在Xilinx官方文档中(PG210-25G-ethernet)找到自己要的信息,我这里几乎没有去动IP核什么参数,主要是通过这个IP去完成内回环以及外回环的仿真以及上板调试(另一篇文章),通过实现这个去了解整个FPGA开发流程。
Introduction to the DSP Subsystem in the AWR16xx.pdf
This document gives a functional description of the Ethernet Switch Subsystem and related portions of the Serializer/Deserializer (SerDes) module. The Ethernet Switch Subsystem consists of the ...
全称 :IP Multimedia Subsystem 用IP技术和网络电话中使用的SIP协议(Session Initiation Protocol)统合座机网和移动通信网等目前为止的公共通讯服务,是实现了多媒体服务的通讯方式。各国的通讯业者作为下一代公共...