Linuxer.
全部博文(199)
发布时间:2014-08-18 20:24:02
一、概述程序启动时,stack_canary将随机选择的小整数值保存在返回地址保存位置之前。大部分缓冲溢出攻击是从内存地址的低位向高位覆盖写内存,所以为了覆写返回地址,必须覆写canary值。因此可使用返回地址在返回前查看canary值,从而确认是否发生栈缓冲溢出攻击。//初始化栈canary值,can.........【阅读全文】
发布时间:2014-08-18 20:23:20
一、概述debug_objects_early_init()函数用于内核的对象调试。依赖配置CONFIG_DEBUG_OBJECTS。二、相关结构体struct debug_bucket { struct hlist_head list; //挂载的是当前debug_ob.........【阅读全文】
发布时间:2014-08-18 20:22:46
一、概述如果仔细地阅读完初始化函数start_kernel,就会发现里面还有调用smp_processor_id()函数,这两个函数都是获取多处理器的ID,为什么会需要两个函数呢?其实这里有一个差别的,smp_setup_processor_id()函数可以不调用setup_arch()初始化函数就可以使用,而smp_processor_id()函数是一定要调用s.........【阅读全文】
发布时间:2014-08-18 20:22:09
一、概述在Linux系统里,假设有两处代码(比如不同线程的两个函数F1和F2)都要获取两个锁(分别为L1和L2),如果F1持有L1后再去获取L2,而此时恰好由F2持有L2且它也正在尝试获取L1,那么此时就是处于死锁的状态,这是一个最简单的死锁例子,也即所谓的AB-BA死锁。死锁导致的最终.........【阅读全文】
发布时间:2014-08-14 11:18:50
使用scatterlist的原因就是系统在运行的时候内存会产生很多碎片,比如4k,100k的,1M的,有时候对应磁盘碎片,总之就是碎片。而在网络和磁盘操作中很多时候需要传送大块的数据,尤其是使用DMA的时候,因为DMA操作的物理地址必须是连续的。假设要1M内存,此时可以分配一个整.........【阅读全文】