随笔分类 - C/C++
摘要:Linux Clone函数 之前某一次有过一次面试,问了内核中是怎么创建命名空间的? 下面就来扒一扒clone的精髓,以及如何通过它创建命名空间。 注:本文的代码仅用于功能验证,不能用于生产。本文对clone的标志的描述顺序有变,主要考虑到连贯性。 使用clone创建进程和线程 从linux 2.3
阅读全文
摘要:看了一篇博文,该文章中有如下描述 预期结果时打印“in if”,但实际运行时却发现啥都没有输出。改为如下代码就可以正常输出“in if”,此时与预期相符 使用汇编,直接对比两者结果(公司安全不让发送外网图片..),发现主要差异在如下5行,前四行中对short进行了扩展,由2字节扩展为4字节,高位填充
阅读全文
摘要:今天发现了一个Intel逻辑左移指令shl的一个bug。 逻辑左移的概念是对给定的目的操作数左移COUNT次,每次移位时最高位移入标志位CF中,最低位补零. 其中OPRD1为目的操作数, 可以是通用寄存器或存储器操作数。 首先说明一下我的环境:Intel(R) Pentium(R) 4 CPU,操作
阅读全文
摘要:HASH算法介绍 Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散
阅读全文
摘要:最近在看代码时发现一个用于求结构体成员偏移量的方式 奇怪的是对(STRUCT *)0)->FIELD的引用怎么不会出现错误呢? 于是写了如下代码进行简单的求证 其中int x= (char *)&((student *)0)->age - (char *)0这一行代码用于求age在结构体中的偏移量(
阅读全文
摘要:linux手册中有详细讲解使用的接口的用法:http://man7.org/linux/man-pages/man2/semop.2.html 使用场景: master(W) shm1 >slave(R) master(R)< shm2 >slave(W) 使用2对信号量控制2个共享内存的读写 编译
阅读全文
摘要:最近看自旋锁的实现,自选锁的循环查找锁的主要实现类似如下,该实现使用到了内嵌的汇编(摘自sanos内核,源代码有2处实现,一处使用intel汇编,是没有问题的,另一处使用内嵌汇编语法,源代码中为cmpxchgl %2, %0,是错误的,应该是cmpxchgl %0, %2) 内嵌汇编有个固定格式,如
阅读全文

浙公网安备 33010602011771号