• 欢迎浏览“String me = Creater\忠实的资深Linux玩家;”,请文明浏览,理性发言,有侵犯你的权益请邮件我(creater@vip.qq.com).
  • 把任何的失败都当作一次尝试,不要自卑;把所有的成功都想成是一种幸运,不要自傲。
  •    5年前 (2013-05-31)  Linux应用 |   28 条评论  16 
    文章评分 0 次,平均分 0.0

    今天在遇到一毕业设计同学问到如下这个问题:
    cat /proc/pid/stat计算物理内存与虚拟内存时,为什么要如下计算?

    tableProcess->setItem(0,3,new QTableWidgetItem(QString("%1M").arg((atof(vmsize)/(1024*1024)))));/*虚拟内存*/
    tableProcess->setItem(0,4,new QTableWidgetItem(QString("%1M").arg((atof(rmsize)*4/1024))));/*物理内存*/

    其实man以下应该就知道答案,以下是man的结果

    vsize %lu
    Virtual memory size in bytes.
    rss %ld
    Resident Set Size: number of pages the process has in real memory, minus 3 for administrative purposes. This is just the pages which count towards text, data, or stack space. This does not include pages which have not been demand-loaded in, or which are swapped out.

    可以看出,虚拟内存的值是以字节表示的,而物理内存则时以页数来统计的。
    所以对于虚拟内存直接除上1024*1024就可以的出以“M”位单位的答案。
    对于物理内存,则需要一些操作系统知识,1个页大小位4K,所以计算方案转换位‘M’为单位时,需要*4/1024.
    操作系统原理还是很重要的!!

     

    除特别注明外,本站所有文章均为String me = "Creater\忠实的资深Linux玩家";原创,转载请注明出处来自http://unix8.net/home.php/1314.html

    关于

    发表评论

    暂无评论

    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    扫一扫二维码分享