一、层次结构

Windows从总体上分为内核模式(Kernel Model)和用户模式(User Model)。谈到操作系统的内核模式和用户模式,一般会和CPU的特权层联系起来。CPU有多个特权层,例如,Intel的386CPU就有4个特权层,从第0层到第3层。其中第0层的特权最高,也就是可以执行任意代码,第3层特权最低,只能执行有限代码。

Windows将内核模式运行在CPU的第0层,将用户模式运行在CPU的第3层。内核模式下运行的都是核心代码,这些代码是安全的,且不会受到恶意的攻击。而运行在用户模式下的应用程序是最不安全且容易受到攻击的,所以应用程序权限是受到限制的。如果应用程序进行一些诸如直接访问物理内存的动作,需要向,需要内核模式下组件提出请求。

Windows操作系统每层有若干组件组成,其作为一个整体,它的运行高度依赖于上层组件对下层组件的调用。每层组件都有固定的接口供上层调用,高层如果要进行更改权限操作需要向底层提出请求。结构如图所示:

Windows操作系统被划分为用户模式和内核模式两个部分。用户模式下,应用程序调用其对应的子系统中的API。这些子系统除了win32,还有POSIX、OS/2等,它们为了兼容16位应用程序或其他系统应用程序而设计,都是通过调用win32子系统来实现的,但很少被用到。Win32子系统将API函数转化为Native API。系统版本的变化只是Native API的改变,并没有修改Win32,即没有改变win32 API函数的名称和参数,实现了对应用程序的兼容。在Native API中的函数调用被转化为系统服务函数调用并进入内核模式,并进一步向下传递实现相应功能。

二、从应用程序到驱动程序

根据上面所述Windows操作性的分层特性可知,应用程序对硬件操作的请求是从上而下一层层被交给硬件的。Windows的设计者为简化对不同设备的操作,将所有的设备都当作普通文件看待,用操作文件的方法来操作设备。这一点与Linux有很大相似之处。

常用操作有Creatfile(),CloseHandle(),Readfile(),Writefile(),DeviceIoControl()等。以Creatfile()为例描述硬件操作过程。

应用程序调用Createfile() API后,Createfile()会在Native API中调用NtCreatefile()。NtCreatefile()会进入内核模式调用系统服务函数,该函数通过I/O管理器创建I/O请求包(I/O request package,IRP)并传递给驱动程序。IRP为Windows驱动中重要数据结构。驱动程序根据IRP判断操作类型并调用相应的派遣函数针对硬件抽象层进行操作。由于硬件抽象层由Windows操作系统实现且屏蔽了底层硬件的细节,驱动开发者无需关心硬件细节而只需清除如何与硬件抽象层交互即可。

(本文是将相关材料整理后写出的,来源:张帆. Windows驱动开发技术详解[M]. 北京:电子工业出版社,2008)

Windows操作系统结构相关推荐

  1. 操作系统原理第二章:操作系统结构

    目录 1 计算机硬件 1.1 计算机体系结构 1.2 中断机制 1.3 I/O操作 2 硬件保护 2.1 实现保护两状态操作 2.2 CPU保护 3 操作系统服务 3.1 提供的服务 4 系统调用 4 ...

  2. 操作系统复习笔记 02-03 OS Structure 操作系统结构

    02-03操作系统结构(OS_Structure) []陈述: 1.IO设备与CPU可并行运行. 2.每一个设备控制器负责一个设备类型. 3.每一个设备控制器有一个局部缓存. 4.CPU通过局部缓存与 ...

  3. 【操作系统/OS笔记02】操作系统的历史、操作系统结构

    本次笔记内容: 1.4 如何学习操作系统 1.5 操作系统的实例 1.6 操作系统的历史 1.7 操作系统结构 1.8 小结 文章目录 操作系统的大概分支 操作系统的历史和演变过程 操作系统结构 微内 ...

  4. 操作系统第三章笔记--操作系统结构

    本文内容整理自西安交通大学软件学院田丽华老师的课件,仅供学习使用,请勿转载 操作系统系列笔记汇总:操作系统笔记及思维导图汇总附复习建议_Qlz的博客-CSDN博客 文章目录 文章目录 文章目录 Ope ...

  5. 操作系统(二):操作系统结构

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star 操作系统(一):操作系统概述 操作系统服务和接口 在上一篇 ...

  6. 计算机题windows如何操作,2015年职称计算机Windows操作系统模拟题(二)

    单项选择题. 1.在Windows98中,不能打开"资源管理器"窗口的操作是( ) A.用鼠标右键单击"开始"按钮 B.用鼠标左键单击"任务栏&quo ...

  7. 服务器操作系统策略,Windows操作系统组策略应用全攻略(2)服务器教程 -电脑资料...

    五.个性化"任务栏"和"开始"菜单 在图6所示窗口的右侧,显示了"任务栏"和"开始"菜单的有关组策略配置项目, 图 6 ...

  8. 浙江大学远程教育学院计算机考试,浙江大学远程教育学院机试题 Windows操作题(共15分,若有做错请酌情 ....docx...

    浙江大学远程教育学院机试题 Windows操作题(共15分,若有做错请酌情 ....docx 第 PAGE 26 页 共 NUMPAGES 36 页 浙江大学远程教育学院机试题 Windows操作题( ...

  9. 计算机一级windows系统操作知识点,计算机一级考试:高分必看知识点之windows操作...

    计算机一级考试:高分必看知识点之windows操作 1.设置任务栏的属性 执行"开始/设置/任务栏属性",在属性窗口设置相应的参数 2.设置"数字"." ...

最新文章

  1. java代码中何处以main开始,Gradle-user guide-第7章 Java 快速开始
  2. C#开发Unity游戏教程之Scene视图与脚本的使用
  3. htmlcss网页设计代码案例_网页设计案例|定价表版块设计方案鉴赏
  4. Lesson 16.5 在Pytorch中实现卷积网络(上):卷积核、输入通道与特征图在PyTorch中实现卷积网络(中):步长与填充
  5. 为什么学习Python数据分析,python数据分析有什么用?
  6. template 标签
  7. Asp.Net IIS 管理类(全)
  8. 页面跳转失效_网站的404页面对于SEO的重要作用
  9. openSIPS(一):SIP简介
  10. [BZOJ4487] [JSOI2015]染色问题
  11. 指数函数,幂函数,对数函数
  12. python判断负数_python中的负数
  13. Update 语法全介绍
  14. 时统ptp_IEEE1588对时系统,PTP校时模块,PTP时钟服务器
  15. 2017年总结—颓废的一年
  16. 闭式系统蒸汽管径推荐速度_蒸汽管道的设计选型
  17. 细粒度图像分类(FGVC)---综述
  18. 搭建git 服务器出现 Error executing action `create` on resource 'user[GitLab user and group]'
  19. linux串口设备配置方法(固定ID)
  20. 整流滤波电路和钳位保护电路的设计

热门文章

  1. CRSNet: Dilated Convolutional Neural Networks for Underatanding the Highly Congested Scenes
  2. soundtouch android,soundtouch
  3. 千分位格式C语言编程,金额数值的千分位显示格式
  4. 3dMax游戏建模制作动画技巧、方法总结
  5. python版本的GNSS时间转换:公历与儒略日的互相转换,以及儒略日转为GPST。
  6. 小学计算机网络教室使用登记,网络教室上机登记制度
  7. 13.鼠标拖拽:案例:鼠标拖拽小方块,小方格跟着移动(桌面图标拖动)
  8. Word常见问题解决方法
  9. 使用Instrumentation模拟点击屏幕
  10. 尾随零 - LintCode