摘要: 源自:http://coolshell.cn/articles/7965.html前两天有人问了个关于Unix的fork()系统调用的面试题,这个题正好是我大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分享一下。这个题是这样的:题目:请问下面的程序一共输出多少个“-”?1234567891011121314#include <stdio.h>#include <sys/types.h>#include <unistd.h>int main(void){int i;for(i=0; i<2; i++){fork();printf(& 阅读全文
posted @ 2012-11-14 15:53 @且听风吟@ 阅读(175) 评论(0) 推荐(0) 编辑
摘要: http://os.51cto.com/art/201005/200672.htmvmstat是一个十分有用的Linux系统监控工具,使用vmstat命令可以得到关于进程、内存、内存分页、堵塞IO、traps及CPU活动的信息。51CTO编辑推荐:Linux监控工具大全一、前言很显然从名字中我们就可以知道vmstat是一个查看虚拟内存(Virtual Memory)使用状况的工具,但是怎样通过vmstat来发现系统中的瓶颈呢?在回答这个问题前,还是让我们回顾一下Linux中关于虚拟内存相关内容。二、虚拟内存运行原理在系统中运行的每个进程都需要使用到内存,但不是每个进程都需要每时每刻使用系统分配 阅读全文
posted @ 2012-11-14 15:32 @且听风吟@ 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 原文地址:register、volatile、restrict 三关键字的用法 – RaymondAmos的技术专栏 – CSDN博客.register使用修饰符register声明的变量属于寄存器存储类型。该类型与自动存储类型相似,具有自动存储时期、代码块作用域和内连接。声明为register 仅仅是一个请求,因此该变量仍然可能是普通的自动变量。无论哪种情况,用register修饰的变量都无法获取地址。如果没有被初始化,它的值是未定的。volatilevolatile告诉编译器该被变量除了可被程序修改外,还可能被其他代理、线程修改。因此,当使用volatile 声明的变量的值的时候,系统总是 阅读全文
posted @ 2012-11-14 10:20 @且听风吟@ 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 源自http://yaronspace.cn/blog/archives/category/%E9%9D%A2%E8%AF%95%E9%A2%98昨天笔试遇到了关于c++中关于const与const_cast的题目,大概如下:int main(int argc, char* argv[]){ const int a = 10; int * p = const_cast<int *>(&a); *p = 1; printf("%d %d\n", a, *p); return 0;}求上述程序的输出结果,正确答案是:10 1分析如下:首先可以确定是p和&am 阅读全文
posted @ 2012-11-14 10:16 @且听风吟@ 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 源自:http://yaronspace.cn/blog/archives/1525最近在做性能优化时,遇到一个问题,系统中进程占用的内存没有那么多,但是通过TOP看到系统对实际物理内存接近满额,十分纳闷,后来问了同事才知道原来是Cache Memory占用了大量内存,上网查阅了相关资料,整理记录下。什么是Cache Memory当进程对磁盘中的文件大量读写时,Linux内核为了提升读写性能,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用 阅读全文
posted @ 2012-11-14 09:40 @且听风吟@ 阅读(227) 评论(0) 推荐(0) 编辑