windows内核情景分析之—— KeRaiseIrql函数与KeLowerIrql()函数 1.KeRaiseIrql函数 这个 KeRaiseIrql() 只是简单地调用 hal 模块的 KfRaiseIrql() 函数,返回原来的 IRQL 写入 KeRaiseIrql() 的第 2 个参数里 ...
情景假设:在堆内存中申请了一块内存,然后释放掉该内存,然后再去访问这块内存。也就是所说的野指针访问。当cpu产生页面错误时,会把失败的线性地址放在cr2寄存器.线性地址缺页异常的4种情况1.如果cpu访问的行现地址在内核态,那么很可能访问的是非连续区,需要vmalloc_fault处理.2.缺页异常... ...
分类:
系统相关 时间:
2016-10-27 13:15:21
阅读次数:
336
NUMA结构的alloc_pages==================== mm/numa.c 43 43 ====================43 #ifdef CONFIG_DISCONTIGMEM==================== mm/numa.c 91 128 ========... ...
分类:
系统相关 时间:
2016-10-27 12:36:26
阅读次数:
272
用来描述用户态的cpu寄存器在内核栈中保存情况.可以获取用户空间的信息struct pt_regs {long ebx; //可执行文件路径的指针(regs.ebx中long ecx; //命令行参数的指针(regs.ecx中)long edx; //环境变量的指针(regs.edx中)。long.... ...
分类:
系统相关 时间:
2016-10-27 12:24:47
阅读次数:
571
//第一层系统调用asmlinkage long sys_exit(int error_code){ do_exit((error_code&0xff)pid)//空转进程也就是0号进程禁止退出 panic("Attempted to kill the idle task!"); if (tsk->... ...
分类:
系统相关 时间:
2016-10-27 12:14:10
阅读次数:
375
从系统调用返回到用户空间是否调度,从ret_with_reschedule可看出,是否真正调度,取决于当前进程的pcb中的need_resched是否设置为1,那如何设置为1取决于以下几种情况:时间中断处理程序,发现当前进程运行时间过长:每次发生时间中断,都要递减该进程的时间片,一旦count为0,... ...
分类:
系统相关 时间:
2016-10-27 12:11:54
阅读次数:
292
页缓冲在《linux内核情景分析》一书的第5.6节文件的写与读一章中说明的很详细,这里摘抄下来;
在文件系统层中有三隔主要的数据结构,file结构、dentry结构和inode结构;
file结构:代表目标文件的一个上下文,不同进程可以在同一文件上建立不同的上下文,而且同一进程也可以通过打开一个文件多次而建立起多个上下文。因此不能在file结构上设置缓冲区队列,因为这些file结构体之间都不共...
分类:
系统相关 时间:
2016-04-29 16:18:47
阅读次数:
1075
第一篇分析Windows内核的文章,主要是加强学习记忆。以后会多写这种笔记,正如猪猪侠所说,所学的知识只有实践并且能够讲出来才能真正实现掌握。 程序来自ReactOS或WRK1.2 资料参考自《Windows内核情景分析》和《Windows 内核设计思想》以及网上文章和视频 ...
在arch\i386\kernel\head.S文件中,自line100开始有这么几行:movl%cr0,%eax
orl$0x80000000,%eax
movl%eax,%cr0/*..andsetpaging(PG)bit*/
jmp1f/*flushtheprefetch-queue*/
1:
movl$1f,%eax
jmp*%eax/*makesureeipisrelocated*/
1:
/*Setupthestackpointer*/
lssstack_start,..
分类:
其他好文 时间:
2016-03-07 19:22:33
阅读次数:
333
文章链接:1> Windows内核情景分析 3.4.1 Windows 进程的句柄表2> Windows 句柄表格式3> Windows句柄表分配算法分析4> 浅谈Windows句柄表5> 句柄啊,3层表啊,ExpLookupHandleTableEntry啊... 5楼-----------...
分类:
其他好文 时间:
2015-02-02 22:43:18
阅读次数:
203