发明名称 一种Windows系统实时扩展的两级调度方法
摘要 本发明涉及一种Windows系统实时扩展的两级调度方法,利用Windows系统亲缘性设定,对系统CPU资源进行重新分配,指定实时任务运行核心,以保证实时任务所需资源;设置IOAPIC重定向表,使外部中断指向特定内核处理,不会影响实时内核的运行;同时,利用Local APIC的时钟中断计数器,为任务调度提供高精度时钟信号;再利用WinDbg从NTDLL中获取Windows进程、线程操作函数入口地址,封装成DLL,形成任务控制的基本接口;对内核任务控制块和任务队列进行锁定与映射,使得调度算法的编写与调试可以在用户态进行,最后挂入Local APIC高精度时钟的中断处理例程中,完成实时内核调度算法。
申请公布号 CN103744726B 申请公布日期 2017.01.04
申请号 CN201410001033.8 申请日期 2014.01.02
申请人 西北工业大学 发明人 杜承烈;蒋泽军;陈进朝;王丽芳;杨皓;秦楠;王兆文;黄云婷
分类号 G06F9/48(2006.01)I 主分类号 G06F9/48(2006.01)I
代理机构 西北工业大学专利中心 61204 代理人 王鲜凯
主权项 一种Windows系统实时扩展的两级调度方法,其特征在于步骤如下:步骤1:利用Windows系统中进程和线程CPU亲缘性标志位,对系统资源进行重新分配,把系统中所有进程和线程都指向非实时内核,空出运行实时任务的CPU核心,为实时任务提供足够的运行资源;步骤2:同时操作接口封装、中断管理以及内存锁定与映射这三个部分来实现实时任务的运行:a)借助于微软公司提供的系统服务描述符表SSDT,利用已知的Windows接口特征码,搜索系统内存指令,获取进程和线程的创建、挂起、恢复、终止四个基本操作的函数入口地址,并根据系统函数原型,利用嵌入汇编进行调用,完成特定操作接口的封装;b)使用IOAPIC可编程中断控制器编程把外部中断分派给各个非实时内核,避免外部中断对实时内核的干扰,通过设定实时内核内的初始计数寄存器上的计数值,产生10‑100微秒的定时信号,为实时调度程序提供调度信号;c)在内核态下预先申请连续的物理页面,对其进行锁定,防止该页面的换入换出,利用MDL机制,对该物理页面进行用户态映射,使用户态和内核态能够操作同一块物理空间,避免运行模式切换时造成的数据拷贝,将线程控制块TCB和进程控制块PCB映射为用户可用地址,在用户态下进行调度算法的编写与调试;步骤3:系统在执行具体任务时,根据不同的任务类型,采用不同的处理内核调度策略,普通任务、Windows系统任务和外部中断使用非实时内核处理,采用Window系统自身的调度策略;实时任务、指定的特殊中断将会被实时内核模块处理,采用实时调度机制,从而实现Windows实时扩展的两级调度;所述实时调度机制的步骤如下:步骤a:按照线程固有优先级将线程TCB插入READY_LIST;步骤b:根据线程运行结果将状态改变的线程TCB直接变换链表;步骤c:利用软中断陷入内核进行任务切换,在调度时首先需要将DELAY_LIST中开始时间已到的线程插入READY_LIST中;步骤d:对当前调度情形做判断,查看最高优先级任务是否改变:若没有改变则直接结束时钟中断处理,任务接着运行;若有改变则进入DPC例程进行相关调度,选出READY_LIST中优先级最高且状态为READY的线程,恢复其运行。
地址 710072 陕西省西安市友谊西路127号
您可能感兴趣的专利