当前位置: 首页 > news >正文

04_20 直接使用代码 创建内核模块获取物理内存信息

好像和 free得出来有关 和/proc/meminfo 有关
但是下面是全部的物理页

#include <linux/version.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/mm.h>//下面宏表示物理内存空间起始地址 对应页帧号
#define ARCH_PFN_OFFSET (0UL)static int __init my_init(void)
{sturct page *p;unsigned long i,pfn,valid=0;int free = 0;int locked = 0;int resvered = 0;int swapcache = 0;int reference = 0;int slab = 0;int private = 0;int uptodate = 0;int dirty = 0;int active = 0;int wirteback = 0;int mappedtodisk =0;unsigned long mun_physpages = 0;  mun_physpages = get_mun_physpages(); //获得所有物理页for(i=0;i<mun_physpages;i++){pfn = ARCH_PFN_OFFSET+i;//检查页是否有效if(!pfn_valid(pfn)){continue;valid++;}//获得页的描述符p=pfn_to_page(pfn);if(!p)continue;//空闲页面if(!page_count(p)){free++;continue;}//页面上锁if(!pagelocked(p)){locked++;}//不能换出页面if(!Pageresvered(p)){locked++;}//交换页面if(!Pageswapcache(p)){swapcache++;}//slpa分配区创建页面if(!Pageslab(p)){slap++;}if(!Pageprivate(p)){private++;}//读操作完成if(!Pageuptodate(p)){uptodate++;}//脏页,页面内容修改过 没有更新到romif(!Pagedirty(p)){dirty++;}if(!Pageactive(p)){active++;}//页面正在回写if(!Pagewirteback(p)){wirteback++;}//页面分配到磁盘if(!Pagemappedtodisk(p)){mappedtodisk++;}}}
http://www.lryc.cn/news/141941.html

相关文章:

  • <C++> STL_list
  • 聚类分析 | MATLAB实现基于FCM模糊C均值聚类结果可视化
  • C++笔记之设计模式:setter函数、依赖注入
  • Spring MVC详解
  • 谷歌公开.zip域名,应采取哪些措施应对可能的安全风险?
  • css3滤镜属性filter让网页变黑白
  • C++教程 - How to C++系列专栏第5篇
  • Vue2向Vue3过度核心技术插槽
  • vite配置electron、ElementPlus或者AntDesignVue
  • 时序分解 | MATLAB实现基于SVD奇异值分解的信号分解分量可视化
  • 强化学习系列--时序差分学习方法(SARSA算法)
  • 深度学习9:简单理解生成对抗网络原理
  • adb shell setprop 、开发者选项
  • 性能测试面试问题,一周拿3个offer不嫌多
  • Android Bitmap压缩
  • 不同子网络中的通信过程
  • Ubuntu Touch OTA-2 推出,支持 Fairphone 3 和 F(x)tec Pro1 X
  • 【网络】数据链路层——MAC帧协议 | ARP协议
  • 【Spring Boot】Spring Boot自动加载机制:简化应用程序的启动
  • centos7搭建apache作为文件站后,其他人无法访问解决办法
  • 【开个空调】语音识别+红外发射
  • 【hibernate validator】(二)声明和验证Bean约束
  • Redis持久化机制之RDB,AOF与混合AOF
  • 为啥外卖小哥宁愿600一月租电动车,也不花2、3千买一辆送外卖!背后的原因......
  • 分布式定时任务框架Quartz总结和实践(2)—持久化到Mysql数据库
  • Linux 服务器搭建配置,开发效率一飞冲天 - Centos 篇
  • Day46|leetcode 139.单词拆分
  • 深入理解高并发编程 - Thread 类的 stop () 和 interrupt ()
  • C语言之三子棋游戏实现篇
  • jupyter notebook 插件nbextensions的安装