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

实验八 Linux虚拟内存 实验9.1:统计系统缺页次数成功案例

运行环境:

  1. VMware17.5.1 build-23298084
  2. Ubuntu 16.04LTS ubuntu版本下载地址
  3. Linux-4.16.10 linux历史版本下载地址
  4. 虚拟机配置:硬盘一般不少于40G就行

内核版本不同内核文件代码也有出入,版本差异性令c文件要修改,如若要在linux6.7.8运行,则

static struct file_operations my_fops = {

    .owner = THIS_MODULE,

    .open = my_proc_open,

    .release = single_release,

    .read = seq_read,

    .llseek = seq_lseek,

};

要修改成

static const struct proc_ops my_fops = {

    //.proc_owner = THIS_MODULE,

    .proc_open = my_proc_open,

    .proc_release = single_release,

    .proc_read = seq_read,

    .proc_lseek = seq_lseek,

};

同时Makefile文件也要进行修改Tab缩进等等。之前试图用VMware15.5、虚拟机配置两个双核CPU、内存10G、Ubuntu22版本与linux6.7.8编译,一直出现卡死。降级linux4.16.10提示客户机已禁用CPU,请关闭或重置客户机,多种方法尝试均无解。最后把VMware卸载重装、虚拟机配置调低才顺利编译。

是
之前内核文件按实验要求修改后,linux6.7.8成功编译的一次,但是insmod readpfcount.ko时卡死

遇到的问题:

  1. 断电重启导致vmdk文件损坏虚拟机无法打开 :解决办法参考Ubuntu意外断电vmdk损坏--打不开磁盘“***.vmdk”或它所依赖的某个快照磁盘。
  2. 提示客户机已禁用CPU,请关闭或重置客户机:各种方法试过都无效,我的办法是把虚拟机配置调低,重新新建一个虚拟机

  3. 解压缩、复制粘贴文件提示permission denied:解决方法参考解决Ubuntu系统移动或复制文件权限不够Ubuntu20.04系统下进行复制粘贴文件显示没有权限的解决办法

  4. sudo make完成后sudo make modules卡死:完成sudo make后先保存快照,然后卡死的话先等一会,如果等了较长时间直接重启,调整虚拟机内存等配置,恢复快照。

  5. 卸载旧VMware并安装另一个版本Vmware:VMware如何彻底卸载删除干净详细教程

有参考意义的文章:

  1. OS实验之玩转linux内核
  2. 高版本内核编译低版本内核全过程

附上readpfcount.c源码:

#include <linux/module.h>

#include <linux/sched.h>

#include <linux/uaccess.h>

#include <linux/proc_fs.h>

#include <linux/fs.h>

#include <linux/mm.h>

#include <linux/seq_file.h>

#include <linux/slab.h>

extern unsigned long pfcount;

static int my_proc_show(struct seq_file* m, void* v) {

    seq_printf(m, "The pfcount is %ld and jiffies is %ld!\n", pfcount,jiffies);

    return 0;

}

static int my_proc_open(struct inode* inode, struct file* file) {

    return single_open(file, my_proc_show, NULL);

}

static struct file_operations my_fops = {

    .owner = THIS_MODULE,

    .open = my_proc_open,

    .release = single_release,

    .read = seq_read,

    .llseek = seq_lseek,

};

static int __init my_init(void) {

    struct proc_dir_entry* file = proc_create("readpfcount",0x0644, NULL,&my_fops);

    if (!file) {

         printk("proc_create failed.\n");

         return -ENOMEM;

    }

    return 0;

}

static void __exit my_exit(void) {

    remove_proc_entry("readpfcount", NULL);

}

module_init(my_init);

module_exit(my_exit);

MODULE_LICENSE("GPL");

Makefile文件:

 ifneq ($(KERNELRELEASE),)
    obj-m := readpfcount.o
else
    KDIR := /lib/modules/$(shell uname -r)/build
    PWD := $(shell pwd)
    default:
                $(MAKE) -C $(KDIR) M=$(PWD) modules
    clean:
                $(MAKE) -C $(KDIR) M=$(PWD) clean
endif

相关文章:

实验八 Linux虚拟内存 实验9.1:统计系统缺页次数成功案例

运行环境&#xff1a; VMware17.5.1 build-23298084Ubuntu 16.04LTS ubuntu版本下载地址Linux-4.16.10 linux历史版本下载地址虚拟机配置&#xff1a;硬盘一般不少于40G就行 内核版本不同内核文件代码也有出入&#xff0c;版本差异性令c文件要修改&#xff0c;如若要在linux6.7…...

SD-WAN提升Microsoft 365用户体验

随着数字化时代的到来&#xff0c;SaaS应用如Microsoft 365已经成为各类企业的主流选择。在这一趋势下&#xff0c;企业需要以更加灵活、高效的方式使用Microsoft 365&#xff0c;以满足日益增长的业务需求。而传统的网络基础设施可能无法满足这一需求&#xff0c;因此&#xf…...

C#中的异步编程模型

在C#中&#xff0c;async和await关键字是用于异步编程的重要部分&#xff0c;它们允许你以同步代码的方式编写异步代码&#xff0c;从而提高应用程序的响应性和吞吐量。这种异步编程模型在I/O密集型操作&#xff08;如文件读写、网络请求等&#xff09;中特别有用&#xff0c;因…...

博通Broadcom (VMware VCP)注册约考下载证书操作手册

博通Broadcom(VMware) CertMetrics 注册约考下载证书等操作指导手册&#xff08;发布日期&#xff1a;2024-5-11&#xff09; 目录 一、原 Mylearn 账号在新平台的激活… 1 二、在新平台查看并下载证书… 5 三、在新平台注册博通账号… 6 四、在新平台下注册考试… 10 一、原…...

Xilinx FPGA底层逻辑资源简介(1):关于LC,CLB,SLICE,LUT,FF的概念

LC&#xff1a;Logic Cell 逻辑单元 Logic Cell是Xilinx定义的一种标准&#xff0c;用于定义不同系列器件的大小。对于7系列芯片&#xff0c;通常在名字中就已经体现了LC的大小&#xff0c;在UG474中原话为&#xff1a; 对于7a75t芯片&#xff0c;LC的大小为75K&#xff0c;6输…...

SSH(安全外壳协议)简介

一、引言 SSH&#xff08;Secure Shell&#xff09;是一种加密的网络传输协议&#xff0c;用于在不安全的网络中提供安全的远程登录和其他安全网络服务。SSH最初由芬兰程序员Tatu Ylnen开发&#xff0c;用于替代不安全的telnet、rlogin和rsh等远程登录协议。通过SSH&#xff0…...

JavaScript异步编程——08-Promise的链式调用【万字长文,感谢支持】

前言 实际开发中&#xff0c;我们经常需要先后请求多个接口&#xff1a;发送第一次网络请求后&#xff0c;等待请求结果&#xff1b;有结果后&#xff0c;然后发送第二次网络请求&#xff0c;等待请求结果&#xff1b;有结果后&#xff0c;然后发送第三次网络请求。以此类推。…...

现代制造之数控机床篇

现代制造 有现代技术支撑的制造业&#xff0c;即无论是制造还是服务行业&#xff0c;添了现代两个字不过是因为有了现代科学技术的支撑&#xff0c;如发达的通信方式&#xff0c;不断发展的互联网&#xff0c;信息化程度加强了&#xff0c;因此可以为这两个行业增加了不少优势…...

Rust的协程机制:原理与简单示例

在现代编程中&#xff0c;协程&#xff08;Coroutine&#xff09;已经成为实现高效并发的重要工具。Rust&#xff0c;作为一种内存安全的系统编程语言&#xff0c;也采用了协程作为其并发模型的一部分。本文将深入探讨Rust协程机制的实现原理&#xff0c;并通过一个简单的示例来…...

学习成长分享-以近红外光谱分析学习为例

随着国家研究生招生规模的扩大&#xff0c;参与或接触光谱分析方向的研究生日益增多&#xff0c;甚至有部分本科生的毕业设计也包含以近红外光谱分析内容。基于对近红外光谱分析的兴趣&#xff0c;从2018年开始在CSDN博客&#xff08;陆续更新自己学习的浅显认识&#xff0c;到…...

Linux makefile进度条

语法 在依赖方法前面加上就不会显示这一行的命令 注意 1.make 会在当前目录下找名为“makefile” 或者 “Makefile” 的文件 2.为了生成第一依赖文件&#xff0c;如果依赖文件列表有文件不存在&#xff0c;则会到下面的依赖关系中查找 3..PHONY修饰的依赖文件总是被执行的 …...

Ollama 可以设置的环境变量

Ollama 可以设置的环境变量 0. 引言1. Ollama 可以设置的环境变量 0. 引言 在Ollama的世界里&#xff0c;环境变量如同神秘的符文&#xff0c;它们是控制和定制这个强大工具的关键。通过精心设置这些环境变量&#xff0c;我们可以让Ollama更好地适应我们的需求&#xff0c;就像…...

基于Python+Django+MySQL实现Web版的增删改查

Python Web框架Django连接和操作MySQL数据库学生信息管理系统(SMS),主要包含对学生信息增删改查功能&#xff0c;旨在快速入门Python Web。 开发环境 开发工具&#xff1a;Pycharm 2020.1开发语言&#xff1a;Python 3.8.0Web框架&#xff1a;Django 3.0.6数据库&#xff1a;…...

Map、Set和Object的区别

Set ES6提供了新的数据结构Set&#xff0c;类似于数组&#xff0c;但成员值是唯一的&#xff0c;没有重复的值 Set本身是一个构造函数(要 new)&#xff0c;用来生成Set数据结构 Set 对象允许你储存任何类型的唯一值&#xff0c;无论是原始值或者是对象引用 每个值在 Set 中…...

Web 安全之盗链(Hotlinking)攻击详解

目录 什么是盗链 盗链原理 盗链类型 盗链的危害 如何发现盗链 盗链防范措施 法律法规与应对策略 小结 盗链&#xff08;Hotlinking&#xff09;攻击&#xff0c;作为互联网安全领域的一个重要话题&#xff0c;涉及到侵犯版权、滥用资源和网络安全等多个层面。盗链现象普…...

leetcode算法笔记-算法复杂度

对于时间复杂度&#xff0c;主要包括三种情况&#xff1a; 渐进紧确界&#xff1a; O渐进上界&#xff1a; 渐进下界&#xff1a; 加法原则&#xff1a;不同的时间复杂度相加取阶数最高的 乘法原则&#xff1a;不同的时间复杂度相乘&#xff0c;结果为时间复杂度的乘积 阶乘…...

推荐算法详解

文章目录 推荐算法引言基于内容的推荐原理算法步骤注意点可以优化的地方示例代码讲解 协同过滤推荐原理算法步骤注意点可以优化的地方示例代码讲解 混合推荐系统原理算法步骤注意点可以优化的地方示例1代码讲解1示例2代码讲解2 基于知识的推荐原理算法步骤注意点可以优化的地方…...

Java找不到包解决方案

在跟着教程写Spingboot后端项目时&#xff0c;为了加快效率&#xff0c;有时候有的实体文件可以直接粘贴到目录中&#xff0c;此时运行项目会出现Java找不到包的情况&#xff0c;即无法找到导入的实体文件&#xff0c;这是项目没有更新的原因。解决方法&#xff1a; 刷新Maven:…...

vue的css深度选择器 deep /deep/

作用及概念 当 <style> 标签有 scoped 属性时&#xff0c;它的 CSS 只作用于当前组件中的元素&#xff0c;父组件的样式将不会渗透到子组件。在vue中是这样描述的&#xff1a; 处于 scoped 样式中的选择器如果想要做更“深度”的选择&#xff0c;也即&#xff1a;影响到子…...

2024年华为OD机试真题-计算三叉搜索树的高度-(C++)-OD统一考试(C卷D卷)

题目描述: 定义构造三叉搜索树规则如下: 每个节点都存有一个数,当插入一个新的数时,从根节点向下寻找,直到找到一个合适的空节点插入。 查找的规则是: 1. 如果数小于节点的数减去500,则将数插入节点的左子树 2. 如果数大于节点的数加上500,则将…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

HTML前端开发:JavaScript 获取元素方法详解

作为前端开发者&#xff0c;高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法&#xff0c;分为两大系列&#xff1a; 一、getElementBy... 系列 传统方法&#xff0c;直接通过 DOM 接口访问&#xff0c;返回动态集合&#xff08;元素变化会实时更新&#xff09;。…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理

在城市的某个角落&#xff0c;一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延&#xff0c;滚滚浓烟弥漫开来&#xff0c;周围群众的生命财产安全受到严重威胁。就在这千钧一发之际&#xff0c;消防救援队伍迅速行动&#xff0c;而豪越科技消防一体化安全管控平台构建的消防“…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践

在 Kubernetes 集群中&#xff0c;如何在保障应用高可用的同时有效地管理资源&#xff0c;一直是运维人员和开发者关注的重点。随着微服务架构的普及&#xff0c;集群内各个服务的负载波动日趋明显&#xff0c;传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...