分析专题提供分析的最新资讯内容,帮你更好的了解分析。
这里紧跟上一篇谈到的0x7C00开始执行,当然此时是在实模式下面,执行最初先禁止中断,因为现在堆栈都没有就算有中断也不能执行,所以第一步禁止中断,一直到设置好堆栈才打开中断。这一部分代码很简单,利用ax将段寄存器全部清零,然后调用切换到保护模式下面去,但是由于CS一直都在使用当中,所以就不需要初始化CS。不过要注意的是实际上进入switch_to_prot的时候,并没有进入保护模式,而是在 返回的
#define KeEnterGuardedRegion() \ { \ PKTHREAD _Thread = KeGetCurrentThread();
VOID IoInitializeDpcRequest( IN PDEVICE_OBJECT DeviceObject, IN PIO_DPC_ROUTINE DpcRoutine) { KeInitializeDpc( &DeviceObject->Dpc, (PKDEFERRED_ROUTINE) DpcRoutine,
首先要区分的是,之前提过的critical region和critical section的区别,前者是主要是通过IRQL阻止线程被打断,而后者则是通过包装内核对象来防止线程被打断。 为了减少不必要的代码量,直接跳过一些函数的封装。下面是critical section的初始化实现。 NTSTATUS NTAPI RtlInitializeCriticalSectionAndSpinCount(P
用户需要从文件里面读取一段数据,最终的读操作在内核层进行。但是最终内存需要返回到用户空间。如果读取操作比较慢就需要将内核内存空间中的数据复制到用户的内核空间中去。有没有一种办法避免这种读取操作呢?MDL完全可以处理这种问题,并且更进一步。 首先,看一下MDL的定义: typedef struct _MDL { struct _MDL *Next; CSHORT Size; CSHORT
  [mina源码分析]mina中的reactor模式(一) 2008-09-26 22:01  2305人阅读  评论(0)  收藏  举报 mina exception session socket null class 吴峥涛,架构师,研发中心   mina中的aceptor模式实现参考了Doug Lea 在《Scalable IO in Java》中的reactor。     从上面来两个
一. Reactor模式简介 Reactor释义"反应堆",是一种事件驱动机制。和普通函数调用的不同之处在于:应用程序不是主动的调用某个API完成处理,而是恰恰相反,Reactor逆置了事件处理流程,应用程序需要提供相应的接口并注册到Reactor上,如果相应的时间发生,Reactor将主动调用应用程序注册的接口,这些接口又称为"回调函数"。 二. moduo库Reactor模式的实现 muduo
一. TcpServer类: 管理所有的TCP客户连接,TcpServer供用户直接使用,生命期由用户直接控制。用户只需设置好相应的回调函数(如消息处理messageCallback)然后TcpServer::start()即可。 主要数据成员: boost::scoped_ptr<Accepter> acceptor_; 用来接受连接 std::map<string,TcpConnectio
上图是APIC的组成,其中PIIX3是一个和之前标准中断控制器兼容的中断控制器,而Host-to-PCI桥是系统中与外设相连的桥(可能是北桥)。APIC包含IOAPIC和Local APIC,Local APIC包含在处理器内部,Local APIC用于处理器之间的相互中断,而IOAPIC处于系统芯片组中,IOAPIC用于处理外部IO提交的中断。IOAPIC和Local APIC通过APIC总线进
这篇文章非常粗略地讨论thttpd的工作pattern: Reactor.关于pattern和model的区别,这里不多解释,参考这个说法: M(odel)-VC pattern.关于pattern的更多资料,参考 http://www.enterpriseintegrationpatterns.com/ . 什么是Reactor Reactor又称Dispatcher,用于同步IO,它逆置了常见
libevent使用event来封装网络事件回调,参数、fd。。。等一些信息,函数很简单 void event_set(struct event *ev, int fd, short events, void (*callback)(int, short, void *), void *arg) { /* Take the current base - caller needs to se
    windows的过程,有如linux的软中断。以前Linux内核中自旋锁同步分析提到过,Linux通过IN_HARDIRQ/IN_SOFTIRQ来屏蔽软中断的执行,windows其实也类似,偷梁换柱的用IRQL来代替这些概念:IRQL高于DPC_LEVEL时,DPC过程无法执行,因为可能是中断过程正在执行;当通过KfLowerIrql降低IRQL请求级别到DPC_LEVEL及以下时开始执行
event_base数据结构 初始化event_base 相关接口 前面介绍了event,本节介绍Reactor的核心结构:event_base,它在event-internal.h中。 event_base是整个libevent的核心,它持有所有注册的事件,并负责通知激活的事件。 event_base数据结构 struct event_base { const struct evento
event处理流程 Libevent处理时间的大概流程为 1、设置event_base(即初始化Reactor) 2、设置event事件(初始化event) 3、将event和event_base关联(将event注册到event_base) 4、进入循环,等待事件 5、事件发生,处理事件。 用UML序列图可以表示为: #include <iostream> #include <sys/time.
计算机BIOS读取硬盘第一个扇区的数据到内存0x7C00位置,将控制权交给主引导记录(MBR),MBR再搜索系统的活动分区表,加载活动分区表的第一个扇区到一个固定的地址。MBR接下来将控制权交给PBR,PBR解析FAT或NTFS格式文件系统,找到引导内核的文件NTLDR,将该文件加载到0x20000。最后将控制权交给NTLDR进行内核启动。 原版的启动源码是一段汇编程序,这段汇编程序的路径大概是在
原文地址:http://purplebamboo.github.io/2015/09/15/reactjs_source_analyze_part_two/ reactjs是目前比较火的前端框架,但是目前并没有很好的解释原理的项目。reactjs源码比较复杂不适合初学者去学习。所以本文通过实现一套简易版的reactjs,使得理解原理更加容易。包括: reactjs源码分析-上篇(首次渲染实现原理)
转载需注明出处:http://blog.csdn.net/minimicall?viewmode=contents 从今天起,我要分析React Native for Android的源码。 本系列主要是从使用和源码分析的角度来一步步的剖析React Native Android。当然,因为我对IOS不了解,所以,我只能分析安卓了。 首先来一个Hello world。 对于Rn 安卓的开发环境,本
本文为老曾原创,转载需注明出处:http://blog.csdn.net/minimicall?viewmode=contents 在上一节中,我们通过一个相册的制作来学习了React Native编写。这一节我们需要开始学习React Native的源码。 学习源码,从编译源码开始。 首先,我们需要把代码从github中克隆下来。 https://github.com/facebook/reac
本文代码来自ReactOS-0.3.6。 当硬件中断完成后将要返回的时候,将要调用KfLowerIrql来使当前cpu的irql降低到中断发生前的irql,但是真的就是直接降低到原来优先级就完事了吗?我们看看代码(桩代码,待会分析真正的): VOID HalpLowerIrql(KIRQL NewIrql) {   if (NewIrql >= PROFILE_LEVEL)//如果原来的优先级过高
学习React-Native有一段时间了。今天就从源码的角度来分析下React-Native底层的通信机制。了解下底层是如何通信的对开发也有所好处。 概要 先大概讲一下React-Native的通信过程。RN主要的通信在于java与js之间,平常我们写的jsx代码最终会调用到原生的View。上一篇博客我们也了解到了要新建一个原生模块需要在java层和js层分别写一个Module,那这彼此之间联系是