linux
文章平均质量分 90
风夜阑竹
这个作者很懒,什么都没留下…
展开
-
Linux内存管理(TLB和HugePage)
在前文Linux进程内存管理之虚拟内存中,我们学习了虚拟内存的概念,也了解了程序刚malloc成功时,操作系统并不会立即为其分配真实物理内存,而是在访问时才延迟分配。本文中,我们就将来学习下操作系统是如何为程序分配物理内存的。进程访问虚拟内存地址,操作系统转换找到正确的物理内存地址。两者要对应起来就必然会有一个类似map的地址对照表。而内存的最小分配单位是页(Page),故操作系统在内存中维护了一个PageTable,里面就维护了虚拟内存页和物理内存页之间的对照关系。CPU中有一个硬件组件”内存管理单元原创 2021-04-14 19:55:52 · 1252 阅读 · 0 评论 -
Linux进程内存管理之虚拟内存
引言文章开始之前,我们先来思考以下两个问题:问题1.:服务器物理内存只有1个G,我的程序malloc申请超过1个G的内存能否成功,进程能否正常运行?问题2:物理内存的分配和释放是随机的,那么即使总的空余物理内存充足,连续空余的内存块不一定够大,那么程序malloc出来的连续内存是否受限?不着急给出结论,先用示例代码跑一下,如下图所示,首先用free –m查看系统剩余内存。剩余的内存是121M。编写简单代码,malloc 申请1GB的内存,成功则输出内存首地址,失败则输出内存不足。如下原创 2021-03-29 20:28:19 · 871 阅读 · 0 评论 -
Linux下程序运行中替换动态链接库引起崩溃详解
笔者在工作过程中,遇到过好多次未停止进程的情况下,直接替换了动态库,导致程序崩溃产生coredump的场景。一直也没有深究过其原因,最近准备总结一下,搜索了很多资料,总结一下。具体场景是:在Linux服务器上。可执行程序A,dlopen方式打开了动态链接库B.so,调用了B库中的函数进行业务处理。未关闭程序A的情况下,用xftp替换了一个新版本的B.so到服务器上。结果A业务上再次调用到B中的函数时,触发了coredump。为了简化问题,这边用一个demo程序来进行问题的说明。下面是可执行程序dlo原创 2021-03-14 21:03:30 · 2740 阅读 · 1 评论 -
读取gb2312编码的xml失败问题分析
C#开发程序时,遇上了一个字符编码的大坑,记录一下,解决思路和解决方案供大家参考。程序功能说明:简化而言,程序需要从读取一个xml配置文件,在里面增添部分内容后,再次保存成一个新的xml配置文件。新配置文件最终要放在Linux服务器中,用libxml2库进行解析。遇到的问题:用libxml2库解析时,报错encoding error:input conversion failed due to input error.最终导致XML parse error.如下图所示。分析过程:原创 2021-03-03 20:29:16 · 2296 阅读 · 2 评论 -
跨平台的多线程互斥访问控制(Mutex和Critical_Section)
1.首先解决跨平台原创 2014-10-29 13:48:01 · 1600 阅读 · 0 评论 -
Linux网络通信中的poll函数应用
poll函数poll函数 poll函数起源于SVR3,最初局限于流设备。SVR4取消了这种限制,允许poll工作在任何描述字上。poll提供的功能与select类似,不过在处理流设备时,它能够提供额外的信息。 1.#include 2. 3.int poll(struct pollfd *fdarray, unsigned long nfds, int tim转载 2014-10-28 14:52:59 · 698 阅读 · 0 评论 -
Netstat命令详解
Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。 如果你的计算机有时候接收到的数据报导致出错数据或故障,你不必感到奇怪,TCP/IP可以容许这些类型的错误,并能够自动重发数据报。但如果累计的出错 情况数目占到所接收的IP数据报相当大的百分比,或者它的数目正迅速增加,那么你就应该使用Netstat查一查为什么会出现这些情况了。N转载 2014-08-21 19:48:25 · 491 阅读 · 0 评论 -
RHEL 6.4中安装G++编译器及GCC与G++区别
1.在虚拟机设置的CD-ROM中选择“使用ISO镜像wenj”转载 2014-08-04 09:20:55 · 752 阅读 · 0 评论 -
转载:跟我一起写Makefile
概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写m转载 2014-07-27 16:37:26 · 422 阅读 · 0 评论 -
linux下两次fclose运行时出错及解决方法
今天敲代码不小心两次fclose了同一个文件指针。结果运行时爆了一堆错误*** glibc detected *** logconvert: double free or corruption (out): 0x000000001685d750 ***======= Backtrace: =========/lib64/libc.so.6[0x30c66722ef]/lib64/l原创 2014-03-18 15:46:43 · 5776 阅读 · 1 评论 -
可ping通主机而不能连上主机端口的一般原因
在64位Linux虚拟机中启动了中间件,配置文件也设置好了协议,IP地址,端口。但是在主机上客户端却怎么也连接不上中间件。但是虚拟机与主机网络畅通,一时素手无策啊。只好转向老同事请教问题,听完我的描述,说:能ping通主机但是通不了端口,一般为防火墙问题!一语惊醒梦中人,还是经验不足啊! 经过验证,果然如此,立贴留念顺便普及下linux下临时关闭防火墙的办法。在root用户下,原创 2014-03-27 17:25:54 · 3389 阅读 · 0 评论 -
两台linux主机间互传文件的解决办法
1.针对虚拟机中装Linux的情况。 主机上装一个类似XManager的工具,里面的Xftp可以在主机和虚拟机之间传输文件。利用主机作为中转站,可以实现linux主机中文件传输。 2.要求在linux中实现 利用scp命令,它可以实现两台linux主机间文件安全互传。 >从远程主机中复制到本机文件 scp 目标linux主机用户名@目标IP:/hom原创 2014-03-04 16:44:44 · 1577 阅读 · 0 评论