发布时间:2013-01-06 22:46:48
最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解决。 1. 段错误是什么 一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址、访问了系统保护的内存......【阅读全文】
发布时间:2013-01-06 08:57:25
linux系统压力测试软件Stress 命令操作与使用指南转自:http://xzd.2000y.net/mb/1/ReadNews.asp?NewsID=319127发表日期:2005年11月21日 出处:原创 转贴请标明出处 作者:Alan将stress-0[1].18.1.tar.gz复制到“/etc/local/src/”目录下:执行以下命令安装:Step1 #cd /usr/local/srcStep2 #tar -xzpvf stress-0[1].18.1.tar.gzStep3&......【阅读全文】
发布时间:2012-12-16 22:57:19
经过对Linux系统有了一定了解和熟悉后,想对其更深层次的东西做进一步探究。这当中就包括系统的启动流程、文件系统的组成结构、基于动态库和静态库的程序在执行时的异同、协议栈的架构和原理、驱动程序的机制等等。 本人在综合了现有网上大家智慧的基础上,结合对2.6.32的内核代码的研读,基于CentOS 6.0系统对Linux的启动流程做了些分析。由于才疏学浅,知识所限,有些地方分析不妥之处还请各位高手不吝赐教。 OK,我们言归正传。对于一台安装了Linux系统的主机来说,当用户按下开机按钮时,一......【阅读全文】
发布时间:2012-12-16 22:41:25
我们都知道,动态共享库里面的函数的共享的,这也是动态库的优势所在,就是节省内存。C 编译出来的可执行文件几乎都会用到libc的库,假如没有这个共享的技术,每个可执行文件都要占一份libc库的内存,这将是极大的内存浪费。 可是一直没搞明白,怎么样才能证明共享库里面函数的地址在物理内存层面是同一份。其实,这个问题的本质是程序里面的逻辑地址和物理内存地址之间是怎样映射的,说的再赤裸裸一点,就是我给你个逻辑地址,请你在物理内存中找到对应的地址,或者我给你个物理地址,请你把这个物理内存里面存的东西告诉我。 最近两天,发现了一篇很牛......【阅读全文】
发布时间:2012-12-15 10:59:37
现在,越来越多的应用程序需要编写内核和用户级代码的程序来一起协作完成具体的任务,而用户与空间和内核空间的通讯也就是一个不可回避的话题了。针对于需要和内核空间通信的具体应用而言,其开发模式和套路相对来说比较固定,主要概括起来有两大步骤: 第一步,编写内核服务程序利用内核空间提供的权限和服务来接收、缓存和处理数据;第二步,编写用户程序来和先前的内核服务程序进行交互。 具体来说,可以利用用户程序来配置内核服务程序的参数,获取内核服务程序提供的数据,也可以向内核服务程序输入数据。 我们可以看到,用户程序和内核的信息交换可以是双向的,也就是说既可以由用户主动向内核空间发送消息,也可以由内核空间......【阅读全文】