ramfs, rootfsinitramfs
什么是ramfs?
ramfs是一个非常简单的文件系统,它将Linux的磁盘缓存机制(页面缓存和dentry缓存)导出为一个动态可调整大小的基于ram的文件系统。
Linux通常将所有文件缓存在内存中。从后备存储(通常是挂载文件系统的块设备)读取的数据页被保留下来,以防再次需要,但标记为干净(可自由),以防虚拟内存系统需要内存做其他事情。类似地,写入文件的数据一旦写入后备存储,就会被标记为干净,但会保留下来用于缓存,直到VM重新分配内存。类似的机制(dentry缓存)大大加快了对目录的访问速度。
对于ramfs,没有后备存储。写入ramfs的文件像往常一样分配条目和页面缓存,但是没有地方可以写入它们。
这意味着页面永远不会被标记为干净的,因此当VM寻求回收内存时,它们无法被释放。
实现ramfs所需的代码量很少,因为所有的工作都是由现有的Linux缓存基础设施完成的。基本上,您将把磁盘缓存挂载为文件系统。正因为如此,ramfs不是一个可通过menuconfig删除的可选组件,因为节省的空间可以忽略不计。
ramfs and ramdisk
旧的“ramdisk”机制在ram区域之外创建一个合成块设备,并将其用作文件系统的后备存储。这个块设备的大小是固定的,因此挂载在它上面的文件系统的大小也是固定的。使用ram磁盘还需要不必要地将内存从假块设备复制到页面缓存中(并将更改复制回来),以及创建和销毁dentry。此外,它还需要一个文件系统驱动程序(比如ext2)来格式化和解释这些数据。
与ramfs相比,这浪费了内存(和内存总线带宽),为CPU创建了不必要的工作,并污染了CPU缓存。(有一些技巧可以通过玩弄页表来避免这种复制,但它们令人不快地复杂,而且结果证明和复制一样昂贵。)更重要的是,ramfs所做的所有工作都必须发生,因为所有文件访问都要经过页面和dentry缓存。RAM磁盘是完全不必要的;Ramfs在内部要简单得多。
ramdisk半过时的另一个原因是,环回设备的引入提供了一种更灵活、更方便的方式来创建合成块设备,现在是从文件而不是从内存块创建。
ramfs and tmpfs
ramfs的一个缺点是,您可以一直向它写入数据,直到填满所有内存,并且VM无法释放它,因为VM认为应该将文件写入后备存储(而不是交换空间),但是ramfs没有任何后备存储。因此,应该只允许root(或受信任的用户)对ramfs挂载进行写访问。
创建了一个名为tmpfs的ramfs衍生物,以增加大小限制,并能够将数据写入交换空间。可以允许普通用户对tmpfs挂载进行写访问。
什么是rootfs?
Rootfs是ramfs(或tmpfs,如果启用了的话)的一个特殊实例,它总是存在于2.6系统中。不能卸载rootfs的原因与不能终止init进程的原因大致相同;对于内核来说,不需要专门的代码来检查和处理空列表,只需要确保某些列表不会变为空,这样做更小、更简单。
大多数系统只是在rootfs上挂载另一个文件系统,并忽略它。ramfs的空实例占用的空间量很小。
如果启用了CONFIG_TMPFS, rootfs将默认使用tmpfs而不是ramfs。要强制使用ramfs,请在内核命令行中添加"rootfstype=ramfs"。
什么是initramfs?
initramfs是一个可以编译进内核的根文件映像,在Linux在启动init进程之前,用来准备系统,挂载真正的root文件系统.
所有2.6版本的Linux内核都包含一个gzip的“cpio”格式的存档文件,在内核启动时将其提取到rootfs中。在提取之后,内核检查rootfs是否包含一个文件“init”,如果是,它将其作为PID1执行。如果找到了,这个init进程负责将系统启动,包括定位和挂载真正的根设备(如果有的话)。如果在将嵌入的cpio归档文件提取到rootfs中后,它不包含init程序,那么内核将使用旧代码来定位和挂载根分区,然后从中执行/sbin/init的某些变体。
参考
相关文章:
ramfs, rootfsinitramfs
什么是ramfs? ramfs是一个非常简单的文件系统,它将Linux的磁盘缓存机制(页面缓存和dentry缓存)导出为一个动态可调整大小的基于ram的文件系统。 Linux通常将所有文件缓存在内存中。从后备存储(通常是挂载文件系统的块设备)读取的数据页被保留下来,以防…...
十三届蓝桥杯研究生组国赛-最大公约数(线段树+二分)
十三届蓝桥杯研究生组国赛-最大公约数 1、问题描述2、解题思路2.1 解法一:暴力查询区间gcd(75%)2.2 解法二:线段树+二分法(AC)1、问题描述 问题描述 给定一个数组, 每次操作可以选择数组中任意两个相邻的元素 x , y x,y x,y...
数据结构——二叉树层序遍历
数据结构——二叉树层序遍历 107. 二叉树的层序遍历 II199. 二叉树的右视图思路: 637. 二叉树的层平均值 107. 二叉树的层序遍历 II 107. 二叉树的层序遍历 II 给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节…...
【微机原理】8088/8086微处理器
目录 一、8088/8086的功能结构 1.总线接口部件(BIU) 2.执行部件(EU) 二、8088/8086的寄存器结构(14个) 溢出标志的概念 溢出和进位的区别 8086CPU是Intel系列的16位微处理器,他有16根数据…...
springboot第12集:DAO功能代码
在Spring Boot中,DAO是数据访问对象的缩写,它是一种设计模式用于提供对数据库操作的抽象层。通过使用DAO模式,我们可以将数据操作与业务逻辑分离,并提供一个单独的接口来执行所有的数据库操作。 在Spring Boot中,通常使…...
基于KZG多项式承诺方案的RLN
1. 引言 RLN——Rate-Limiting Nullifier为PSE团队主导的项目,源自: Barry White Hat 2019年博客 Semaphore RLN, rate limiting nullifier for spam prevention in anonymous p2p setting RLN(Rate-Limiting Nullifier)是一种…...
《站在巨人的肩膀上学习Java》
Java从诞生距今已经有28年了,在这段时间里,随着Java版本的不断迭代,Java新特性的不断出现,使得Java被使用的越来越广泛。在工程界Java语言一直是大家最喜欢的语言之一,Java一直排行在编程语言热门程度的前3名。 可想而…...
敏捷ACP.敏捷估计与规划.Mike Cohn.
第一部分 传统规划失败的原因 vs 敏捷规划有效的原因 传统的项目规划方式往往会让我们失望。要回答-一个 新产品的范围/进度/资源的组合问题,传统规划过程不一定会产生令人非常满意的答案和最终产品。以下- -些论据可以支持这个结论: ●大约2/3的项目会显著超…...
[创新工具和方法论]-01- DOE课程基础知识
文章目录 1.DOE实验设计的介绍1.1 什么是实验设计DOE?1.2 DOE的优势有哪些?1.3 如何开展DoE研究?步骤 2.DOE实验培训3.数据分析步骤4.实验的随机化5.偏差6.R方 相关系数假设检验 7.三因子二水平全因子设计 1.DOE实验设计的介绍 实验设计是一种安排实验和分析实验数…...
LeetCode-1033. 移动石子直到连续
题目链接 LeetCode-1033. 移动石子直到连续 题目描述 题解 题解一(Java) 作者:仲景 这题目挺难懂的,得画画图才能更好的理解 这也是LeetCode的尿性,习惯了,非得整这种别人看不懂的鸟语 你可以这样理解&a…...
JVM调优入门指南:掌握步骤、参数和场景
前言 作为Java开发者,我们经常需要优化应用的性能,其中JVM调优是非常重要的一部分。在本文中,我们将介绍JVM调优的一般步骤和方法,了解JVM调优参数,如堆大小、新生代比例、GC算法等参数的作用和配置方式,并…...
基于JSP+MySQL的跳蚤市场网站设计与开发
摘 要 在当今社会,网络信息已经不是什么很陌生的词汇,每天都在这个信息时代里生活着并且享受着它带来的与众不同。网络购物可以说是飞速发展的,这种购物方式逐渐的影响着人们的衣食住行。所以利用计算机实现 跳蚤市场网站设计与开发势在必行。本网站是一个校园的跳蚤市场网…...
内网穿透NPS和宝塔Nginx配合使用,开启SSL访问本地局域网网络
并非为了教学,仅供自己记录,方便下次用。所以内容不会刻意花时间写的很细节详细。 1. 服务器NPS配置 NPS install安装后,配置文件会在其他位置,通过是 /etc/nps/nps.conf目录。 找到进行修改,主要修改的是http_proxy_p…...
ToLua框架
ToLua 是一个用于在 Unity 中为 Lua 提供 C# 语言绑定的框架。通过 ToLua,你可以方便地将 C# 代码暴露给 Lua 脚本,并在 Lua 脚本中调用 C# 类、方法和属性。 更新流程 原理:使用AssetBundle进行资源的更新,而由于lua运行时才编…...
Golang-常见数据结构Map
Map map 是一种特殊的数据结构:一种元素对(pair)的无序集合,pair 的一个元素是 key,对应的另一个元素是 value,所以这个结构也称为关联数组或字典。这是一种快速寻找值的理想结构:给定 key&…...
基于空间矢量脉宽调制(SVPWM)的并网逆变器研究(Simulink)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
介绍tcpdump在centos中的使用方法
tcpdump是一款强大的命令行数据包分析器,支持多种过滤和抓包参数。下面将介绍tcpdump的常用抓包参数。当需要监控CentOS系统的网络流量或者进行网络故障排查时,可以使用tcpdump来捕获数据包并进行分析。 下面介绍在CentOS中使用tcpdump的方法࿱…...
机器学习实战:Python基于DT决策树模型进行分类预测(六)
文章目录 1 前言1.1 决策树的介绍1.2 决策树的应用 2 Scikit-learn数据集演示2.1 导入函数2.2 导入数据2.3 建模2.4 评估模型2.5 可视化决策树2.6 优化模型2.7 可视化优化模型 3 讨论 1 前言 1.1 决策树的介绍 决策树(Decision Tree,DT)是一…...
操作系统之进程同异步、互斥
引入 异步性是指,各并发执行的进程以各自独立的、不可预知的速度向前推进。 但是在一定的条件之下,需要进程按照一定的顺序去执行相关进程: 举例说明1: 举例说明2: 读进程和写进程并发地运行,由于并发必然导致异步性…...
你了解这2类神经性皮炎吗?常常预示着这5类疾病!
神经性皮炎属于慢性皮肤病,患者皮肤可出现局限性苔藓样变,同时伴有阵发性瘙痒。神经性皮炎易发生在颈部两侧和四肢伸侧,中年人是高发人群。到目前为止神经性皮炎病因还并不是很明确,不过一部分病人发病前常常出现精神神经方面异常…...
二叉搜索树【Java】
文章目录 二叉搜索树的性质二叉搜索树的操作遍历查找插入删除 二叉搜索树又称为二叉排序树,是一种具有一定性质的特殊的二叉树; 二叉搜索树的性质 若它的左子树不为空,则左子树上结点的值均小于根节点的值; 若它的右子树不为空&a…...
二叉树的遍历方式
文章目录 层序遍历——队列实现分析Java完整代码 先序遍历——中左右分析递归实现非递归实现——栈实现 中序遍历——左中右递归实现非递归实现——栈实现 后续遍历——左右中递归实现非递归实现——栈加标志指针实现 总结 层序遍历——队列实现 给你二叉树的根节点 root &…...
SpringCloud01
SpringCloud01 微服务入门案例 实现步骤 导入数据 实现远程调用 MapperScan("cn.itcast.order.mapper") SpringBootApplication public class OrderApplication {public static void main(String[] args) {SpringApplication.run(OrderApplication.class, args);}…...
SpringBoot整合Redis实现点赞、收藏功能
前言 点赞、收藏功能作为常见的社交功能,是众多Web应用中必不可少的功能之一。而redis作为一个基于内存的高性能key-value存储数据库,可以用来实现这些功能。 本文将介绍如何使用spring boot整合redis实现点赞、收藏功能,并提供前后端页面的…...
【Java入门合集】第一章Java概述
【Java入门合集】第一章Java概述 博主:命运之光 专栏:JAVA入门 学习目标 1.理解JVM、JRE、JDK的概念; 2.掌握Java开发环境的搭建,环境变量的配置; 3.掌握Java程序的编写、编译和运行; 4.学会编写第一个Java程序&#x…...
Android无线调试操作说明
1.首先通过手机机蓝牙将jackpal.androidterm-1.0.70.apk(终端模拟器)传的设备上安装 链接: https://pan.baidu.com/s/151SzEgsX0b_VTWowzfUrsA?pwdrn75 提取码: rn75 复制这段内容后打开百度网盘手机App,操作更方便哦 2.打开这个终端模拟器,输入以下命…...
什么是 Python ?聊一聊Python程序员找工作的六大技巧
最近我一直在思考换工作的事情。因此,这段时间我会看一些题目,看一些与面试相关的内容,以便更好地准备面试。我认为无论你处于什么阶段,面试中都会有技术面试环节。无论是初级职位还是高级职位,都需要通过技术面试来检…...
RabbitMQ 01 概述
什么是消息队列 进行大量的远程调用时,传统的Http方式容易造成阻塞,所以引入了消息队列的概念,即让消息排队,按照队列进行消费。 它能够将发送方发送的信息放入队列中,当新的消息入队时,会通知接收方进行处…...
面经|曹操出行供需策略运营
1.自我介绍 面试官表示看了简历之后,表示对专业能力比较放心。想了解下对于专业能力之外,关于其他方面的介绍。 2.策略运营,除了工具之外,还有哪些能力是需要具备的 回答:主要是从做项目的维度逻辑先去回答的。 分析思…...
【Python】selenium工具
目录 1. 安装 2. 测试 3. 无头浏览器 4. 元素定位 5. 页面滑动 6. 按键、填写登录表单 7. 页面切换 Selenium是Web的自动化测试工具,为网站自动化测试而开发,Selenium可以直接运行在浏览器上,它支持所有主流的浏览器,可以接…...
徐州做网站的培训机构/职业技能培训
忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2022-12-29 ❤️❤️ 本篇更新记录 2022-12-29 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请…...
哈尔滨建设网站制作/nba最新排名东西部
BIM Revit2018软件安装教程 Revit 2018/64位下载地址: pan.baidu.com/s/1fWDJvUcoWKIBB73ddgKG4A 密码:6wdg 安装中有问题咨询管家私人微信:1196586501 微信公众号:性感的小君君 安装教程 1.选中软件压缩包,鼠标右击选择解压…...
建网站做seo/白帽seo
题目要求 将位置m的链接列表反转到n。 用一次通过遍历。 注意:1≤m≤n≤列表长度。 解题思路 有了反转链表的基础 解答leetcode 206. Reverse Linked List (翻转一个链表) 【剑指offer】 面试题24 翻转链表我们很容易对一个链表进行翻转的操作,那么如…...
全国公共资源交易中心官网/seo专业课程
本文实例讲述了Python实现多条件筛选目标数据功能。分享给大家供大家参考,具体如下: python中提供了一些数据过滤功能,可以使用内建函数,也可以使用循环语句来判断,或者使用pandas库,当然在有些情况下使用p…...
wordpress百家号插件/长沙建站seo公司
7、此时,设备类型我们选择“TCP/IP 设备”,主机名或 IP 地址我们输入 Windows XP 系统的电脑的 IP 地址,然后选择“下一步”。最后,系统就会自动查找局域网中 IP 地址为你填入的 IP 的电脑是否连接有共享的打印机,如果…...
企业为什么做平台网站/网站优化 福州
MongoDB数据导出MongoDB提供了mongoexport工具以支持将数据表进行导出。mongoexport:mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出的数据项,也可以根据指定的条件导出数据。具体用法所示:./mong…...