14、Windows驱动开发技术详解笔记(10) 基本概念

简介: 一、基本框架 二、基本概念 1、操作系统的主要任务是调度线程,还有一些必要的工作,如:内存管理,进程管理,安全管理和I/O管理,这些部分叫做执行部件。 2、Ring是CPU的概念,而用户/内核模式是操作系统的概念。

一、基本框架<?xml:namespace prefix = o />

wps_clip_image-20264

二、基本概念

1、操作系统的主要任务是调度线程,还有一些必要的工作,如:内存管理,进程管理,安全管理和I/O管理,这些部分叫做执行部件。

2RingCPU的概念,而用户/内核模式是操作系统的概念。编写驱动主要为了操作硬件,如访问物理内存,设备端口等。驱动程序相当于内核的补丁,不同硬件设备会有不同的补丁。Windwos中,用户态与内核态切换通过软中断来进行。

3、操作系统分层

Windows可运行在单CPU上和对称多CPU上。“对称多CPU”指每个CPU平分负载;"主从多CPU"指主CPU负责调度从CPU

Windows的设计思路是将内枋尽量可能小,采用“客户端-服务器”结构,操作系统各个组件或者模块是通过消息进行通信的。

wps_clip_image-6655

windows构架图P38

子系统如Win 32,OS/2等。

在内核模式下,执行体组件提供了大量的内核函数供驱动程序调用。内核主要负责进程、线程的调度。驱动程序通过硬件抽象层与硬件进行操作。

4WIN32子系统

这个子系统提供的应用程序接口有以下几个方面:

·图形用户接口: 提供给用户可视的窗口,对话框,控件,字体等接口。

·控制台I/O: 包括键盘,鼠标,显示器,以及其它子系统。

·执行WIN32应用程序接口: 提供应用程序或者其它子系统与执行部件的接口。

因为WIN32子系统在操作系统中的特殊地位和它所提供的高性能,所以它的实现方式与其它的子系统完全不同。它被分成了好几个部分,其中一些工作在用户模式,一些工作在内核模式。通常,WIN32应用程序接口被分成3部分:

USER函数: 管理窗口,菜单,控件,对话框等。

GUI函数: 在物理设备(:显示器,打印机)上绘图。

KENEL函数:管理非GUI资源,例如: 进程,线程,文件,同步服务,KENEL函数接近于执行部件的服务。

WIN NT4.0以后,USER函数和GUI函数被移到内核模式,因此,用户模式的请求用系统服务接口直接送到内核模式。USER函数和GUI函数被安置在 WIN32K.SYS中,相反的,KENEL函数依赖于一个标准的服务程序CSRSS.exe去反应用户程序请求。

wps_clip_image-2708

Win32子系统在内核中的实现实现 P40

5Native API 是在Ntdll.dll中实现的。

软中断将Native API中的参数和系统服务号的参数一同传进内核模式,不同Native API对应不同的系统服务号。在系统服务组件中,有一个系统服务描述表,根据这个系统服务号为索引,从表中查找出对应系统服务函数的函数地址。

进程管理器负责创建和终止进程,线程的调度是由内核完成的。

I/O管理器起到用户模式代码和内核模式代码间接口。

6、内核为执行组件提供最基本的支持,它负责提供进程和线程的调度,通过自旋锁(spin lock),提供对多CPU同步支持,提供中断处理等。内核在调度线程时不能被其它线程打断,即不允许线程切换,但是内核可以被更高的中断请求级别(IRQL)打断。

在驱动程序中,尽量避免针对平台的汇编指令,而应用与平台无关的HAL函数或宏。

7、单一内核:主要核心组件全部在内核实现。微内核:主要组件运行在独立的进程中,它们有自己私有的地址空间,在这之上是内核提供的一组服务原语。

8Windows常用设备:文件,目录,逻辑磁盘,物理磁盘,串口设备,并口设备。

wps_clip_image-12285

图 应用程序到驱动程序 P47

目录
相关文章
|
17天前
|
安全 固态存储 文件存储
Windows 7纯净版重装教程|附微软原版镜像下载+驱动安装避坑技巧
本文详细介绍如何安全、高效地重装电脑系统,解决蓝屏、崩溃等问题。基于10年经验,涵盖从官方镜像获取、启动盘制作、数据备份到系统部署的全流程,并针对老旧机型优化。提供驱动一键安装工具和系统激活指南,确保无后门风险。文中还列出常见问题解决方案及操作禁忌,帮助用户顺利完成系统重装,让电脑重获新生。建议收藏并转发给有需要的朋友,欢迎留言咨询疑难问题。
|
9天前
|
算法 关系型数据库 测试技术
WHQL微软驱动签名方案,让驱动程序在Windows系统流畅运行
WHQL认证(Windows徽标认证)是微软设立的严格测试标准,旨在确保驱动程序的兼容性、稳定性和互通性。本文介绍了三种WHQL微软驱动签名方案:单系统签名、多系统签名和硬件兼容性测试方案,分别满足不同开发商的需求。通过WHQL认证,不仅能消除Windows安装警告,提升用户体验,还能获得“Designed for Windows”徽标授权,入列全球Windows Catalog及HCL产品表,提升品牌权威性和采购优先权。此外,访问微软OCA可获取错误反馈,助力产品质量改进。选择合适的签名方案,让驱动在Windows系统中流畅运行!
|
5月前
|
监控 Ubuntu Linux
视频监控笔记(五):Ubuntu和windows时区同步问题-your clock is behind
这篇文章介绍了如何在Ubuntu和Windows系统中通过设置相同的时区并使用ntp服务来解决时间同步问题。
135 4
视频监控笔记(五):Ubuntu和windows时区同步问题-your clock is behind
|
5月前
|
Ubuntu Linux Python
如何利用wsl-Ubuntu里conda用来给Windows的PyCharm开发
如何在WSL(Windows Subsystem for Linux)的Ubuntu环境中使用conda虚拟环境来为Windows上的PyCharm开发设置Python解释器。
505 1
|
5月前
|
监控 关系型数据库 MySQL
PowerShell 脚本编写 :自动化Windows 开发工作流程
PowerShell 脚本编写 :自动化Windows 开发工作流程
241 0
|
7月前
|
vr&ar C# 图形学
WPF与AR/VR的激情碰撞:解锁Windows Presentation Foundation应用新维度,探索增强现实与虚拟现实技术在现代UI设计中的无限可能与实战应用详解
【8月更文挑战第31天】增强现实(AR)与虚拟现实(VR)技术正迅速改变生活和工作方式,在游戏、教育及工业等领域展现出广泛应用前景。本文探讨如何在Windows Presentation Foundation(WPF)环境中实现AR/VR功能,通过具体示例代码展示整合过程。尽管WPF本身不直接支持AR/VR,但借助第三方库如Unity、Vuforia或OpenVR,可实现沉浸式体验。例如,通过Unity和Vuforia在WPF中创建AR应用,或利用OpenVR在WPF中集成VR功能,从而提升用户体验并拓展应用功能边界。
160 1
|
6月前
|
存储 安全 程序员
Windows任务管理器开发原理与实现
Windows任务管理器开发原理与实现
|
7月前
|
开发者 C# Windows
WPF与游戏开发:当桌面应用遇见游戏梦想——利用Windows Presentation Foundation打造属于你的2D游戏世界,从环境搭建到代码实践全面解析新兴开发路径
【8月更文挑战第31天】随着游戏开发技术的进步,WPF作为.NET Framework的一部分,凭借其图形渲染能力和灵活的UI设计,成为桌面游戏开发的新选择。本文通过技术综述和示例代码,介绍如何利用WPF进行游戏开发。首先确保安装最新版Visual Studio并创建WPF项目。接着,通过XAML设计游戏界面,并在C#中实现游戏逻辑,如玩家控制和障碍物碰撞检测。示例展示了创建基本2D游戏的过程,包括角色移动和碰撞处理。通过本文,WPF开发者可更好地理解并应用游戏开发技术,创造吸引人的桌面游戏。
390 0
|
7月前
|
C# Windows 开发者
当WPF遇见OpenGL:一场关于如何在Windows Presentation Foundation中融入高性能跨平台图形处理技术的精彩碰撞——详解集成步骤与实战代码示例
【8月更文挑战第31天】本文详细介绍了如何在Windows Presentation Foundation (WPF) 中集成OpenGL,以实现高性能的跨平台图形处理。通过具体示例代码,展示了使用SharpGL库在WPF应用中创建并渲染OpenGL图形的过程,包括开发环境搭建、OpenGL渲染窗口创建及控件集成等关键步骤,帮助开发者更好地理解和应用OpenGL技术。
570 0
|
7月前
|
开发者 iOS开发 C#
Uno Platform 入门超详细指南:从零开始教你打造兼容 Web、Windows、iOS 和 Android 的跨平台应用,轻松掌握 XAML 与 C# 开发技巧,快速上手示例代码助你迈出第一步
【8月更文挑战第31天】Uno Platform 是一个基于 Microsoft .NET 的开源框架,支持使用 C# 和 XAML 构建跨平台应用,适用于 Web(WebAssembly)、Windows、Linux、macOS、iOS 和 Android。它允许开发者共享几乎全部的业务逻辑和 UI 代码,同时保持原生性能。选择 Uno Platform 可以统一开发体验,减少代码重复,降低开发成本。安装时需先配置好 Visual Studio 或 Visual Studio for Mac,并通过 NuGet 或官网下载工具包。
750 0