【操作系统】探究文件系统奥秘:创建proc文件系统的解密与实战

🌈个人主页:Sarapines Programmer
🔥 系列专栏:Linux专栏:《探秘Linux | 操作系统解密》
⏰诗赋清音:月悬苍穹泛清辉,梦随星河徜徉辉。情牵天际云千层,志立乘风意自飞。

目录

🌌1 初识Linux OS

🌌2 创建proc文件系统

🌍2.1 研究目的

🌍2.2 研究内容

🌍2.3 研究步骤

🌍2.4 研究过程

🌍2.5 研究心得

📝总结


🌌1 初识Linux OS

Linux是一种开源的Unix-like操作系统内核,它是基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。Linux内核最初是由芬兰程序员Linus Torvalds在1991年创建的,之后成为自由软件和开源社区的一个主要项目。

以下是Linux操作系统的一些主要特点和组成部分:

  1. 内核(Kernel): Linux内核是操作系统的核心,它管理系统资源,如处理器、内存、设备驱动程序等。Linus Torvalds最初编写了Linux内核,它是Linux操作系统的基础。

  2. Shell(命令解释器): Linux操作系统使用命令行界面(CLI),用户与系统交互通过Shell。用户可以通过输入命令执行各种任务,管理文件、进程、权限等。常见的Shell包括Bash(Bourne Again SHell)和Zsh。

  3. 文件系统: Linux支持多种文件系统,包括Ext4、XFS、Btrfs等。文件系统负责管理存储设备上的文件和目录,以及文件的权限、所有权等信息。

  4. 用户界面: 虽然Linux以CLI为主,但也支持图形用户界面(GUI)。常见的Linux桌面环境有GNOME、KDE、XFCE等,它们提供了直观的用户体验。

  5. 软件包管理系统: 大多数Linux发行版都有自己的软件包管理系统,用于安装、更新和删除软件。常见的包管理工具有APT(Debian/Ubuntu)、YUM(Red Hat/CentOS)、Pacman(Arch Linux)等。

  6. 网络功能: Linux具有强大的网络功能,支持各种网络协议和服务。它可以作为服务器运行各种网络服务,如Web服务器(Apache、Nginx)、邮件服务器(Postfix、Sendmail)、文件服务器(Samba)等。

  7. 多用户和多任务: Linux是一个多用户系统,多个用户可以同时访问同一台机器。它也是一个多任务系统,可以同时运行多个进程。

  8. 安全性: Linux以安全性而闻名,系统管理员可以设置用户权限、访问控制列表(ACLs)等来确保系统的安全性。

  9. 开源和自由: Linux是开源软件,其源代码可以被任何人查看、修改和分发。大多数Linux发行版是免费提供的,用户可以自由选择、使用和分发。

  10. 发行版(Distribution): 由于Linux内核是开源的,不同的组织和社区创建了各种Linux发行版,例如Ubuntu、Debian、Fedora、CentOS、Arch Linux等。每个发行版都有自己的特点和包管理系统。

总体而言,Linux操作系统是一个强大、灵活且可定制的操作系统,广泛应用于服务器、嵌入式系统、超级计算机等各种领域。


🌌2 创建proc文件系统

🌍2.1 研究目的

  1. 系统状态监控: 创建proc文件系统的一个研究目的是实现系统状态的监控。proc文件系统提供了一个在运行时访问内核信息的接口,通过读取proc文件系统中的特定文件,可以获取系统各种状态的实时数据,如内存使用情况、CPU占用率、进程信息等。这有助于系统管理员或开发人员实时监测系统性能,及时发现和解决潜在问题。

  2. 性能调优与分析: proc文件系统为进行系统性能调优和分析提供了丰富的数据源。通过加载内核模块创建proc文件系统,可以收集更多关于系统运行状况的信息。这些信息有助于深入了解系统各个方面的性能瓶颈,从而进行有针对性的优化,提高系统的响应速度和资源利用率。

  3. 定制化系统监视工具: 通过创建proc文件系统,可以为系统监视工具提供定制化的数据接口。这样的接口可以根据具体需求提供特定的信息,而不需要访问复杂的内核数据结构。系统管理员或开发者可以基于这些数据构建自己的监控工具,更好地满足其特定的监视需求。

  4. 教学和研究用途: 创建proc文件系统还有助于教学和研究。通过实践创建proc文件系统,研究人员和学生可以深入理解Linux内核的工作原理,了解内核模块的加载过程,并通过操作proc文件系统中的文件了解系统内部运行机制。这对于操作系统课程、系统编程课程以及内核研究具有教育和研究意义。


🌍2.2 研究内容

  1. proc文件系统基础理解: 研究proc文件系统的基本概念,了解它是如何在内核中实现的以及它提供了哪些功能。理解proc文件系统是一个伪文件系统,它提供了一个与内核数据交互的接口,通过在/proc目录下的文件和子目录来表示系统和进程的信息。包括对关键文件如/proc/cpuinfo、/proc/meminfo等的解析和使用。

  2. 创建和管理proc文件系统的接口: 研究如何在操作系统中创建和管理proc文件系统。这可能涉及到内核模块的编写,以实现新的/proc文件或目录,其中包含特定的信息。了解如何注册和注销这些文件,以及与其相关联的回调函数,以确保文件系统在运行时能够正确地响应对这些文件的访问。

  3. 自定义proc文件系统的应用: 研究如何使用proc文件系统为特定的目的自定义信息。这可能包括创建用于监视和调试的文件,提供有关系统性能、硬件信息或其他关键数据的实时信息。理解如何将自定义信息集成到proc文件系统中,以便用户和系统工具能够轻松地访问这些信息。


🌍2.3 研究步骤

1.输入vi /proc/meminfo查看文件内容.

2.输入cat /proc/version查看当前Linux内核的版本号.

3.挂载U盘.

4.输入cp proc_test.c /root将U盘的proc_test.c拷贝到root目录下.

5.输入umount /dev/sdb1退出U盘.

6.输入gcc -c -I/usr/src/linux-2.4.20-8/include proc_test.c编译.并输入ls查看是否编译成功.

6.输入insmod proc_test.o加载模块.并使用lsmod验证加载成功.

7.输入cd /proc/proc_test进入该目录,显示三个文件分别是current,current_too和hello.

8.查看上述三文件内容.

9.输入rmmod proc_test卸载该模块.

10.改写proc_test文件重新挂载U盘并使用cp将改写的test8_xxx.c文件放置root目录.

11.编译并查看是否出现test8_xxx.o文件.

12.输入insmod挂载该文件,使用lsmod检查查看.

13.进入/proc/proc_test目录查看四个文件信息,此时多了xxx_test.

14.进入xxx_test输入ls查看下辖文件信息,发现也有三个文件.


🌍2.4 研究过程

读出当前内存的使用情况

查看linux内核版本

插入U盘

取消挂载

输入”more current”、”more current_too”查看文件内容


🌍2.5 研究心得

  1. 理解proc文件系统的核心概念: 在课程设计中,我深入研究了proc文件系统的概念,认识到它是一种在用户态检查内核状态的机制。特别是/proc/meminfo这类文件不是磁盘文件,而是一种特殊的文件,只有在用户读取时才准备好相关内容。这为我提供了深入了解操作系统内核状态的途径。

  2. 解决版本号不匹配的问题: 在实际操作中,我遇到了编译版本号不匹配的困扰。通过课程设计,我学到了一种更便捷的解决方案,即在编译时重新指定内核版本号进行编译。这一洞察不仅解决了版本号不对的问题,还省去了每次重启都需要重新编译的麻烦,提高了工作效率。

  3. 应用知识解读和处理问题: 通过本次研究,我不仅学到了理论知识,还学会了将知识应用于实际问题的解决。例如,对于版本号不匹配的情况,我能够灵活运用所学的知识,采取有效的解决方法。这锻炼了我在实际工作中分析问题、提出解决方案的能力,为今后的操作系统开发和维护工作打下了坚实的基础。


📝总结

Linux操作系统的领域就像一片未被勘探的信息大海,引领你勇敢踏入开源系统的神秘领域。这是一场独特的学习冒险,从基本概念到系统架构,逐步揭示更深层次的操作系统原理、命令行工具和高级系统管理的奥秘。

渴望挑战Linux操作系统的学习路径和掌握系统管理技术?不妨点击下方链接,一同探讨更多Linux操作系统的奇迹吧。我们推出了引领趋势的💻 Linux专栏:《探秘Linux | 操作系统解密》,旨在深度探索Linux的实际应用和创新。🌐🔍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/225631.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

web前端项目-七彩夜空烟花【附源码】

web前端项目-七彩动态夜空烟花【附源码】 本项目仅使用了HTML,代码简单,实现效果绚丽,且本项目代码直接运行即可实现,无需图片素材,接下来让我们一起实现一场美丽的烟花秀叭 运行效果:鼠标点击和移动可控制…

tamarin manual总结笔记5(使用流程的模型规格)

使用流程的模型规格 在本节中,我们提供了一个非正式的描述过程演算现在集成在Tamarin。它被称为SAPIC,即“状态应用PI-Calculus”。该模型的全部细节可以在(Kremer and k nnemann 2016)和(Backes et al 2017)中找到。 可以根据规则或作为(单个)流程对协…

云计算:现代技术的基本要素

众所周知,在儿童教育的早期阶段,幼儿园都会传授塑造未来行为的一些基本准则。 今天,我们可以以类似的方式思考云计算:它已成为现代技术架构中的基本元素。云现在在数字交互、安全和基础设施开发中发挥着关键作用。云不仅仅是另一…

C#教程(四):多态

1、介绍 1.1 什么是多态 在C#中,多态性(Polymorphism)是面向对象编程中的一个重要概念,它允许不同类的对象对同一消息做出响应,即同一个方法可以在不同的对象上产生不同的行为。C#中的多态性可以通过以下几种方式实现…

Java API 操作Docker浅谈

背景: 使用com.github.docker-java库可以很方便地在Java中操作Docker。下面是一个详细的教程,包括创建镜像、创建容器、启动容器、停止容器和删除容器的步骤以及每一步的说明。 前提: 首先,在你的Java项目中添加com.github.doc…

ARM 汇编语言知识积累

博文参考: arm中SP,LR,PC寄存器以及其它所有寄存器以及处理器运行模式介绍 arm平台根据栈进行backtrace的方法-腾讯云开发者社区-腾讯云 (tencent.com) 特殊功能寄存器: SP: 即 R13,栈指针,…

渗透测试——1.4主动扫描

主动扫描是别人可以发觉的情报收集 一、nmap的使用 1.nmap<目标主机>:最常用的扫描方式 有nmap版本、扫描时间 “host is up”表示目标主机处于开机状态、“not shown”未开放端口 有四个端口是开的&#xff08;135.139.445.912&#xff09; 2.nmap -p<端口范围…

NET中使用Identity+CodeFirst+Jwt实现登录、鉴权

目录 前言 一、创建上下文类 1.自定义MyContext上下文类继承IdentityDbContext 2.在Program中添加AddDbContext服务 二、使用Migration数据迁移 1.在控制台中 依次使用add-migration 、updatebase 命令 2.如何修改表名 3.如何自定义字段 三、使用Identity实现登录、修改密码 …

【JAVA】黑马MybatisPlus 学习笔记【终】【插件功能】

4.插件功能 MybatisPlus提供了很多的插件功能&#xff0c;进一步拓展其功能。目前已有的插件有&#xff1a; PaginationInnerInterceptor&#xff1a;自动分页TenantLineInnerInterceptor&#xff1a;多租户DynamicTableNameInnerInterceptor&#xff1a;动态表名OptimisticL…

【小白专用】C# 压缩文件 ICSharpCode.SharpZipLib.dll效果:

插件描述&#xff1a; ICSharpCode.SharpZipLib.dll 是一个完全由c#编写的Zip, GZip、Tar 、 BZip2 类库,可以方便地支持这几种格式的压缩解压缩, SharpZipLib 的许可是经过修改的GPL&#xff0c;底线是允许用在不开源商业软件中&#xff0c;意思就是免费使用。具体可访问ICSha…

12月25日作业

串口发送控制命令&#xff0c;实现一些外设LED 风扇 uart4.c #include "uart4.h"void uart4_config() {//1.使能GPIOB\GPIOG\UART4外设时钟RCC->MP_AHB4ENSETR | (0x1 << 1);RCC->MP_AHB4ENSETR | (0x1 << 6);RCC->MP_APB1ENSETR | (0x1 <…

关于Windows 10防火墙的设置,看这篇文章就够用了

Windows 10防火墙是一个强大的安全系统,易于设置和配置。以下是如何使用它来阻止网络访问并为应用程序、服务器和端口创建异常。 当你登录到企业域时,你将使用整个系统验证你的凭据,包括现有的任何防火墙。这一基本原则也适用于登录家庭网络的个人,你授予自己使用网络和通…

手机无人直播:解放直播的新方式

现如今&#xff0c;随着科技的迅猛发展&#xff0c;手机已经成为我们生活中不可或缺的一部分。除了通讯、娱乐等功能外&#xff0c;手机还能够通过直播功能将我们的生活实时分享给他人。而针对传统的直播方式&#xff0c;使用手机进行无人直播成为了一种全新的选择。 手机无人…

[c]扫雷

题目描述 扫雷游戏是一款十分经典的单机小游戏。在n行m列的雷区中有一些格子含有地雷&#xff08;称之为地雷格&#xff09;&#xff0c;其他格子不含地雷&#xff08;称之为非地雷格&#xff09;。 玩家翻开一个非地雷格时&#xff0c;该格将会出现一个数字——提示周围格子中…

利用Milvus Cloud和LangChain构建机器人:一种引人入胜且通俗易懂的方法

一、引言 机器人已经深入我们的日常生活&#xff0c;从家庭服务到工业生产&#xff0c;再到医疗和运输等领域。然而&#xff0c;这些机器人往往需要复杂的算法和数据处理技术才能有效地执行任务。在这个过程中&#xff0c;人工智能&#xff08;AI&#xff09;和机器学习&#…

往年面试精选题目(前50道)

常用的集合和区别&#xff0c;list和set区别 Map&#xff1a;key-value键值对&#xff0c;常见的有&#xff1a;HashMap、Hashtable、ConcurrentHashMap以及TreeMap等。Map不能包含重复的key&#xff0c;但是可以包含相同的value。 Set&#xff1a;不包含重复元素的集合&#…

VMware之FTP的简介以及搭建计算机端口的介绍

目录 一.FTP的简介 1.1 FTP的作用 二.FTP的搭建 2.1 建立组和用户 2.2 添加角色和功能 2.3 用户绑定组 2.4 配置FTP服务器 2.5 授权 2.5 连接测试 三.计算机端口介绍 3.1 端口分类&#xff1a; 3.2 常见的计算机端口及其用途&#xff1a; 四.附图-思维…

promise的使用和实例方法

前言 异步,是任何编程都无法回避的话题。在promise出现之前,js中也有处理异步的方案,不过还没有专门的api能去处理链式的异步操作。所以,当大量的异步任务逐个执行,就变成了传说中的回调地狱。 function asyncFn(fn1, fn2, fn3) {setTimeout(() > {//处理第一个异步任务fn1…

uniapp 添加分包页面,配置分包预下载

为什么要分包 ? 分包即将小程序代码分成多个部分打包&#xff0c;可以减少小程序的加载时间&#xff0c;提升用户体验 添加分包页面 比较便捷的方法是使用vscode插件 uni-create-view 新建分包文件夹 以在我的页面&#xff0c;添加分包的设置页面为例&#xff0c;新建文件夹 s…

【文本处理】正则表达式

一、简介 正则表达式&#xff0c;又称规则表达式,&#xff08;Regular Expression&#xff0c;在代码中常简写为regex、regexp或RE&#xff09;&#xff0c;是一种文本模式&#xff0c;包括普通字符&#xff08;例如&#xff0c;a 到 z 之间的字母&#xff09;和特殊字符&…