博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows内核中的组件
阅读量:2503 次
发布时间:2019-05-11

本文共 1727 字,大约阅读时间需要 5 分钟。

Executive(执行体)

Windows executive 是Ntoskrnl.exe中的上层,内核是.Ntoskrnl中的下层。

executive包括下列类型的函数:

  • 用户模式下可调用的函数,这些函数调用系统服务,通过Ntdll导出。大多数服务都可以通过windows API访问,少数服务没有公开写在文档中,例如NtCreatePagingFile。
  • 设备驱动函数,这些函数通过DeviceIoControl函数调用,提供了从用户模式到内核模式的一个接口。
  • 只能从内核模式调用的函数,WDK的文档里有。
  • 内核模式可调用的函数,但不在WDK的文档里。
  • 定义成全局符号的函数。
  • 定义成全局符号的内部模块函数。
executive包括以下一些组件:
  • 配置管理器(管理注册表)
  • 进程管理器,创建和终止进程和线程。
  • 安全引用监视器,强制本机的安全规定,保护系统资源。
  • I/O管理器。
  • 即插即用管理器。
  • 电源管理器。
  • 驱动模型管理器。
  • 缓存管理器。
  • 内存管理器。
  • logical prefetcher 和 Superfetch
  • 对象管理器。
  • 高级LPC
  • 一组通用的运行时库。
  • Executive 支持的routines。
  • 内核调试库。
  • 用户模式调试框架。
  •  kernel transaction manager
  • hypervisor library,Hyper-V的一部分。
  • errata manager 
  • 驱动验证。
  • 事件跟踪器。
  • Windows诊断部件。
  • 文件系统运行时库。

内核

Ntoskrnl.exe中提供了一些基础的内核函数,比如线程调度和同步机制,可以给executive中的组件使用,也可以给低层的硬件架构提供支持,比如中断和异常分发。

内核代码主要是用C语言写的,还有一些汇编代码用于访问特殊的处理器指令和C语言不容易访问的寄存器。内核函数在WDK文档里有描述。

设备驱动

设备驱动可以加载到内核模式的模块中,一般都是以.sys结尾。是I/O管理器和相关硬件之间的接口,运行在内核模式下中的三种上下文中:

  • 用户线程初始化I/O。
  • 内核模式的系统线程。
  • 中断的结果。
有几种类型的设备驱动:

  • 硬件设备驱动,操作硬件输出或获取物理设备或网络数据。比如总线驱动,人体接口驱动,大存储驱动等。
  • 文件系统驱动,面向文件I/O请求。
  • 文件系统过滤驱动,例如磁盘镜象和加密。
  • 网络重定向和服务器驱动。
  • 协议驱动,实现网络协议,TCP/IP,NetBEUI,IPX/SPX。
  • 内核流过滤驱动,数据流的信号处理,比如记录和显示声音和视频。
因为安装设备驱动是仅有的一种在系统中添加用户可写的内核模式代码的方式,有些程序员为了访问在用户模式下不能访问的操作系统内部函数或数据结构,将程序写成设备驱动。

WDF

Windows Driver Foundation (WDF) 相比WDM简化了Windows驱动开发,提供了两套框架:
  • 内核模式驱动 (KMDF) 
  • 用户模式驱动(UMDF)
开发者可以用KMDF在Windows 2000 SP4以后的版本上写驱动,UMDF支持Windows XP以后的版本。
KMDF提供了一个简单的接口给WDM,并且隐藏了复杂的模型。
UMDF允许某些级别的驱动,大多数是基于USB的,比如摄像头,MP3,手机,PDA,打印机。
UMDF的驱动在用户模式下以服务的方式运行,用ALPC与内核模式通信。

系统进程 

下面一些进程是每个Windows系统都有的:
  • 空闲进程(Idle进程)。
  • 系统进程(包括内核模式的主要线程),由PsCreateSystemThread建立系统线程。
  • 会话管理器(Smss.exe),系统创建的第一个用户模式下的进程。
  • 本地会话管理器(Lsm.exe)
  • Windows子系统(Csrss.exe)
  • Session0初始化(Wininit.exe),创建temp文件夹,创建Services.exe,开户Lsass.exe,Lsm.exe。
  • 登陆(Winlogon.exe)
  • 服务控制器(Services.exe)和其创建的子服务进程(Svchost.exe)
  • 本地安全认证服务器(Lsass.exe)

转载地址:http://wmlgb.baihongyu.com/

你可能感兴趣的文章
这段时间的小结
查看>>
ANDROID_MARS学习笔记_S01原始版_021_MP3PLAYER001_下载mp3文件
查看>>
8个基本的引导工具的网页设计师
查看>>
第二周周六DailyReporting——PM(李忠)
查看>>
Beta阶段DAY3
查看>>
windows server 2008 R2 NPS(网络连接策略服务)设置radius,实现telent登陆交换机路由器权限分配...
查看>>
Java中静态变量和动态变量
查看>>
vim的visual可视模式(转载)
查看>>
ASP.NET MVC 学习笔记-6.异步控制器
查看>>
java_赋值与初始化
查看>>
函数如何调用?
查看>>
3.2.2 线性表的顺序存储实现
查看>>
TP框架 ---空控制器和空操作
查看>>
poj 1845 Sumdiv (等比求和+逆元)
查看>>
iView 的后台管理系统简易模板 iview-admin-simple
查看>>
写一个自己的搜索引擎(1)
查看>>
NGINX、PHP-FPM开机自动启动
查看>>
python 递归求阶乘
查看>>
ERROR: child process failed, exited with error number 100
查看>>
Java计算器源代码
查看>>