- 博客(16)
- 资源 (1)
- 收藏
- 关注
转载 Linux/windows 进程/线程间通信机制
Linux进程间通信linux下进程间通信的几种主要手段简介:a) 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;b) 信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程
2013-08-13 22:41:57
1433
原创 结构体对齐——结构体内存布局
c/c++中结构体所占用字节数以及内存布局分析,对于底层程序开发者有很大用处,尤其是需要精简数据结构,跟内存“斤斤计较”时,对内存布局情况的理解将会给编程带来很大的帮助。
2013-07-26 10:47:35
1835
转载 Java中的内部类
提起Java内部类(Inner Class)可能很多人不太熟悉,实际上类似的概念在C++里也有,那就是嵌套类(Nested Class),关于这两者的区别与联系,在下文中会有对比。内部类从表面上看,就是在类中又定义了一个类(下文会看到,内部类可以在很多地方定义),而实际上并没有那么简单,乍看上去内部类似乎有些多余,它的用处对于初学者来说可能并不是那么显著,但是随着对它的深入了解,你会发现Java的
2013-07-22 20:58:52
611
原创 open系统调用流程--从vfs到底层文件系统
sys_open (filename,flag,mode) do_sys_open (dfd=-100, filename=null,flags=35137, mode=438) get_unused_fd_flags(flags),获得一个文件句柄fd do_filp_open (dfd,pathname,open_flag,mode),获得一个文件对象 path_l
2013-05-17 09:10:02
1694
转载 GPFS文件系统分析
什么是GPFS文件系统GPFS(General Parallel File System)是IBM公司开发的高性能集群文件系统,从1998年开始首先应用于AIX集群,2001年后应用于Linux集群。在集群的环境中,GPFS文件系统允许集群中所有的节点访问同一文件的数据,并提供统一的文件存储空间。应用可以使用标准的UNIX文件系统接口访问文件的内容。GPFS支持32位和64位的
2013-05-07 15:30:06
3253
转载 linux内核如何管理内存
在分析了进程的虚拟地址布局,我们转向内核以及他管理用户内存的机制。下图是gonzo的例子: Linux进程在内核中是由task_struct进程描述符实现 的,task_struct的mm字段指向内存描述符mm_struct,他是进程的一个内存执行摘要。如上图所示,mm_struct存储了内存各个段 的开始和结束地址、进程所使用的内存页面数(rss代表常驻集合大小)、使用的
2013-04-12 09:11:44
1304
转载 内存管理内幕
内存管理内幕动态分配的选择、折衷和实现级别: 初级Jonathan Bartlett (johnnyb@eskimo.com), 技术总监, New Media Worx2004 年 11 月 29 日本文将对 Linux™ 程序员可以使用的内存管理技术进行概述,虽然关注的重点是 C 语言,但同样也适用于其他语言。文中将为您提供如何管理内存的细节,然后将进一步展示如何手
2013-04-10 14:25:48
1129
原创 malloc_stats---检查内存泄露的神器
在之前的博客中提到过,valgrind可以用来检测内存泄露,但在使用中,往往会遇到一些问题,给调试工作带来很多不必要的麻烦,我自己遇到的有以下两种: (1)内存泄露误检(系统初始化时,可能有一些需要长期保存在内存中的数据结构,这些空间是永远不释放的,而这些内存会被认为绝对泄露) (2)valgrind检查内存泄露过于全面,运行后的结果太多往往很难从中找到有用的信息。
2013-04-10 12:31:17
8348
转载 窥探 kernel --- copy_process
本系列文章由张同浩编写,转载请注明出处:http://blog.csdn.net/muge0913/article/details/7479714邮箱:muge0913@sina.com在do_fork中调用了copy_process,该函数及其重要。该函数创建进程描述符和子进程需要的其他数据结构。它定义在linux2.6.xxx/kernel/fork.c。只
2013-04-09 10:08:06
1132
原创 代码调试--先内核转储文件再gdb调试
gdb跟踪调试是linux环境下调试常用的方法,但在解决一些问题,如频繁创建线程,打印信息很多时,gdb调试会显得效率很低。这个时候,可以先生成内核转储文件,再针对生成的转储文件进行调试,从而大幅度提高调试效率。1、生成内核转储文件# ulimit –a //查看默认的配置信息,第一项为内核转储文件大小,默认值为0 # ulimit –c unlimited //
2013-04-09 10:04:39
2372
原创 valgrind检测内存泄漏
Valgrind 使用用法:valgrind [options] prog-and-args [options]: 常用选项,适用于所有Valgrind工具-tool=最常用的选项。运行valgrind中名为toolname的工具。默认memcheck。h -help 显示帮助信息。-version 显示valgrind内核的版本,每个工具都有各自的版本。q -quie
2013-04-09 09:47:09
1525
原创 linux 内核内存管理办法简介(下)
伙伴系统算法,设和与申请以页框为单位的大块内存请求。而当申请几十字节的内存时,采用伙伴系统,分配一个页框,显然是浪费空间。实际上,内核采用了slab分配器进行管理。 采用slab分配器,是基于以下假设: 1> 内核会经常申请若干种同样大小的内存,如分配一个新的进程描述符,为一个磁盘文件分配一个新的inode对象,dentry对象等 2> 这些对象会经常申
2012-12-09 16:56:30
1135
原创 linux 内核内存管理办法简介(上)
本文从页的分配管理上进行阐述(内存管理区,每CPU页高速缓存和伙伴系统),下篇文章阐述页内空间的分配管理(slab分配器,通用和专用高速缓存)。 1、内存管理区 linux操作系统把内存节点的物理内存划分为三个管理区,分别为:ZONE_DMA,包含低于16MB的内存页框;ZONE_NORMAL,包含16MB---896MB的内存页框;ZONE_HIGHMEM,
2012-11-29 11:14:28
1093
原创 2013年小米校园招聘笔试题(三)
如上题目,自己设计的代码如下:/* You can mail me :wshust2007@163.com 这个问题的基本思路如下: 1、根据相互间的朋友关系, 二维的bitmap ,根据本题的已知条件,位图为 1 2 3 4 5 1 1 1 0 0 0 2 1 1 1 0 0 3 0 1 1 0 0 4 0 0 0 1 1
2012-10-30 19:12:06
1150
原创 linux内核申请空间方法总结
内核 内存申请与释放1、申请内存的函数kmalloc(int sitze, int flag) 其中,flag有几种, GFP_KERNEL(可能引起休眠) GFP_USER(表示当前为用户态进程申请空间,可引起休眠) GFP_ATOMIC(用在中断处理历程或其他运行于进程上下文之外的代码中分配内存,不会休眠) GFP_NOF
2012-10-26 14:37:53
1454
原创 shell脚本学习总结
shell脚本学习总结cut命令 用法cut命令用于从文件或者标准输入中读取内容并截取每一行的特定部分并送到标准输出截取的方式有三种:一是按照字符位置,二是按照字节位置,三是使用一个分隔符将一行分割成多个field,并提取指定的fields。cut命令有5个参数,其中-c,-b,-f分别表示"character","byte"以及"field"截取方式。当采用field模式截取
2012-10-26 14:23:52
2618
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人