
linux c/c++
文章平均质量分 76
jinnlxl
nothing,nothing at all
展开
-
linux内核锁
自旋锁(spinlock)是用在多个CPU系统中的锁机制,当一个CPU正访问自旋锁保护的临界区时,临界区将被锁上,其他需要访问此临界区的CPU只能忙等待,直到前面的CPU已访问完临界区,将临界区开锁。自旋锁上锁后让等待线程进行忙等待而不是睡眠阻塞,而信号量是让等待线程睡眠阻塞。自旋锁的忙等待浪费了处理器的时间,但时间通常很短,在1毫秒以下。自旋锁用于多个CPU系统中,在单处理器系统中,自旋转载 2015-01-10 18:18:29 · 671 阅读 · 0 评论 -
malloc和free
昨天看见一位同学分享面试经历。中间有这么一句话:”一是Java的内存分配原理与C/C++不同,C/C++每次采用malloc或new申请内存时都要进行brk和mmap等系统调用,而系统调用发生在内核空间,每次都要中断进行切换,这需要一定的开销“。因为这个同学最终拿到了阿里offer,且这个回答得到了面试官”(面试官一直点头表示对我回答的赞同)嗯,看来你对这块的确掌握了“的回应,不知道是这位原创 2015-01-13 23:38:50 · 3898 阅读 · 0 评论 -
主动kill掉进程获取线程运行时栈信息
通常情况下,通过对运行时log的分析基本上可以定位一些bug,但是在一些特殊的环境下,分析log并不是一个有效的方法。拿我最近遇见的情况来说,一些跑稳定性的设备在运行多日后三台设备出现了一些异常,粗略估计是因为某个管理资源的状态机出了异常。但是因为这个状态机触发频率高,所以并未留下足够分析的log,同时这个bug再现率非常低,对一台设备进行了配置修改操作,一台加了对应的log重新升级之后数原创 2015-01-20 10:31:42 · 2839 阅读 · 0 评论 -
求比给定正整数N的最小不重复数(度娘)
/************************************************************* * file:get_min_nonrepeat_num.c * brief:求比给定正整数N的最小“不重复数” * yejing@2015.1.24 1.0 creat *******************************************原创 2015-01-24 16:27:54 · 909 阅读 · 0 评论 -
linux内存管理函数mmap和brk
linux内核提供mmap和brk用于管理线性内存:一,brklinux man page描述如下:brk为系统调用,sbrk给glibc对于系统调用brk的封装:从man里面可以看到这brk的原理主要是通过修改program break(数据段的结尾,the first location after the end of the uninitialized data se原创 2015-03-10 15:42:10 · 3196 阅读 · 0 评论 -
glibc内存管理模块ptmalloc架构透析
之前写了一篇关于ptmalloc的malloc/free代码解析的博客,有同事看到说,在不熟悉ptmalloc架构的情况,即使注释写的再详细,也不是很好理解,建议再写一些架构介绍的博文,年前后这段时间一直在忙其他事情,打算最近抽出一些时间完成这个任务。ptmalloc的设计遵循以下原则:1,较大块的内存,占用周期长得内存使用mmap分配,使用时间短的内存使用brk,如果不了解brk和mma原创 2015-03-11 11:30:17 · 1342 阅读 · 1 评论