[笔记]深入解析Windows操作系统《一》概念和工具

简介: 深入解析Windows操作系统《一》概念和工具

文章目录



   前言

   1.1 Windows操作系统的版本

   1.2 基础概念和术语

       Windows API

       关于 .Net

       Win32 API 历史

       服务、函数、例程

       进程、线程和作业

           进程

               tlist /t 查看进程树

               任务管理查看进程

               Process Explorer查看进程的细节

           线程

           纤程与用户模式调度器线程

       虚拟内存

       内核模式和用户模式

       终端服务及多个会话

           概念

           远程桌面连接和快速用户切换

       内核对象及句柄

       安全性

       注册表

       Unicode

   1.3 挖掘Windows内部机理

       性能监视器

       内核调试

           windows调试工具

           liveKd工具

       Windows软件开发工具(Windows SDK)

       Windows驱动程序开发工具(Windows Driver Kit)

       Sysinternals工具

   总结


前言



本章将介绍Microsoft Windows操作系统的关键概念和术语,比如:


   Windows API、

   进程、

   线程、

   虚拟内存、

   内核模式和用户模式、

   对象、

   句柄、

   安全性

   注册表等。


这些概念和术语将贯穿全书。

同时也会介绍一些可用来探查Windows内部的工具,比如:


   内核调试器

   性能监视器,

   以及来自Windows Sysinternals 的一些关键工具。


此外,还将说明如何以WDK (Windows Driver Kit)和SDK (Platform Software Development Kit)作为资源,来找到关于Windows内部机理的进一步信息。

请一定要理解本章中讲述的所有内容,本书其余章节将以此为基础。


1.1 Windows操作系统的版本


图片.png


   注“Windows 7”这一产品名称中的“7”并非指内部版本号,而是Windows家族的世代编号。实际上,为了使应用兼容性问题尽可能小,Windows 7的版本号其实是6.1,如表1.1所示。这使得那些检查大版本号的应用程序在Windows 7上可以像在Windows Vista上那样继续执行。事实上,Windows 7和Server 2008 R2有同样的版本号和编译版本,因为它们是从同样的Windows代码基编译而来。


1.2 基础概念和术语



Windows API


Windows应用编程接口(API)是针对Windows操作系统家族的用户模式系统编程接口。在64位版本的Windows推广以前,32位版本Windows操作系统的编程接口被称为Win32 API,以区别于原来的16位版本Windows的编程接口,即16位WindowsAPI。


术语WindowsAPI兼指Windows的32位和64位编程接口。


Windows API 常用的又分为几个大类:


   基本服务

   组件服务司

   用户界面服务

   图形和多媒体服务

   消息和协作

   网络

   Web服务


关于 .Net


Microsoft.NET框架组成:


   框架类库(FCL,Framework Class Library)的类库

   提供了托管代码执行环境的公共语言运行库(CLR,Common Language Runtime)


   托管代码执行环境包含一些特性:


       即时编译

       类型检验

       垃圾回收 GCC

       代码访问安全性等。


   由于CLR具有这些特性,因此它所提供的开发环境能够提高开发人员的生产效率,减少常见的编程错误。


.NET框架的组件之间的关系

图片.png


Win32 API 历史


第一次使用:microsoft Windows 3.0

起因:成为Windows NT启动之初,替代32位 OS/2 Presentation Manager API.


服务、函数、例程


windows 特定的术语的含义:


   Windows API函数指Windows API中已被文档化的、可被调用的子例程。

   例如CreateProcess、CreateFile和GetMessage。

   原生的系统服务(或者系统调用)指操作系统中未文档化的、可在用户模式下调用的底层服务。

   例如,NtCreateUserProcess是一个内部系统服务,Windows的CreateProcessi函数调用该服务来创建新的进程。有关系统调用的定义,参见第3章“系统机制”的“系统服务分发”一节。

   内核支持函数(或例程)指位于Windows:操作系统内部且只能在内核模式下调用的子例程(关于内核模式,本章后文将给出定义)。

   例如,ExAllocatePoolWith Tag就是个这样的例程,设备驱动程序调用该例程可以向Windows系统堆(称为内存池)申请内存。

   Windows服务指由Windows服务控制管理器启动的进程。

   例如,Task Scheduler服务运行在用户模式进程中,它支持at命令(类似于UNIX命令at或cron)。(注意,虽然注册表将Windows设备驱动程序定义为“服务”,但是,在本书中不这样使用。)

   DLL(动态链接库)指一组可调用的子例程,合起来被链接成一个二进制文件,使用这些子例程的应用程序可以动态地加载此二进制文件。

   例如Msvcrt.dll(C运行库)和Kernel32.dl(一个Windows API子系统库)。Windowsl的用户模式组件和应用程序大量使用了DLL.


   DLL比静态库的优势在于,应用程序可以共享DLL,Windows保证在内存中只有一份DLL代码,供所有引用该DLL的应用程序共享。注意,非可执行的NET程序集也被编译成DLL,但是,它们没有导出任何子例程,而是由CLR解析出编译的元数据,以便访问对应的数据类型和成员。


进程、线程和作业


进程


程序是指一个静态的指令序列,

进程是一个容器,其中包含了执行程序的特定实例时所用到的各种资源。


Windows进程是由以下元素构成的:


   私有的虚拟地址空间,这是指该进程可以使用的一组虚拟内存地址。

   可执行的程序,它定义了初始的代码和数据,并且被映射到该进程的虚拟地址空间中已打开句柄的列表,这些句柄指向各种系统资源,比如信号量、通信端口和文件,该进程内所有的线程都可以访问这些系统资源。

   被称为访问令牌的安全环境,它标识了与该进程关联的用户、安全组、特权、UAC

   (User Account Control,用户账户控制)虚拟化状态、会话,以及有限的用户账户状态。

   被称为进程ID的唯一标识符(在内部,进程ID还是标识符客户ID的一部分)。

   至少一个执行线程(尽管“空”进程也是有可能的,但没有用处)。


tlist /t 查看进程树


tlisk.exe 位于 C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\tlisk.exe

任务管理查看进程

Process Explorer查看进程的细节


Process Expore 下载地址


线程


线程是一个进程内部的实体,也是Windows执行此进程时的调度实体。

如果没有线程,进程的程序将不可能运行。


线程包括以下一些最基本的部件:


   一组代表处理器状态的CPU寄存器中的内容。

   两个栈一一一个用于线程在内核模式下执行时,另一个用于线程在用户模式下执行时。

   一个被称为线程局部存储(TLS,thread-local storage)的私有存储区域,各个子系统、运行库和DLL都会用到该存储区域。

   一个被称为线程ID的唯一标识符(它也是内部结构客户ID〔client ID)的一部分进程D和线程D是从同一个名字空间中产生的,所以它们永远不会重叠)。

   有时候线程也有它们自己的安全环境,或者令牌,多线程服务器应用程序要模仿其客户的安全环境时,常常会使用线程自己的安全环境。


易失的寄存器、栈和私有存储区域合起来被称为线程的环境(context)。因为这些信息随着Windows所在机器架构的不同而有所不同,所以,此结构必须是与底层架构相关的。


   Windows的GetThreadContexti函数允许程序访问这一与架构相关的信息(称为CONTEXT块)。


纤程与用户模式调度器线程


出现的原因:因为将CPU的执行从一个线程切换到另一个线程,将不可避免地涉及内核调度器,所以,这可能是一个开销昂贵的操作,如果两个线程经常频繁地来回切换则尤其如此。


Windows实现了两种机制来降低这一开销:


   纤程(fiber)

   用户模式调度(UMS,user-mode scheduling)。


虚拟内存


内核模式和用户模式


终端服务及多个会话


终端服务:指的是在单个系统中,Windows对于多个可交互用户会话的支持。利用Windows的终端服务,一个远程用户可以在另一台机器上建立一个会话,并且登录进去,在该服务器上运行应用程序。


服务器把图形用户界面(以及其他可配置的资源,比如音频和剪贴板)传送到客户机,客户机把用户的输入传回服务器。


   (与X窗口系统类似,Windows允许在一个服务器系统上运行单独的应用程序,其显示部分远程传送到客户机,而非将整个桌面远程到客户机)。


概念


Session0:第一个会话被认为是服务会话,或者Session0,它包含了宿纳系统的服务的进程。


Session1: 在机器的物理控制台上的第一个登录会话为一号会话,而其他的会话可以通过远程桌面连接程序(Mstsc…exe)来建立,或者通过使用快速用户切换(后文会介绍)来建立。


远程桌面连接和快速用户切换


Windows的客户机版本允许单个远程用户连接到机器上,但如果有人已经在控制台上登录了,则工作站会被锁住(也就是说,一个人可以用本地方式或远程方式使用Windows?客户机系统,但不能同时以这两种方式来使用该系统)。包括Windows Media Center在内的Windows版本允许一个交互会话和多达四个Windows Media Center Extender会话。


Windows服务器系统支持两个并发的远程连接(这是为了方便远程管理,例如,有些管理工具要求登录到被管理的机器中才可以使用),以及两个以上的远程会话(只需经过适当的授权许可,并且系统被配置为终端服务器)。


所有的Windows客户机版本都支持通过一种被称为快速用户切换(fast user switching)的特性,在本地创建多个会话。当用户选择断开其会话,而不是注销其登录时(例如,单击“开始”菜单,从“关机”子菜单中选择“切换用户”,或者在按住Windowst键的同时按下L键,然后单击“切换用户”按钮),当前会话(即在该会话中运行的进程,以及描述该会话的所有会话范围的数据结构)仍然保留在系统中,而系统返回到主登录屏幕。如果一个新的用户登录进来,则新建一个会话。

内核对象及句柄


安全性


注册表


Unicode


   如果使用了Unicode编码 还会乱码 其实多半因为系统缺少对应语言包导致的。


1.3 挖掘Windows内部机理



主要使用的工具:

图片.png


性能监视器


内核调试


windows调试工具


liveKd工具


Windows软件开发工具(Windows SDK)


Windows驱动程序开发工具(Windows Driver Kit)


Sysinternals工具


总结


相关文章
|
11月前
|
关系型数据库 虚拟化 UED
Omnissa Horizon Windows OS Optimization Tool 2503 - Windows 系统映像优化工具
Omnissa Horizon Windows OS Optimization Tool 2503 - Windows 系统映像优化工具
418 7
Omnissa Horizon Windows OS Optimization Tool 2503 - Windows 系统映像优化工具
|
存储 Linux API
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
在计算机系统的底层架构中,操作系统肩负着资源管理与任务调度的重任。当我们启动各类应用程序时,其背后复杂的运作机制便悄然展开。程序,作为静态的指令集合,如何在系统中实现动态执行?本文带你一探究竟!
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
|
6月前
|
安全 Linux iOS开发
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
290 0
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
|
12月前
|
存储 JSON 数据格式
ElasticSearch基础概念解析
以上就是ElasticSearch的基础概念。理解了这些概念,你就可以更好地使用ElasticSearch,像使用超级放大镜一样,在数据海洋中找到你需要的珍珠。
328 71
|
12月前
|
网络协议 Linux 网络安全
微软工程师偷偷在用!这款SSH工具让Windows操控CentOS比Mac还优雅!
远程登录Linux服务器是管理和维护服务器的重要手段,尤其在远程办公、云服务管理等场景中不可或缺。通过工具如XShell,用户可以方便地进行远程管理。SSH协议确保了数据传输的安全性,命令行界面提高了操作效率。配置XShell连接CentOS时,需确保Linux系统开启sshd服务和22端口,并正确设置主机地址、用户名和密码。此外,调整字体和配色方案可优化使用体验,解决中文显示问题。
500 21
微软工程师偷偷在用!这款SSH工具让Windows操控CentOS比Mac还优雅!
|
12月前
|
自然语言处理 数据库 iOS开发
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
805 12
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
|
12月前
|
监控 Ubuntu Linux
Windows11 WSL2 Ubuntu编译安装perf工具
通过以上步骤,你已经在Windows 11的WSL2中成功编译并安装了 `perf`工具。尽管在WSL2中可能会遇到一些限制,但大部分基本性能分析功能应当可以正常使用。使用 `perf`进行性能分析,可以帮助你更好地理解和优化系统及应用程序的性能。
887 14
|
JavaScript 编译器 开发工具
【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
664 2
【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
12月前
|
自然语言处理 安全 开发工具
分享一个纯净无广、原版操作系统、开发人员工具、服务器等资源免费下载的网站
分享一个纯净无广、原版操作系统、开发人员工具、服务器等资源免费下载的网站
966 4
|
数据采集 搜索推荐 API
小红书笔记详情 API 接口:获取、应用与收益全解析
小红书(RED)是国内领先的生活方式分享平台,汇聚大量用户生成内容(UGC),尤以“种草”笔记闻名。小红书笔记详情API接口为开发者提供了获取笔记详细信息的强大工具,包括标题、内容、图片、点赞数等。通过注册开放平台账号、申请API权限并调用接口,开发者可构建内容分析工具、笔记推荐系统、数据爬虫等应用,提升用户体验和运营效率,创造新的商业模式。本文将详细介绍该API的获取、应用及潜在收益,并附上代码示例。
1890 13

推荐镜像

更多