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

Linux mmap读/写触发共享文件页生命周期

概述

Linux的mm内存子系统的核心功能就要要管理各种类型的page,确保能高效分配和释放,让物理内存得以最大化使用。初识内存系统往往关注的是page的申请和管理流程,容易忽略page的释放回收流程,其实理解mm中的内存回收和释放也是最核心的机制。

Linux内核为了支持各种场景的内存使用场景,将page分成多种类型,怎么识别什么系统调用或者代码场景产生的是什么类型的page也是非常重要的,不过本文重点不是来讲解这个话题,而是只针对mmap共享文件场景讲述,看看这种file-back的page的生命周期是怎么样的。之所以讲解mmap共享文件场景,是因为网络上基本都是讲解匿名页生命周期的,但是还没由发现一篇完整讲述文件页生命周期的文章,而文件页的生命周期也是非常重要和复杂的。

所谓生命周期,就是页面从产生到回收的整个代码流程。我们知道,Linux内核page页面回收相关最重要的一个变量时_refcount,关于该点可以参考我前面的文章:page _refcount和_mapcount字段_nginux的博客-CSDN博客

本周将详细描述mmap写共享文件的page从诞生到回收的整个流程。

示例代码

#include<sys/mman.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<error.h>char *g_addr = NULL;
char* mm_anon_priv() {return NULL;
}char* mm_file_shared() {int fd = 0;int i = 0;int tmp;char *addr = NULL;struct stat sb;if((fd = open("/sdcard/1.txt", O_RDWR | O_CREAT)) < 0){perror("open") ;}if((fstat(fd, &sb)) == -1 ){perror("fstat") ;}if((g_addr = mmap(NULL, 4096 * 10, 

相关文章:

Linux mmap读/写触发共享文件页生命周期

概述 Linux的mm内存子系统的核心功能就要要管理各种类型的page,确保能高效分配和释放,让物理内存得以最大化使用。初识内存系统往往关注的是page的申请和管理流程,容易忽略page的释放回收流程,其实理解mm中的内存回收和释放也是最核心的机制。 Linux内核为了支持各种场景…...

linux 用户、组操作

一、创建用户并设置密码 #创建用户 duoergun useradd duoergun #设置用户 duoergun 密码 passwd duoergun二、创建组 #创建组 qingdynasty groupadd qingdynasty三、用户添加到组&#xff0c;用户从组删除 #添加用户duoergun到组qingdynasty usermod -aG qingdynasty duoer…...

MySQL报错this is incompatible withsal mode=only full group by处理办法

问题说明 报这个错误是指&#xff0c;在查询分组时展示了非分组字段。举例&#xff1a; select id , user_name from user group by user_name;上述语句查询id和user_name字段&#xff0c;其中user_name进行了分组&#xff0c;id并没有分组&#xff0c;这时候mysql就会报上述…...

Mybatis 动态语言 - mybatis-freemarker

前面我们介绍了Mybatis动态SQL的使用&#xff1b;本篇我们介绍使用mybatis- freemarker动态语言生成动态SQL。 如果您对Mybatis动态SQL不太了解&#xff0c;建议您先进行了解后再阅读本篇&#xff0c;可以参考&#xff1a; Mybatis 动态SQL – 使用if,where标签动态生成条件语…...

软件源码开发,网络中的“摄像头”:运维监控系统

在日常生活中&#xff0c;我们不管是在大街小巷&#xff0c;还是在商场大厦都可以见到一个圆形或是方形带有镜片的“小盒子”&#xff0c;这个“小盒子”就是摄像头&#xff0c;摄像头作为一个能实时录制记录它能照到范围内的视频图像的工具&#xff0c;可以在丢失物品、抓捕坏…...

ping命令

打开运行窗口 首先&#xff0c;我们需要打开运行窗口&#xff0c;可以通过按下WinR组合键打开。然后&#xff0c;在窗口中输入cmd&#xff0c;进入dos命令。 在命令行中输入ping命令 在dos命令行中&#xff0c;我们可以通过输入ping命令来检测网络连接。例如&#xff0c;我们…...

MFC:程序的托盘显示

介绍 关键技术&#xff0c;API函数Shell_NotifyIcon&#xff0c;具体查看msdn吧 实现的主要代码 #define MY_TRAY_ICON_ID (1)/ //其他代码&#xff1a;略BEGIN_MESSAGE_MAP(CTestShowTrayDlg, CDialogEx)//...ON_MESSAGE(WM_MY_TRAY_ICON, &CTestShowTrayDlg::OnMessag…...

AI绘画:StableDiffusion实操教程-斗破苍穹-云韵-婚服(附高清图下载)

大家好&#xff0c;我是小梦&#xff0c;最近一直研究AI绘画。 不久前&#xff0c;我与大家分享了StableDiffusion的全面教程&#xff1a;“AI绘画&#xff1a;Stable Diffusion 终极宝典&#xff1a;从入门到精通 ” 然而&#xff0c;仍有些读者提出&#xff0c;虽然他们已经…...

JS装饰器的介绍

装饰器的基本介绍 装饰器是一种特殊类型的声明&#xff0c;它能够被附加到类声明&#xff0c;方法&#xff0c;访问符&#xff0c;属性或参数上。 装饰器使用expression这种形式&#xff0c;expression求值后必须为一个函数&#xff0c;它会在运行时被调用&#xff0c;被装饰的…...

微信小程序(原生)使用Swiper实现(商品详情)视频和图片轮播(仿京东/淘宝商品详情头部视频+图片轮播)

一、需求 1、如果第一是视频&#xff0c;不进行自动轮播 2、可以手动滑动切换 3、点击播放视频&#xff0c;也可以手动滑动切换 4、视频播放完后&#xff0c;自动轮播 5、视频可以点击暂停和全屏播放二、最终效果 三、源码 播放icon使用了TDesign组件库 1、wxml <swiper c…...

关于for in 循环会遍历原型链上的属性的问题

关于for in 循环会遍历原型链上的属性的问题 for in可遍历原型链上扩展的属性&#xff0c;Object.keys() 只遍历自身属性 1.使用 for in 循环遍历对象的属性时&#xff0c;原型链上的所有属性都将被访问&#xff1a; Object.prototype.say"cgl"; // 修改Object.p…...

冠达管理:人民币升值板块个股?

人民币增值是当前热门的论题之一。面对这一趋势&#xff0c;许多投资者开端重视人民币增值板块个股的投资时机。可是&#xff0c;终究哪些职业和个股能够从人民币增值中获益&#xff1f;下面从多个视点分析这个问题。 一、出口相关职业 跟着人民币增值&#xff0c;我国的出口企…...

27.EI文章复现《高比例清洁能源接入下计及需求响应的配电网重构》

下载地址&#xff1a;高比例清洁能源接入下计及需求响应的配电网重构 1主要内容 该程序复现《高比例清洁能源接入下计及需求响应的配电网重构》&#xff0c;以考虑网损成本、弃风弃光成本和开关操作惩罚成本的综合成本最小为目标&#xff0c;针对配电网重构模型的非凸性&…...

mysql的索引结构

索引概述 索引&#xff08; index &#xff09;是帮助 MySQL 高效获取数据的数据结构 ( 有序 ) 。在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构&#xff0c;这些数据结构以某种方式引用&#xff08;指向&#xff09;数据&#xff0c; 这样就可以在这些…...

SMT生产中基板的机械清洁处理法有哪些

在S MT贴片加工 过程中&#xff0c;锡育和助焊剂会产生残留物质&#xff0c;残留物中包含有有机酸和可分解的电离子&#xff0c;某中有机酸狊 有腐蚀作用&#xff0c;电高子难留在焊盘还会引(起短路&#xff0c;而且这些残留物在PCBA板上是非常脏的&#xff0c;而旦不符合顾客…...

微服务面试题

一、什么是微服务 二、微服务之间是如何通讯的&#xff1f; 2.1、同步 优点&#xff1a;实时性 缺点&#xff1a;降低了可用性&#xff0c;因为客户端和服务端在请求过程中必须都是可用的 2.1.1、REST 优点&#xff1a;开发成本低&#xff0c;适应异构语言 2.1.2、RPC …...

LeetCode 1132.申请的报告2

数据准备 Create table If Not Exists Actions (user_id int, post_id int, action_date date, action ENUM(view, like, reaction, comment, report, share), extra varchar(10)); create table if not exists Removals (post_id int, remove_date date); Truncate table Act…...

室内探索无人机,解决复杂环境下的任务挑战!

前言 室内探索无人机是一种专为在室内环境中进行任务的无人机系统。相比传统的人员部署&#xff0c;室内探索无人机具有更高的灵活性和机动性&#xff0c;能够在复杂的室内环境中执行任务&#xff0c;用于未知环境的探索和特定目标的搜索。 为完成无人机室内搜索与识别等复杂…...

操作指南 | 如何参与Moonbeam投票委托

投票委托允许没有时间或者专业度一般的用户能够在治理中拥有话语权。该功能加强了决策流程&#xff0c;并且确保更大范围地代表社区利益。 通过Moonbeam委托平台&#xff0c;你需要 $GLMR 和一个相兼容的钱包。此教程使用MetaMask示范。 如何参与投票委托 前往http://delega…...

xxl-job中多节点分片的时候如何在linux服务器开启多个执行器实例?

在 xxl-job 中&#xff0c;可以通过在 Linux 服务器上启动多个执行器实例来实现分布式的分片任务处理。以下是在 Linux 服务器上开启多个执行器实例的步骤&#xff1a; 1.复制并配置多个执行器项目模块&#xff1a; 复制原始的执行器项目模块&#xff0c;并重命名为不同的名称…...

SAR ADC性能优化:电压基准设计与THD改善方案

1. 电压基准对SAR ADC性能的影响机制在精密数据采集系统设计中&#xff0c;工程师们常常花费大量精力选择高性能的模数转换器(ADC)和优化输入驱动电路&#xff0c;却容易忽视一个关键因素——电压基准的质量及其驱动能力。对于逐次逼近型(SAR)ADC而言&#xff0c;基准电压的稳定…...

无人机安全测试终极实战指南:3大攻击向量深度解析与防护策略

无人机安全测试终极实战指南&#xff1a;3大攻击向量深度解析与防护策略 【免费下载链接】Drone-Hacking-Tool Drone Hacking Tool is a GUI tool that works with a USB Wifi adapter and HackRF One for hacking drones. 项目地址: https://gitcode.com/gh_mirrors/dr/Dron…...

暖心指南|心理干预案例分享关键点!

行业痛点分析重庆市作为西部人口密集城市&#xff0c;心理健康问题呈现年轻化、复杂化趋势。调研数据显示&#xff0c;2022年全市心理健康机构年接诊量突破18万人次&#xff0c;但供需矛盾持续加剧。当前主要存在三方面挑战&#xff1a;临床诊断精度不足&#xff1a;传统评估依…...

对象变更记录objectlog工具

文章目录前言演示代码演示环境引入项目项目框架操作步骤设计介绍参考仓库前言 系统基于mybatis-plus, springboot环境 对于重要的一些数据&#xff0c;我们需要记录一条记录的所有版本变化过程&#xff0c;做到持续追踪&#xff0c;为后续问题追踪提供思路。下面展示预期效果(根…...

【研报 A109】2026年脑机接口产业化专题报告:首个侵入式产品获批,医保完成赋码

摘要&#xff1a;脑机接口行业正迎来产业化应用的关键元年&#xff0c;2026年行业正式从实验室研究走向规模化商业化落地&#xff0c;当前行业处于导入期尾端、爆发前夜&#xff0c;非侵入式与半侵入式路径已率先打通商业化通道&#xff0c;侵入式则处于临床验证阶段。政策端&a…...

从原理到实战:使用Kali Linux进行WiFi安全渗透测试

1. WiFi安全渗透测试基础 很多人可能觉得WiFi密码破解是个神秘的黑客技术&#xff0c;其实它只是网络安全领域中一个基础的安全测试手段。作为一名安全研究员&#xff0c;我经常需要在获得授权的情况下&#xff0c;对客户的无线网络进行安全评估。Kali Linux作为专业的渗透测试…...

C#上位机开发入门:手把手教你用PowerPMAC SDK实现第一个通讯Demo

C#上位机开发入门&#xff1a;从零构建PowerPMAC通讯Demo的实战指南 引言 当你第一次打开PowerPMAC开发套件时&#xff0c;面对密密麻麻的库文件和数百页的技术手册&#xff0c;是否感到无从下手&#xff1f;作为工业自动化领域的核心控制器&#xff0c;PowerPMAC与上位机的通讯…...

FPGA调试实录:我的SPI Master模块为什么读不到数据?常见问题排查指南

FPGA调试实录&#xff1a;SPI Master模块数据读取失败的深度排查指南 当你的SPI Master模块在调试过程中突然"罢工"&#xff0c;示波器上的波形看似正常却始终无法读取数据时&#xff0c;那种挫败感每个硬件工程师都深有体会。本文将从实战角度出发&#xff0c;分享一…...

JeecgBoot商业版源码深度解析:从下载到二次开发实战指南

1. JeecgBoot商业版源码获取与验证 作为一款企业级低代码开发平台&#xff0c;JeecgBoot商业版源码的获取需要特别注意官方渠道。与开源版不同&#xff0c;商业版通常需要联系官方商务获取授权文件和技术支持。我在实际项目中发现&#xff0c;很多团队容易混淆gitee上的开源仓库…...

5分钟在Mac上实现专业级无线直播:DistroAV NDI插件终极配置指南

5分钟在Mac上实现专业级无线直播&#xff1a;DistroAV NDI插件终极配置指南 【免费下载链接】obs-ndi DistroAV (formerly OBS-NDI): NDI integration for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-ndi 还在为Mac电脑上的多机位直播设置而烦恼吗&am…...