小张慢慢成了老张

导航

2012年5月30日 #

Linux共享内存(二) (转载)

摘要: 1 /*共享内存允许两个或多个进程进程共享同一块内存(这块内存会映射到各个进程自己独立的地址空间) 2 从而使得这些进程可以相互通信。 3 在GNU/Linux中所有的进程都有唯一的虚拟地址空间,而共享内存应用编程接口API允许一个进程使 4 用公共内存区段。但是对内存的共享访问其复杂度也相应增加。共享内存的优点是简易性。 5 使用消息队列时,一个进程要向队列中写入消息,这要引起从用户地址空间向内核地址空间的一次复制, 6 同样一个进程进行消息读取时也要进行一次复制。共享内存的优点是完全省去了这些操作。 7 共享内存会映射到进程的虚拟地址空间,进程对其可... 阅读全文

posted @ 2012-05-30 16:17 小张慢慢成了老张 阅读(245) 评论(0) 推荐(0) 编辑

Linux共享内存(一)

摘要: Linux系统编程我一直看 <GNU/LINUX编程指南>,只是讲的太简单了,通常是书和网络上的资料结合着来掌握才比较全面 .在掌握了书上的内容后,再来都其他资料 .原文链接http://www.cnblogs.com/skyme/archive/2011/01/04/1925404.html共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。在/proc/sys/kernel/目录下,记录着共享内存的一些限制,如一个共享内存区的最大字节数shmmax,系统范围内最大共享内存区标识符数shmmni等,可以手工对其调整,但不推荐这样做。一、应用共享内存的使用,主要有以下几 阅读全文

posted @ 2012-05-30 16:11 小张慢慢成了老张 阅读(420) 评论(0) 推荐(0) 编辑

2012年4月24日 #

proc文件系统详解(转载)

摘要: 转载自:http://bbs.chinaunix.net/thread-2002769-1-1.htmlLinux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。基于/proc文件系统如上所述的特殊性,其内的文件也常被称作虚拟文件,并具有一些独特的特点。例如,其中有些文件虽然使用查看命令查看时会返回大量信息,但文件本身的大小却会显示为0字节。此外,这些特殊 阅读全文

posted @ 2012-04-24 21:50 小张慢慢成了老张 阅读(314) 评论(0) 推荐(0) 编辑

2012年4月7日 #

一些GDB的使用方法(转载)

摘要: 1、首先需要用gcc(g++) 对源文件进行编译生成可执行文件,并且在编译时加上选项-g,把调试信息加到目标文件中。2、假设生成的可执行文件为test,那么gdb test 可以用gdb打开test文件,然后通过break linenum设置断点。可以输入list查看源文件和行号,方便设置断点。断点设置好后就可以run命令运行到断点处了。下面是转载一、初始化输入gdb进入gdb调试环境。或者直接输入gdb + progfile来加载文件。注意该文件是使用gcc(或g++)编译得到的。为了使 gdb 正常工作, 必须使你的程序在编译时包含调试信息,编译时必须使用-g参数来。或者进入gdb环境后, 阅读全文

posted @ 2012-04-07 14:29 小张慢慢成了老张 阅读(2190) 评论(0) 推荐(0) 编辑

2012年3月13日 #

.tar.xz文件的解压

摘要: 这种文件是使用tar打包后再压缩生成的。解压方法是: 1、xz -d **.tar.xz 2、tar -xvf **.tar如没有按照xz工具,则首先需要下载、安装xz工具: http://tukaani.org/xz/xz-4.999.9beta.tar.bz2安装: 1、tar -jxvf xz-4.999.9beta.tar.bz2 2、cd xz-4.999.9beta 3、./configure --prefix=/ 4、make 5、sudo make install 阅读全文

posted @ 2012-03-13 14:54 小张慢慢成了老张 阅读(24669) 评论(0) 推荐(2) 编辑

2012年3月9日 #

Linux on Power 上的调试工具和技术

摘要: 转载自http://www.ibm.com/developerworks/cn/linux/l-pow-debug/简介调试程序有很多方法,例如向屏幕上打印消息,使用调试器,或者只需仔细考虑程序如何运行,并对问题进行有根有据的猜测。在修复 bug 之前,首先要确定在源程序中的位置。例如,当一个程序产生崩溃或生成核心转储(core dump)时,您就需要了解是哪行代码发生了崩溃。在找到有问题的代码行之后,就可以确定这个函数中变量的值,函数是如何调用的,更具体点说,为什么会发生这种错误。使用调试器查找这些信息非常简单。本文将简要介绍几种用于修复一些很难通过可视化地检查代码而发现的 bug 的技术, 阅读全文

posted @ 2012-03-09 08:41 小张慢慢成了老张 阅读(345) 评论(0) 推荐(0) 编辑

2012年3月6日 #

共享内存与线程局部存储

摘要: 转载时请注明出处:http://blog.csdn.net/absurd城里的人想出去,城外的人想进来。这是《围城》里的一句话,它可能比《围城》本身更加有名。我想这句话的前提是,要么住在城里,要么住在城外,二者只能居其一。否则想住在城里就可以住在城里,想住在城外就可以住在城外,你大可以选择单日住在城里,双日住在城外,也就没有心思去想出去还是进来了。理想情况是即可以住在城里又可以住在城外,而不是走向极端。尽管像青蛙一样的两栖动物绝不会比人类更高级,但能适应于更多环境的能力毕竟有它的优势。技术也是如此,共享内存和线程局部存储就是实例,它们是为了防止走向内存完全隔离和完全共享两个极端的产物。当我们发 阅读全文

posted @ 2012-03-06 18:03 小张慢慢成了老张 阅读(558) 评论(0) 推荐(0) 编辑

理解 Linux 配置文件(转载)

摘要: 转载自https://www.ibm.com/developerworks/cn/linux/management/configuration/ 阅读全文

posted @ 2012-03-06 15:52 小张慢慢成了老张 阅读(264) 评论(0) 推荐(0) 编辑

2012年2月24日 #

va_start、va_end、va_list的使用

摘要: 1:当无法列出传递函数的所有实参的类型和数目时,可用省略号指定参数表void foo(...);void foo(parm_list,...);2:函数参数的传递原理函数参数是以数据结构:栈的形式存取,从右至左入栈.eg:#include <iostream>void fun(int a, ...){int *temp = &a;temp++;for (int i = 0; i < a; ++i){cout << *temp << endl;temp++;}}int main(){int a = 1;int b = 2;int c = 3;in 阅读全文

posted @ 2012-02-24 17:25 小张慢慢成了老张 阅读(233) 评论(0) 推荐(0) 编辑

2012年1月13日 #

对线程的互斥锁与读写锁的理解

摘要: 这几天在纠结互斥锁与读写锁的理解,查阅了一些资料后才发现他们根本就没有什么关系,压根不该混淆的,呵呵,读写锁是对线程共享的数据进行的保护,使得智能单独访问数据;而互斥锁则是将锁住的代码原子化,使之成为原子操作,即要么不执行,要么就执行完。互斥锁是通过这来实现对数据资源的单独访问的。 阅读全文

posted @ 2012-01-13 15:23 小张慢慢成了老张 阅读(476) 评论(0) 推荐(0) 编辑