DPC和ISR的理解】的更多相关文章

首先来说中断 计算机的中断分为软中断和硬中断,即IRQL和DIRQL,共32个级别,从0~31级别依次提升,0~2属于软中断 一般线程运行于PASSIVE_LEVEL级别,如果不想在运行时切换到其他线程,可以将中端级别提升致DISPATCH_LEVEL,但线程在这个中端级别下运行无法使用分页内存,因为无法触发分页中断.可能有些内存地址访问不了,蓝屏. 当硬件的中断信号发给CPU之后,CPU会把IRQL级别提升致DIRQL,操作系统开始执行ISR(中断服务例程).流程大概是这个样子 但是如果ISR…
CreateFileMapping的MSDN翻译和使用心得   測试创建和打开文件映射的时候老是得到"句柄无效"的错误, 细致看了MSDN以后才发觉是函数认识不透, 这里把相关的解释翻译出来 HANDLE CreateFileMapping(   HANDLE hFile,                       //物理文件句柄   LPSECURITY_ATTRIBUTES lpAttributes, //安全设置   DWORD flProtect,             …
Types of IO IRP Buffer Management 首先区分一下page的内存与nonpaged的内存,内存如果用页管理,就难免面对被swap out的命运:但是如果用nonpaged管理,就会一直存在在物理内存中. 一般来说,内核以及驱动承担繁重的工作,因此常用nonpaged内存,以保证效率. 当application或者driver通过调用下列API/函数创建一个IRP请求数据包时, ReadFile/NtReadFile WriteFile/NtWriteFile Dev…
近期有些人问我PCI设备驱动的问题, 和他们交流过后, 我建议他们先看一看<<The Windows NT Device Driver Book>>这本书, 个人感觉, 这本书写得很连贯流畅. PCI设备驱动基本包含了PCI的资源获取, 配置空间的读写, 中断的处理, 中断后半部在DPC中的处理. 同一时候, 也必须了解DMA, ScatterGater, MapRegister, Common Buffer等基础. 1.1 PCI设备资源获取 PCI设备的资源是系统依据设备的属性…
理解Windows NT驱动程序最重要的概念之一就是驱动程序运行时所处的“执行上下文”.理解并小心地应用这个概念可以帮助你构建更快.更高效的驱动程序. NT标准内核模式驱动程序编程的一个重要观念是某个特定的驱动程序函数执行时所处的“上下文”.传统上文件系统开发者最关注这个问题,但所有类型的NT内核模式驱动程序的编写者都能从执行上下文的深刻理解中获益.小心谨慎地使用执行上下文的概念能帮助构建更高性能.更低开销的驱动程序设计. 在本文中,我们将探寻执行上下文的概念.作为对概念的示范,本文在结尾描述了…
一.原理分析 1.调度时机 背景不同类型的进程有不同的调度需求第一种分类I/O-bond:频繁的进行I/O:通常会花费很多时间等待I/O操作的完成CPU-bound:计算密集型:需要大量的CPU时间进行运算 第二种分批处理进程(batch process):不必与用户交互,通常在后台运行:不必很快响应.典型的批处理程序:编译程序.科学计算实时进程(real-time process):有实时需求,不应被低优先级的进程阻塞:响应时间要短.要稳定.典型的实时进程:视频/音频.机械控制等交互式进程(i…
UST原理:如果gflags标志中包含了UST标志,堆管理器会为当前进程分配一块内存,这个内存区域就是UST数据库(user-mode stack trace database),并建立一个STACK_TRACE_DATABASE数据结构来管理这个数据库,下面是从WRK上找到的数据结构. typedef struct _STACK_TRACE_DATABASE { union { RTL_CRITICAL_SECTION CriticalSection; ERESOURCE Resource;…
sysTick系统嘀嗒定时器并非STM32独有的,它是Cortex内核的部分,CM3为它专门开出一个异常类型,并且在中断向量表中占有一席之地(异常号15).这样它可以很方便的移植到不同厂商出CM3内核的芯片上,尤其对于有实时操作系统的软件,它一般会作为整个系统的时基,所以这个对操作系统非常重要 1 systick属于内核异常中断应该用SHPR设置其优先级:外设中断属于ISR应该按NVIC_IPRx来设置优先级. 2STM32用4个位(共16级优先级)来管理所有的中断优先级(内核中断systick…
本文主要讲述2PC及3PC,以及Paxos以及Raft协议. 两类一致性(操作原子性与副本一致性) 2PC协议用于保证属于多个数据分片上的操作的原子性.这些数据分片可能分布在不同的服务器上,2PC协议保证多台服务器上的操作要么全部成功,要么全部失败. Paxos协议用于保证同一个数据分片的多个副本之间的数据一致性.当这些副本分布到不同的数据中心时,这个需求尤其强烈. 一.2PC(阻塞.数据不一致问题.单点问题) Two-Phase Commit,两阶段提交 1.阶段一:提交事务请求(投票阶段)…
kafka 日常使用和数据副本模型的理解 在使用Kafka过程中,有时经常需要查看一些消费者的情况.Kafka健康状况.临时查看.同步一些数据,又由于Kafka只是用来做流式存储,又没有像Mysql或者Redis提供方便的查询方法查看数据.只能通过在命令行执行Kafka 脚本方式操作kafka(当然也有一些第三方的kafka监控工具),这里就主要收集一些常用的Kafka命令. 在看到 kafka ISR 副本时,实在忍不住就多扯了一点背后的原理,将Kafka.Redis.ElasticSearc…