OS操作系统
文章平均质量分 79
walterxia
这个作者很懒,什么都没留下…
展开
-
大内高手—内存模型
<br /><br />大内高手—内存模型<br /> <br />转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd<br />作者联系方式:李先静 <xianjimli at hotmail dot com><br />更新时间:2007-7-9<br /> <br />了解linux的内存模型,或许不能让你大幅度提高编程能力,但是作为一个基本知识点应该熟悉。坐火车外出旅行时,即时你对沿途的地方一无所知,仍然可以到达目标地。但是你对整个路途都很比较清楚的话,每到一个站转载 2011-03-09 00:02:00 · 273 阅读 · 0 评论 -
spinlock和semaphore的差别和应用
转自 http://group.ednchina.com/1036/18550.aspx 这两天经常有同事在问我spinlock和semaphore的相关问题,什么时候该用spinlock?什么时候该用semaphore?什么时候该用spinlock_irq?什么时候该用spinlock_irqsave?的确,对于初涉内核开发的人员来说,spinlock和semaphore的应用是转载 2011-06-17 15:59:00 · 758 阅读 · 0 评论 -
False Sharing问题
在多处理器,多线程情况下,如果两个线程分别运行在不同的CPU上,而其中某个线程修改了cache line中的元素,由于cache一致性的原因,另一个线程的cache line被宣告无效,在下一次访问时会出现一次cache line miss,哪怕该线程根本无效改动的这个元素,因此出现了False Sharing问题【1】。如下图所示,thread1修改了memory灰化区域的第[2]个元素,而转载 2011-06-15 20:54:00 · 431 阅读 · 0 评论 -
为什么程序员需要关心顺序一致性(Sequential Consistency)而不是Cache一致性(Cache Coherence?)
转自: http://www.parallellabs.com/2010/03/06/why-should-programmer-care-about-sequential-consistency-rather-than-cache-coherence/ 本文所讨论的计算机模型是Shared Memory Multiprocessor,即我们现在常见的共享内存的多核CPU。本文适合的对象是转载 2011-06-13 23:19:00 · 443 阅读 · 0 评论 -
多核与多线程技术的区别到底在哪里?
<br />转自 http://article.pchome.net/content-326430.html <br />2007-04-21 CBSi中国·PChome.net 类型: 转载 来源: 硬派网 作者: 硬派网 责编: 胡亚峰<br /> <br /><br />毫无疑问的,“多核”、“多线程”此二词已快成为当今处理器架构设计中的两大显学,如同历史战国时代以“儒”、“墨”两大派的显学,只不过当年两大治世思想学派是争得你死我亡,而多核、多线程则是相互兼容并蓄,今日几乎任何处理器都朝同时具有多核多转载 2011-03-29 12:37:00 · 735 阅读 · 1 评论 -
Linux用户进程内存泄露一种检测方法
作者:夏斯华 像使用C/C++内存管理器不会帮我们自动回收不再使用的内存,如果忘记释放不再使用的内存而不能再被重用,就造成了所谓的内存泄露。 在Linux中,用户进程在/proc/{pid}/status文件中记录了该进程的内存使用实时情况。 * VmSize: 虚拟内存大小。 整个进程使用虚拟内存大小,是VmLib, VmExe, VmData, 和 VmStk的总和。* VmLck: 虚拟内存锁。 进程当前原创 2011-03-10 01:31:00 · 1537 阅读 · 0 评论 -
【百度分享】频繁分配释放内存导致的性能问题的分析
<br />http://blog.csdn.net/baiduforum/archive/2011/01/10/6126337.aspx <br />现象<br />1 压力测试过程中,发现被测对象性能不够理想,具体表现为: <br />进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70 <br />2 用ps -o majflt,minflt -C program命令查看,发现majflt每秒增量为0,而minflt每秒增量大于10000。<br /><br />初步分析<br转载 2011-03-10 00:12:00 · 374 阅读 · 0 评论 -
大内高手—栈/堆
<br /><br />大内高手—栈/堆<br /> <br />转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd<br />作者联系方式:李先静 <xianjimli at hotmail dot com><br />更新时间:2007-7-9<br /> <br /><br />l 栈<br />栈作为一种基本数据结构,我并不感到惊讶,用来实现函数调用,这也司空见惯的作法。直到我试图找到另外一种方式实现递归操作时,我才感叹于它的巧妙。要实现递归操作,转载 2011-03-09 00:04:00 · 294 阅读 · 0 评论 -
linux线程同步浅析——睡眠与唤醒的秘密
<br />http://blog.csdn.net/baiduforum/archive/2010/04/12/5475284.aspx<br />一个程序问题 <br />之前写过这样一个C程序:模块维护一个工作线程、提供一组调用接口(分同步调用和异步调用)。用户调用模块提供的接口后,会向工作队列添加一个任务。然后任务由工作线程来处理。在同步调用情况下,接口调用后调用者被阻塞,等待工作线程处理完成后,将调用者唤醒。伪代码如下: <br />[调用接口] <br />add_command(cmd, pi转载 2011-03-10 00:14:00 · 1072 阅读 · 0 评论 -
Linux下 /proc/maps 文件分析
<br />/proc/<PID>/maps <br />查看进程的虚拟地址空间是如何使用的。 <br />该文件有6列,分别为: <br />地址:库在进程里地址范围 <br />权限:虚拟内存的权限,r=读,w=写,x=,s=共享,p=私有; <br />偏移量:库在进程里地址范围 <br />设备:映像文件的主设备号和次设备号; <br />节点:映像文件的节点号; <br />路径: 映像文件的路径 <br />每项都与一个vm_area_struct结构成员对应, <br />范例: <br />转载 2011-03-09 19:55:00 · 817 阅读 · 0 评论 -
电梯调度模拟系统
电梯调度模拟系统Elevator Attemper Simulation System(EASS)设计开发者:夏斯华1.调度描述:实现电梯调度算法如下:1. 初始状态在一楼。内外部没有请求,则保持原先状态。2. 外部请求发出,放在请求列表中。定时分配: a>.读取当前各电梯状态(运动状态、所在楼层) b>.同方向、路径最短.(除去 同方向需要折回情况) c>.同方向不符和,则取停止电梯中路径最短的那个。修改该电梯目标列表. d>.此时没有符合要求的。则进入下一个循环。3. 内部请求。下一个请求需要在电原创 2011-03-07 14:35:00 · 2641 阅读 · 1 评论 -
简单文件系统的实现
简单文件系统的实现原创 2011-03-07 13:55:00 · 939 阅读 · 0 评论 -
大内高手--调试手段及原理
<br /><br />大内高手--调试手段及原理<br /> <br />知其然也知其所以然,是我们《大内高手》系列一贯做法,本文亦是如此。这里我不打算讲解如何使用boundschecker、purify、valgrind或者gdb,使用这些工具非常简单,讲解它们只是多此一举。相反,我们要研究一下这些工具的实现原理。<br /> <br />本文将从应用程序、编译器和调试器三个层次来讲解,在不同的层次,有不同的方法,这些方法有各自己的长处和局限。了解这些知识,一方面满足一下新手的好奇心,另一方面也可能转载 2011-03-09 00:12:00 · 384 阅读 · 0 评论 -
大内高手—惯用手法
<br /><br />大内高手—惯用手法<br /> <br /> <br />《POSA》中根据模式粒度把模式分为三类:架构模式、设计模式和惯用手法。其中把分层模式、管道过滤器和微内核模式等归为架构模式,把代理模式、命令模式和出版-订阅模式等归为设计模式,而把引用计数等归为惯用手法。这三类模式间的界限比较模糊,在特定的情况,有的设计模式可以作为架构模式来用,有的把架构模式也作为设计模式来用。<br /> <br />在通常情况下,我们可以说架构模式、设计模式和惯用手法,三者的重要性依次递减,毕竟整体决策转载 2011-03-09 00:11:00 · 315 阅读 · 0 评论 -
大内高手—常见内存错误
<br /><br />大内高手—常见内存错误<br /> <br /> <br />随着诸如代码重构和单元测试等方法引入实践,调试技能渐渐弱化了,甚至有人主张废除调试器。这是有道理的,原因在于调试的代价往往太大了,特别是调试系统集成之后的BUG,一个BUG花了几天甚至数周时间并非罕见。<br /> <br />而这些难以定位的BUG基本上可以归为两类:内存错误和并发问题。而又以内存错误最为普遍,即使是久经沙场的老手,也有时也难免落入陷阱。前事不忘,后世之师,了解这些常见的错误,在编程时就加以注意,把出错的转载 2011-03-09 00:09:00 · 353 阅读 · 0 评论 -
大内高手—共享内存与线程局部存储
<br /><br />大内高手—共享内存与线程局部存储<br /> <br /> <br />城里的人想出去,城外的人想进来。这是《围城》里的一句话,它可能比《围城》本身更加有名。我想这句话的前提是,要么住在城里,要么住在城外,二者只能居其一。否则想住在城里就可以住在城里,想住在城外就可以住在城外,你大可以选择单日住在城里,双日住在城外,也就没有心思去想出去还是进来了。<br /> <br />理想情况是即可以住在城里又可以住在城外,而不是走向极端。尽管像青蛙一样的两栖动物绝不会比人类更高级,但能适应于更转载 2011-03-09 00:08:00 · 327 阅读 · 0 评论 -
大内高手—内存管理器
<br /><br />大内高手—内存管理器<br /> <br />转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd<br />作者联系方式:李先静 <xianjimli at hotmail dot com><br />更新时间:2007-7-9<br /> <br /><br />作为一个C程序员,每天都在和malloc/free/calloc/realloc系列函数打交道。也许和它们混得太熟了,反而忽略了它们的存在,甚至有了三五年的交情,仍然对它们的实现一无所知转载 2011-03-09 00:07:00 · 336 阅读 · 0 评论 -
大内高手—全局内存
<br /><br />大内高手—全局内存<br /> <br />转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd<br />作者联系方式:李先静 <xianjimli at hotmail dot com><br />更新时间:2007-7-9<br /><br /><br />有人可能会说,全局内存就是全局变量嘛,有必要专门一章来介绍吗?这么简单的东西,还能玩出花来?我从来没有深究它,不一样写程序吗?关于全局内存这个主题虽然玩不出花来,但确实有些重要,了解这些知识转载 2011-03-09 00:06:00 · 307 阅读 · 0 评论 -
谈谈字节序
谈谈字节序 walterxia walter.xia@gmail.com 说到字节序问题首先想到的是网络字节序(Network byte order)。不同主机之间需要通信,可能各个主机的体系结构不同,其本身存放字节的顺序是不同的,X86体系一般采用Little Endian(即低字节存放在低地址),而PowerPC相反,采用Big Endian(即高字节存放在低地址),原创 2012-06-18 23:03:37 · 855 阅读 · 1 评论