Linux
文章平均质量分 65
Citronnelle2
这个作者很懒,什么都没留下…
展开
-
Linux下常用开发工具
24个Linux下的IDE Almost complete list of IDE, Editor for C++/QT/Linux:1. Kdevelop 2. Anjuta Anjuta 3. Codeforge: 4. Code Warrior:5. Cool Edit: 6. Code Crusader: 7. Source Navigator: 8. XWPE:9. gID转载 2015-08-24 15:05:57 · 9176 阅读 · 0 评论 -
分配内存时如何减少内存碎片(一)
摘要:学习了Memcached的slab机制,发现很多服务器都是使用这种机制来分配内存,所以决定学习一下, 分配内存时如何减少内存碎片。感觉面试的时候经常会被问到这个问题,然后我也学习了一下Memcached的slab机制,发现很多服务器都是使用这种机制来分配内存,所以决定学习一下。 首先,先对内存分配中的伙伴系统有初步的了解: 在编程和使用的服务器软件中,经常需要转载 2015-08-25 00:23:58 · 834 阅读 · 0 评论 -
分配内存时如何减少内存碎片(三)
如何减少频繁分配内存(malloc或者new)造成的内存碎片?高性能之内存池(频繁使用malloc和new会降低性能)内存池(Memory Pool)是一种内存分配方式。通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般转载 2015-08-25 00:24:33 · 847 阅读 · 0 评论 -
分配内存时如何减少内存碎片(四)
malloc/free或new/delete大量使用后回造成内存碎片,那么这种碎片形成的机理是什么? 如果机理是申请的内存空间大小(太小)所形成的,那么,申请多大的区域能够最大限度的避免内存碎片呢?(这里的避免不是绝对的避免,只是一种概率) 内存碎片一般是由于空闲的连续空间比要申请的空间小,导致这些小内存块不能被利用。产生内存碎片的方法很简单,举个例: 假设有转载 2015-08-25 00:24:48 · 999 阅读 · 0 评论 -
操作系统内存管理之内部碎片 与外部碎片
“碎片的内存”描述一个系统中所有不可用的空闲内存。这些资源之所以仍然未被使用,是因为负责分配内存的分配器使这些内存无法使用。这一问题通常都会发生,原因在于空闲内存以小而不连续方式出现在不同的位置。由于分 配方法决定内存碎片是否是一个问题,因此内存分配器在保证空闲资源可用性方面扮演着重要的角色。internal fragmentation:when memory alloca转载 2015-08-25 17:10:34 · 2976 阅读 · 0 评论 -
Linux内存管理之mmap详解
Linux内存管理之mmap详解一. mmap系统调用1. mmap系统调用 mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。当使用mmap映射文件到进程后,就可以直接操作这段虚拟地址进行文件的读写等操作,不必再调用re转载 2015-08-31 13:54:17 · 359 阅读 · 0 评论 -
linux中mmap系统调用原理分析与实现
转自:http://blog.chinaunix.net/uid-26215986-id-3360380.html1、mmap系统调用(功能) void* mmap ( void * addr , size_t len , int prot , int flags ,int fd , off_t offset ) 内存映射函数mmap, 负责把文件内容映射到进程的虚转载 2015-08-31 13:58:20 · 631 阅读 · 0 评论 -
伙伴系统和slab机制
伙伴系统Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系统中,用到了四级页表,如图2-1所示。四级页表分别为: 页全局目录(Page Global Directory)页上级目录(Page Upper Directory)页中间目录(Page Middle Directory)页表(Page Tabl原创 2015-09-06 12:15:29 · 8648 阅读 · 2 评论 -
Linux slab 分配器剖析
M. Tim Jones (mtj@mtjones.com), 顾问工程师, Emulex,链接:http://www.ibm.com/developerworks/cn/linux/l-linux-slab-allocator/了解 Linux 内存管理的方式良好的操作系统性能部分依赖于操作系统有效管理资源的能力。在过去,堆内存管理器是实际的规范,但是其性能会受到内存转载 2015-09-06 12:31:45 · 407 阅读 · 0 评论 -
Linux进程间通信之信号
转自:http://blog.csdn.net/ljianhui/article/details/10128731一、什么是信号用过Windows的我们都知道,当我们无法正常结束一个程序时,可以用任务管理器强制结束这个进程,但这其实是怎么实现的呢?同样的功能在Linux上是通过生成信号和捕获信号来实现的,运行中的进程捕获到这个信号然后作出一定的操作并最终被终止。转载 2015-08-31 13:37:45 · 256 阅读 · 0 评论 -
Linux进程间通信之消息队列(一)
转自:http://blog.csdn.net/ljianhui/article/details/10287879下面来说说如何用不用消息队列来进行进程间的通信,消息队列与命名管道有很多相似之处。有关命名管道的更多内容可以参阅我的另一篇文章:Linux进程间通信——使用命名管道一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为转载 2015-08-31 13:47:34 · 433 阅读 · 0 评论 -
Linux进程间通信之消息队列(二)
前言: 消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向其中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读走消息函数:1.创建新消息队列或取得已存在消息队列原型:int msgget(key_t key, int msgflg);参数: key:可以认为是一个端口号转载 2015-08-31 13:50:12 · 290 阅读 · 0 评论 -
Linux进程间通信之命名管道
转自:http://blog.csdn.net/ljianhui/article/details/10202699在前一篇文章——Linux进程间通信——使用匿名管道中,我们看到了如何使用匿名管道来在进程之间传递数据,同时也看到了这个方式的一个缺陷,就是这些进程都由一个共同的祖先进程启动,这给我们在不相关的的进程之间交换数据带来了不方便。这里将会介绍进程的另一种通信方式——命名管道,来解决转载 2015-08-31 13:43:22 · 286 阅读 · 0 评论 -
Linux进程间通信之匿名管道
转自:http://blog.csdn.net/ljianhui/article/details/10287879在前面,介绍了一种进程间的通信方式:使用信号,我们创建通知事件,并通过它引起响应,但传递的信息只是一个信号值。这里将介绍另一种进程间通信的方式——匿名管道,通过它进程间可以交换更多有用的数据。一、什么是管道如果你使用过Linux的命令,那么对于管道这转载 2015-08-31 13:41:55 · 441 阅读 · 0 评论 -
Linux进程间通信之信号量
转自:http://blog.csdn.net/ljianhui/article/details/10243617一、什么是信号量为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域。临界区域是指执行数据更新的代码需要独占式地执行。而信号量就可以提供这样的一种访问机制,让一个临界区同一转载 2015-08-31 13:34:29 · 444 阅读 · 0 评论 -
Linux进程间通信之共享内存(二)
Linux共享内存(二)Linux共享内存编程实例原文链接:http://blog.csdn.net/pcliuguangtao/article/details/6526119/*共享内存允许两个或多个进程进程共享同一块内存(这块内存会映射到各个进程自己独立的地址空间) 从而使得这些进程可以相互通信。 在GNU/Linux中所有的进程都有唯一的虚拟地址空间,而共享内转载 2015-08-31 13:26:24 · 376 阅读 · 0 评论 -
Linux进程间通信之共享内存(一)
Linux共享内存(一)Linux系统编程我一直看 ,只是讲的太简单了,通常是书和网络上的资料结合着来掌握才比较全面 .在掌握了书上的内容后,再来都其他资料 .原文链接 http://www.cnblogs.com/skyme/archive/2011/01/04/1925404.html共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。在/proc/sys/ke转载 2015-08-31 13:25:11 · 1392 阅读 · 1 评论 -
linux系统进程的内存布局
内存管理模块是操作系统的心脏;它对应用程序和系统管理非常重要。今后的几篇文章中,我将着眼于实际的内存问题,但也不避讳其中的技术内幕。由于不少概念是通用的,所以文中大部分例子取自32位x86平台的Linux和Windows系统。本系列第一篇文章讲述应用程序的内存布局。 在多任务操作系统中的每一个进程都运行在一个属于它自己的内存沙盘中。这个沙盘就是虚拟地址空间(virtualaddres转载 2015-08-25 00:23:05 · 357 阅读 · 0 评论 -
分配内存时如何减少内存碎片(二)
内存碎片的产生: 内存分配有静态分配和动态分配两种 静态分配在程序编译链接时分配的大小和使用寿命就已经确定,而应用上要求操作系统可以提供给进程运行时申请和释放任意大小内存的功能,这就是内存的动态分配。 因此动态分配将不可避免会产生内存碎片的问题,那么什么是内存碎片?内存碎片即“碎片的内存”描述一个系统中所有不可用的空闲内存,这些碎片之所以不能被使转载 2015-08-25 00:24:16 · 4428 阅读 · 0 评论