之前做项目的时候,也会遇到过根据页表,由虚拟地址翻译物理地址的需求,一般的做法是HACK内核,在内核中加入HACK代码,思路无非就是通过页表进行转换,但是现在有了一种新的方式,这种方式下,不需要HACK内核,也不需要重新编译内核,便能够根据进程的虚拟地址,得到它的物理地址,下面展开介绍。

原理非常简单,依赖于 proc 文件系统的几个节点:

/proc/$pid/pagemap
/proc/kpagecount
/proc/kpageflags

准确的说,只依赖第一个就够了,pagemap每8个字节为一组,描述了一个struct page 对应的结构信息,这里面就包含了它的PNF物理页框号。

测试代码:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <assert.h>
#include <errno.h>
#include <stdint.h>
#include <string.h>#define PAGEMAP_ENTRY 8
#define GET_BIT(X,Y) (X & ((uint64_t)1<<Y)) >> Y
#define GET_PFN(X) X & 0x7FFFFFFFFFFFFFconst int __endian_bit = 1;
#define is_bigendian() ( (*(char*)&__endian_bit) == 0 )int i, c, pid, status;
unsigned long virt_addr;
uint64_t read_val, file_offs

Linux系统用户态根据虚拟地址获取物理地址的方式相关推荐

  1. linux系统用户,组和权限的管理

    PS: {最近一直在做毕业设计,前面博客也记录过我的一些过程.其中需要在Ubuntu上搭建一个FTP服务器,此处我选择Vsftpd,但是在我对vsftpd的配置文件vsftpd.conf设置正确后(对 ...

  2. 麒麟linux创建用户组,麒麟Linux系统用户和组管理指南(21页)-原创力文档

    中标麒麟Linux服务器操作系统培训系列 中标麒麟Linux系统用户和组管理指南 技术创新,变革未来 本章目标 •熟悉中标麒麟Linux服务器操作系统中用户和组的 基本操作命令和方法: •了解用户和用 ...

  3. linux用户恢复正常,Linux系统用户口令安全恢复方法

    Linux系统用户口令安全恢复方法 2007-09-07 eNet&Ciweek 有许多原因可能导致用户口令的遗失,这对系统管理员而言,可能不是一个问题,只要以root账号登录,再用passw ...

  4. Linux 目录所属组设置,Linux系统用户与组管理命令及配置文件总结

    一.Linux系统用户及组分类 1.用户类别 Linux系统中的用户大致可分为三类:root用户.系统用户.普通用户.每一个用户都拥有一个唯一的身份标识UID. 2.组分类 与用户信息对应的,Linu ...

  5. Linux系统用户详细介绍

    Linux系统用户详细介绍 linux 用户(user)管理 . linux有哪些用户?作用 用户组(grop) 用户相关配置 linux 用户(user)管理 人 名字 身份证 linux 名字 0 ...

  6. 04.05 Linux系统用户与用户组

    第一章 linux系统用户分类 超级用户 UID为0代表root,皇帝Linux管理员 普通用户 UID是500-60000,由超级用户或具备超级用户权限的用户创建的用户(贫民老百姓,大臣,布衣) 系 ...

  7. linux运维管理系统培训,Linux运维教程之Linux系统用户与组管理

    今天小编要跟大家分享的文章是关于Linux运维教程之Linux系统用户与组管理.正在从事Linux运维工作和学习的小伙伴们来和小编一起看一看吧,希望本篇文章能够对大家有所帮助. 一.Linux系统用户 ...

  8. linux认证授权系统,linux系统用户认证与授权管理.pptx

    Linux系统用户认证与授权管理;什么是用户认证/权限PAM认证机制Kerberos认证协议LDAP目录访问协议;出于系统安全考虑,Linux提供的安全机制主要有:身份标识与鉴别.文件访问控制.特权管 ...

  9. Linux系统用户管理和su、sudo详细讲解

    1 Linux用户和组 1)Linux是多任务.多用户的系统 2)每个文件和进程,都需要对应一个用户和用户组 3)Linux系统是通过UID和FID来识别用户和组的用户相当于人名,UID和GID相当于 ...

最新文章

  1. 转:性能测试中的性能测试指标与用户体验分析
  2. 每日站立会议个人博客(冲刺周)-Wednesday
  3. form表单多文件上传
  4. 【面向对象】面向对象程序设计测试题9-对象之间的继承关系测试题
  5. P5703 【深基2.例5】苹果采购(python3实现)--2022.01.29
  6. 2018年高二计算机试题,2018年上学期高二信息技术期末考试试题.pdf
  7. 敏捷开发免费管理工具——火星人预览之一:需求与故事树
  8. python/pytorch中的一些函数介绍
  9. gradientDescent----吴恩达机器学习作业
  10. MMD原神动画制作(学习教程一)
  11. VS与SQL、SSMS的安装,以及官方示例数据AdventureWorks2017的安装
  12. deepin linux 安装 磁盘管理,deepin安装教程
  13. qrCode二维码生成器
  14. webuploader+上传文件夹
  15. 美团笔试题 淘汰分数
  16. C++模拟扑克过五关
  17. 开源进企业8月27日活动
  18. 连接池以及连接池的使用
  19. ES6—ES13总结
  20. 涓滴意念--java基础

热门文章

  1. Android 手机静态IP连接局域网访问局域网电脑Web服务器
  2. 科技云报道:Web3.0横空出世,未来已来?
  3. 快来快来,都是些男人值得拥有的APP
  4. 湖畔大学最新学员名单公布:覆盖14个行业 胡彦斌被录取
  5. TIM学习文档——TIM简介
  6. 【经验分享】打开CAD文件提示:图形文件无效
  7. centos7 mysql创建表_CentOS7 MySQL数据库入门 小白必看
  8. react-native Android上网络请求失败,报错信息:Network request failed
  9. final, finally, finalize的区别
  10. 英语对一个程序员来说有多重要?