IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 操作系统与驱动程序 -> 正文阅读

[系统运维]操作系统与驱动程序

操作系统与驱动程序
1.硬件抽象层保证windows可移植性
2.Win32 API保证应用程序的兼容性,应用程序可在不同版本的windows中正常运行
3.对于涉及硬件的操作都由内核层执行,没应用层啥事。
4.操作系统内核负责调度线程,线程运行在自己的线程上下文中,也就是CPU寄存器状态、线程ID、优先权等等。
5.Windows的I/O操作基于异步设计,也就是线程发起I/O操作,CPU不用候着,可以去做别的事,等I/O操作完成后通知一下CPU就行。
6.在编写驱动,尽量支持异步操作。编写驱动程序主要是为了操作硬件设备。
7.编写驱动程序尽量避免Bug,例如:缓冲区溢出。会造成难以估计的后果。
8.Windows中内核和用户模式都是通过软件中断来实现,
9.操作系统(内核模式)与应用程序隔离。操作系统的各个组件和模块通过消息进行通信。
10.内核模式,执行体组件(例如,I/O管理器)提供了大量供驱动程序调用的内核函数,内核主要负责进城和线程调度,驱动程序通过硬件抽象层直接去具体硬件进行操作。
11.应用程序在编译和链接的时候,都会指明应用程序属于哪个子系统(例如win32 API),使用接口就能开发应用程序了。windows系统文件USER32.dll、GDI32.dll、KERNEL.dll,分别表示提供了三类API,当应用程序加载到内存中的时候,操作系统会将以上三个dll文件加载到内存中。
12.工具:Dependency用于查看应用程序用到的dll文件。动态链接吗?
13.Win32 API是通过Native API实现的,在应用层API函数前加Nt-就表示原生API,且NativeAPI是通过Ntdll.dll实现的。是用户模式进入内核模式的大门,通过软件中断(调试驱动能发现,当调用应用层某个函数时,会中断进入内核层)方式进入,并调用内核的系统服务。
14.系统服务是啥?让进入内核模式时,软中断传参(参数,系统服务号),在系统组件中有系统服务描述符,以系统服务号为索引去找到系统服务函数的函数地址。如:CreateFile(Win32API)->Nt CreateFile(Native API)->系统函数(与前面相同且去通过系统服务号找到的系统函数),系统服务描述符表保存在ntoskrnl.exe中。
15.而执行程序组件则位于ntoskrnl.exe的上层。包括对象管理器、进程管理器、虚拟内存管理器、I/O管理器和配置管理器。
16.对象管理器,驱动开发中的驱动程序对象、设备对象都是一种对象,而对象管理器程序就是负责创建、管理、回收、这些对象的。windows提供的所有服务几乎都是以对象的形式存在。
一些对象(数据结构形式)可直接被程序员读写,相当于实例对象的public中的成员变量,可以直接改变数值;不能的就是private。所以加载就是将类实例化后操作。
17. 进程管理器,进程是线程的容器。负责创建和终止进程。线程由内核调度。
18. 虚拟内存管理器,负责对虚拟内存的申请、回收等操作。
19.I/O管理器,负责发起I/O请求并管理这些请求。有内核模式一系列例程(IoFastDisparch等)组成,为用户模式提供同一接口,例如,对于端口的读写同一为IRP,包含对设备操作数据,传递到具体设备的驱动程序中,驱动程序负责完成这些IRP然后将完成的状态返回用户程序,也就说担当着用户模式代码和设备驱动程序之间的接口。
20. 配置管理器,通过一个注册表(register)保存所有计算机软硬件的配置信息,设备驱动程序根据注册表中的信息进行加载,也就是DriverEntry注册的一些东西。
21. 内核,内核模式中分为执行体组件、驱动程序和执行体组件。其中内核是操作系统的心脏,负责进程和线程的调度,例如通过自旋锁同步多个cpu,中断处理等等。内核调度线程不能被其他线程打断。
22. 硬件抽象层,隔绝操作系统与硬件的直接联系,在他俩中间。为他俩提供通信通道,

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-23 17:05:14  更:2021-08-23 17:06:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 9:54:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计