计算机存储设备

缓存为啥比内存快

内存使用 DRAM 来存储数据的、也就是动态随机存储器。内部使用 MOS 和一个电容来存储。

需要不停地给它刷新、保持它的状态、要是不刷新、数据就丢掉了、所以叫动态 、DRAM

缓存使用 SRAM 来存储数据、使用多个晶体管(比如6个)就是为了存储1比特

内存编码

内存控制器:作为 CPU 和 内存的中介、为两位提供服务。

CPU 给内存存储空间统一编址、以字节为单位、然后要读取数据的时候直接把地址交给内存控制器、然后内存控制器再映射成内存的哪个芯片哪个分片哪些位置。

后面将这个内存控制器直接集成到 CPU 内部了

NUMA

Non Uniform Memory Access 非一致性内存访问

16 个车间拆分位两部分,成为两个 CPU、组成两个 NUMA 节点。每个 cpu 里面有 8 个核心。

每个节点直接连接一部分内存、两个节点之间有专门的inter-connect(内连接)通道。

各个节点访问自己管理的内存叫作本地访问 Local Access,通过 inter-connect 通道反问其他节点管理的内存叫作远程访问 remote Access。很显然、前者的访问速度要比后者快很多。

操作系统对此的支持

首先是缓存的问题、操作系统的进程和线程调度管理部门需要尽量不要跨 NUMA 节点调度线程、不然都话、缓存都失效了。

还有就是内存亲和性的问题、线程在哪个 NUMA 节点内执行、就把内存分配到那个节点直接连接的内存中、避免跨节点内存访问。

NUMA 节点和物理 CPU 并不是意义对应的、实际情况可能会更复杂

机械硬盘

金属磁粒

磁道、磁头、每个扇区固定存储 512 字节

机械硬盘每次读写都是以扇区作为单位、即使你只想读取一字节、也得把我所在的整个扇区一起读取出去。

操作系统把几个连续的扇区当作一个整体、叫作块、读写都是以块为单位进行的。

最常见的是以 8 个扇区构成的块、也就是4096字节。4kb

块位图

为了知道哪些块是空着的、哪些块是已经使用的、文件系统使用位图进行记录、0表示空闲、1表示占用。

位图放在专门的块中、比如放在第一个块中。

inode

每个文件都有一个 inode 对象

inode 对象中包含文件的大小、所在块的位置、权限、时间等数据、只要拿到 inode 数据就能找到文件了。

inode 对象存在哪?

inode 表、每个 inode 对象都是 128 字节、整整齐齐的列在表格中、每个 inode 对象都哟一个号码、拿着 inode 号码就能查找到 inode 对象、进而找到文件。

那怎么知道 inode 表哪些是空闲的哪些是已经使用了的?

inode 位图块

在这里插入图片描述

目录

有个表格、记录的是文件名和 inode 号的映射关系

可以使用单独一个文件来存储这个表格、并把它叫作目录、里面的每一项都是一个目录项、目录文件里面记录的内容就是属于这个目录下的所有文件、通过这个目录项就能将文件名翻译成 inode 号

如何找到根目录文件?

把它放到 inode 表格开头固定的位置

描述符

inode 对象的大小是 128字节、一个块的大小是 4096、那么可以存放 32 个 inode 对象、但是一个硬盘怎么可能只有 32 个对象

所以只用一个块来做 inode 表肯定不够的、要有多个才行、既然多个、那么就要把它的位置信息记录下来、

那就再拿一个块来记录这些信息吧、叫做描述符、顺便把位图块、inode 位图块的位置信息记录下来。

超级块

一个块才 4k 用它来充当块位图、最多能表示 8 x *4096 = 32768 个数据块、也即是 32768 *x 4k = 128M

硬盘空间肯定会比这个大的。

那就将硬盘空间进行分组、每个块组就是 128M

但是分成多个块组之后、又有一个新的问题、如果想知道所有块组总共使用了多少块、剩余多少块、怎么去统计?

一个个块组去遍历吗?干脆再拿一个块来记录这些全局信息、那就叫它超级块、放在第一个块组的最前面。

这样子之后、一个完整的文件系统存储格局就出来了

引导块、分区DBR 和 MBR

一个硬盘可以有多个分区、每个分区都可以使用不同的文件系统、所以上面所说的规则、只对硬盘的某个分区有效的。

每个分区的开头、需要一个启动扇区 DBR 安装操作系统的时候、引导程序久被写到这里、所以还需要在分区的最前面准备一个引导块。

最后还要找个地方将所有的分区信息记录起来、它位于硬盘的第一个扇区、同时还肩负着引导操作系统的重要使命、它的名字叫主引导记录 – MBR

上面这个文件系统叫做 ext2

https://book.douban.com/subject/36428782/

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

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

相关文章

Element-UI el-table属性row-class-name用法

文章目录 前言官方示例自定义条件样式设置背景颜色样式stripe属性 设置背景颜色样式设置字体颜色总结 前言 可以通过指定 Table 组件的 row-class-name 属性来为 Table 中的某一行添加 class&#xff0c;表明该行处于某种状态。 官方示例 代码如下&#xff1a; <el-table…

直播美颜SDK与智能美妆:技术融合的未来

对于许多直播主和观众来说&#xff0c;如何在直播中呈现最佳的外貌成为了一个重要问题。为了解决这个问题&#xff0c;直播美颜SDK与智能美妆技术的融合应运而生&#xff0c;为用户带来了前所未有的美妆体验。 简单来讲&#xff0c;直播美颜SDK可以理解为计算机视觉技术和人工…

重磅预告丨Fortinet Demo Day系列实战攻防演练来袭!

随着网络安全形势的日趋严峻&#xff0c;越来越多的企业遭受了勒索、欺诈等危害。在高昂的赎金、生产损失&#xff0c;以及名誉损害的恐惧中&#xff0c;企业已经谈“黑”色变。黑客是如何悄无声息的“越过”重重高墙、道道壁垒进入到生产环境、办公空间&#xff0c;并在内网疯…

hydra详解(仅供学习参考)

一、概述。 Hydra是一款非常强大的渗透工具&#xff0c;由著名的黑客组织THC开发的一款开源工具。 二、使用方法。 hybra基础语法&#xff1a; hydra 参数 IP 服务 参数&#xff1a; -l login 小写&#xff0c;指定用户名进行破解 -L file 大写&#xff0c;指定用户的用户名…

loki技巧 - 结构化log日志文本

将非结构化的log日志信息结构化为JSON格式&#xff0c;以方便在Grafana界面侧的浏览和查询。 0. 目录 1. 需求背景和描述2. 实现&#xff08;Promtail侧&#xff09;3. 注意事项4. 后记5. 参考 1. 需求背景和描述 最近几个月&#xff0c;部门内部开始尝试统一日志收集、查询统…

Zotero翻译插件“zotero pdf translate”——使用时出现广告的问题的解决办法

一、背景&#xff1a; 在Zotero上安装了“zotero-pdf-translate”插件来辅助翻译。今天忽然发现&#xff0c;在使用CNKI翻译引擎的时候&#xff0c;末尾被加上了广告&#xff1a; (查看名企职位领高薪offer&#xff01;--->智联招聘https***dict.cnki.net/ad.html) 如下&…

Netty网络编程

参考文档 https://zhuanlan.zhihu.com/p/550956053 https://zhuanlan.zhihu.com/p/514448867 BIO 读取数据有两个阶段 等待数据就绪&#xff0c;数据到达内核缓冲区读取数据(系统调用)&#xff0c;从内核缓冲区&#xff0c;拷贝至用户缓冲区 BIO两个阶段都会阻塞 BIO编程时&…

分布式数据库HBase,它到底是怎么组成的?

原文链接&#xff1a;http://www.ibearzmblog.com/#/technology/info?id3f432a2451f5f9cb9a14d6e756036b67 前言 大数据的核心问题无非就是存储和计算这两个。Hadoop中的HDFS解决了数据存储的问题&#xff0c;而HBase就是在HDFS上构建&#xff0c;因此Hbase既能解决大数据存…

青岛大学_王卓老师【数据结构与算法】Week05_11_栈与递归_学习笔记

本文是个人学习笔记&#xff0c;素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享&#xff0c; 另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权&#xff0c;请留言作删文处理。 课程视频链接&#xff1a; 数据结构与算法基础…

[sqoop]导入数据

一、覆盖导入 例如维度表&#xff0c;每次导入的数据需要覆盖上次导入的数据。 hive-overwrite参数&#xff1a;实现覆盖导入 hive-import参数&#xff1a;表示向hive表导入 hive-table参数&#xff1a;指定目标hive库表 sqoop import \ --connect jdbc:mysql://hadoop1:3…

哈希表的原理

哈希概念 线性表、树结构的查找方式都是以关键字的比较为基础&#xff0c;查找效率比较低&#xff0c;顺序表的时间复杂度是O&#xff08;n&#xff09;&#xff0c;平衡树中为树的高度&#xff0c;即O&#xff08;logn&#xff09;&#xff0c;搜素的效率取决于搜索过程的元素…

Spring-Interceptor拦截器

使用步骤 申明拦截器bean&#xff0c;并实现HandlerInterceptor接口 true为放行&#xff0c;false为拦截 2.定义配置类&#xff0c;继承WebMvcConfigurationSupport&#xff0c;实现addInterceptors方法&#xff0c;该方法调用具体的拦截器进行拦截 也可以在配子类通过实现W…

【Elasticsearch】DSL查询文档

目录 1.DSL查询文档 1.1.DSL查询分类 1.2.全文检索查询 1.2.1.使用场景 1.2.2.基本语法 1.2.3.示例 1.2.4.总结 1.3.精准查询 1.3.1.term查询 1.3.2.range查询 1.3.3.总结 1.4.地理坐标查询 1.4.1.矩形范围查询 1.4.2.附近查询 1.5.复合查询 1.5.1.相关性算分 …

Set与Map的使用 + 二叉搜索树与哈希桶的大白话讲解和图解+完整代码实现(详细注释)

文章目录 前言一、Set与Map概念及场景模型纯Key模型Key-Value模型 Map 的使用Set 的使用 二、二叉搜索树什么是二叉搜索树代码实现二叉搜索树查找操作插入操作删除操作(难点)cur这个节点没有左子树(cur.left null)cur这个节点没有右子树(cur.right null)cur这个节点没有左右子…

PyTorch深度学习实战(5)——计算机视觉

PyTorch深度学习实战&#xff08;5&#xff09;——计算机视觉 0. 前言1. 图像表示2. 将图像转换为结构化数组2.1 灰度图像表示2.2 彩色图像表示 3 利用神经网络进行图像分析的优势小结系列链接 0. 前言 计算机视觉是指通过计算机系统对图像和视频进行处理和分析&#xff0c;利…

【Python】正则表达式语法入门

目录 正则表达式 1、点&#xff1a;匹配所有字符 2、星号&#xff1a;重复匹配任意次 3、加号&#xff1a;重复匹配多次 4、花括号&#xff1a;匹配指定次数 5、贪婪模式和非贪婪模式 6、反斜杠&#xff1a;对元字符的转义 7、方括号&#xff1a;匹配几个字符之一 8、…

异地使用PLSQL远程连接访问Oracle数据库【内网穿透】

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 转载自cpolar极点云文章&#xff1a;公网远程连接…

cjson的内存泄漏案例

1、当我们使用下面这些创建json对象时&#xff0c;需要用cJSON_Delete();释放&#xff0c;&#xff08;当然&#xff0c;释放父JSON对象后&#xff0c;子JSON对象也会被释放&#xff09; 2、多次释放同一内存空间 在recv_write_property函数中的data&#xff0c;在Equipment_re…

Html基础知识学习——兼容问题与解决方法(十六)

文章目录 1.计算一定要精确&#xff0c;不要让内容的宽高超出我们设置的宽高&#xff0c;在IE6下内容会撑开设置好的宽高2.元素浮动&#xff0c;宽度需要内容撑开&#xff0c;就给里面的块元素都加浮动3.在ie6.ie7下元素要浮动并在同一行 就给这些元素都加浮动4.注意标签嵌套规…

【玩转Linux操作】Linux进程(进程基本介绍,父子进程,终止进程,进程树)

&#x1f38a;专栏【玩转Linux操作】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【Counting Stars 】 欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f354;进程的基本介绍&#x1f354;显示系统执行的进程⭐…