操作系统导论习题解答(41. Fast File System (FFS))

news/2024/5/20 6:42:34/文章来源:https://www.cnblogs.com/astralcon/p/16792736.html

Locality and The Fast File System

"old UNIX file system" looked like this:
在这里插入图片描述
super block(S): contains information about the entire file system
inode region: contains all the inodes for the file system
data region: contains user data

1. The Problem: Poor Performance

The problem: performance was terrible. The file system was delivering only 2% of overall disk bandwidth.

The main issue was that the old UNIX file system treated the disk like it was a random-access memory. For example, the data blocks of a file were often very far away from its inodes, thus inducing an expensive seek whenever one first read the inode and then the data blocks of a file.

Worse, the file system would end up getting quite fragmented, as the free space was not carefully managed.
在这里插入图片描述
when accessing E, you don't get peak (sequential) performance from the disk.

One other problem: the original block size was too small (512 bytes). 对于每个块而言,太小有利于减少块内部碎片化,但是不利于传输,块太小导致定位查找开销增加。

故关键问题为:如何组织磁盘数据去提升性能?

2. FFS:Disk Awareness Is The Solution

Fast File System(FFS):简而言之,就是保持以前文件系统的原有接口(相同的APIs,包含open()read()write()close()和其他的文件系统调用接口)但是改变内部实现。

3. Organizing Structure: The Cylinder Group

第一步就是改变磁盘结构。FFS将磁盘分成多个柱面组(cylinder groups)。单个圆柱体是硬盘驱动器不同表面上的一组磁道,这些磁道距驱动器中心的距离相同。

如下所示,显示了具有6个盘片的驱动器的四个最外轨道,以及一个由三个圆柱组成的圆柱组:
在这里插入图片描述
现代文件系统会导出块的逻辑地址空间,故无法为文件系统导出足够的信息,无法真正了解是否正在使用特定的柱面。

文件系统将驱动器组织成块组(block groups),每个块组为磁盘连续的空间。如下所示:每8个块分成一组
在这里插入图片描述
如果文件系统把两个文件放到同一个组,那么接连获取两个文件不会造成很长的寻道时间。

FFS里单个圆柱组如下所示:
在这里插入图片描述
FFS保留了超级块(S)的副本,故当一个超级快失效后,还有其他块可用;FFS需要追踪组中哪个索引节点和数据块已经被使用。

4. Policies: How To Allocate Files and Directories

为了提升性能,FFS在磁盘中放置文件、目录和相关元数据的原理非常简单:保持相关内容在一起(keep related stuff together)。为了达到这个目的,FFS利用了一些简单的布局试探法。

首先是目录的放置:找到分配的目录数量少和大量的空闲索引节点的柱面组,然后将目录数组和索引节点放入该组中。

对于文件:首先确保将文件的数据块与索引节点分配在同一组中,确保查找时间最小;然后将所有文件放在其所在目录的柱面组中的同一目录中。

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

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

相关文章

UE4 /UE5 PC/安卓优化

一、概述 UE4/UE5场景中的资源越多,消耗的内存就越大,就会越卡顿。这里教大家如何进行场景优化,来减少内存,使得场景更加流畅。 二、模型优化 2.1、使用3Dmax或者Maya制作的模型,面数最好不要太多,虽然UE4…

国内首家车身区域控制器量产 电子电气架构进入中央集中式3.0阶段

从功能独立的分布式架构,到功能集成的域控制架构,如今整车电子电气架构正在加速跨入集中式电子电气架构3.0阶段。 在中央集中式架构中,算力逐渐向中央集中,多个域控制器继续融合最终形成1个中央计算平台N个区域控制器的终极布局&…

操作系统导论习题解答(29. Locked Data Structures)

Lock-based Concurrent Data Structures 带着问题:给定一个数据结构,如何给其添加锁使其拥有正确性和高效性? 1. Concurrent Counters 1.1 Simple But Not Scalable上述代码满足了正确性,但是对于性能,我们一无所知。为了了解性能优劣,做了一个基准测试,如下所示(preci…

零时科技 || Rabby Swap合约遭受攻击事件详解

0x1 背景 2022年10月12日,Rabby Swap合约中存在疑似任意用户资产转移漏洞。Rabby Swap官方表示,如果有使用,请撤销所有链上所有现有的 Rabby Swap 批准。对于没有使用过 Swap 的人来说,钱包安全且不受影响。零时科技安全团队及时…

RxJS - interval、take制作倒计时效果

获取验证码按钮功能: 引入所需的RxJS的方法,定义变量: import { interval } from rxjs; import { take } from rxjs/operators; buttonText 获取验证码; isDisabled false; // 按钮是否灰显 seconds 60; // 倒计时开始时间编写点击按钮…

Typora+PicGo+七牛云实现图片上传存储

1. 注册七牛云 首先,需要在七牛云官网注册账号并进行实名认证,注册----->申请个人账户----->填写注册信息----->实名认证,基本上就是这个步骤,不做细说,相信难不到聪明的你 2. 配置存储空间 2.1 新建空间 …

实训十二:路由器静态路由配置

一、 实验目的 理解路由表掌握静态路由的配置 二、 应用环境 在小规模环境里,静态路由是最佳的选择静态路由开销小,但不灵活,适用于相对稳定的网络 三、 实验设备 1、DCR-2655 三台 2、网线(交叉线) 四条 四、 实验拓扑…

操作系统导论习题解答(16. Segmentation)

Segmentation 1. Segmentation: Generalized Base/Bounds我们可以看一下(Figure 16.1),尽管每个CPU都有一对硬件寄存器(base register和bounds register),但是还是不可避免的会产生内存浪费(阴影部分表示未被使用)。为了解决这个问题,就引入了segmentation:既然每一…

植物大战 string——C++

“朝朝暮暮” 猛戳订阅🍁🍁 👉 [C详解专栏] 👈 🍁🍁 这里是目录一、编码1.ASCII码2.unicode编码3.gbk二、string的使用1.构造函数无参构造函数string()常量字符串构造string(const char* s)拷贝构造string(…

风控场景中值得收藏的10个经典算法模型的实操与应用

在风控领域中,我们也经常接触到回归模型场景,常见的例如产品额度定价、客户价值评估、信息指数分析等。针对回归模型,建模的目标变量是连续型,这是在特征数据上与分类模型最明显的区别。在模型具体实现的过程中,采用的…

Linux 学习 -- shell中字串的一些用法

1、简单用法:返回变量的内容 命令 : ${变量} 或者 $变量 2、返回变量的长度 命令:${#变量} // 返回变量长度,字符长度 3、返回变量start数值之后的字符,包括start 命令:${变量:start} 4、提取start之…

Docker 基础及安装

更多内容,前往 IT-BLOG 一、简介 Docker是基于Go语言实现的云开源项目。主要目标是 “Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(Web应用或…

微信壁纸小程序(SpringBoot后台V1.3.0发布)

前篇:微信壁纸小程序V1.2.0(自带后台上传图片)_热衷与自由的博客-CSDN博客_手机壁纸api 如果你还不知道小程序的前身,可以看看前篇哦~ 上次9月末小编发布了V1.2.0版本,完成了后台的基本功能(上传壁纸、头像…

操作系统导论习题解答(8. Multi-level Feedback)

0. 文件地址 Homework 1. MLFQ: Basic Rules2. Attempt #1: How To Change Priority2.1 Example 1: A Single Long-Running Job2.2 Example 2: Along Came A Short Job In this example, there are two jobs: A, which is a long-running CPU-intensive job, and B, which is …

基于Linux的Nginx安装

文章目录基于Linux的Nginx安装1、Nginx用户设置1.1 创建新用户(注意权限问题:切换为root用户)1.2 添加新用户nginx,并设置相关信息(一直回车默认即可)1.3 退出当前用户,登录nginx用户&#xff0…

T278789 滑冰

(芭芭拉太可爱了叭......) 题目描述 在企鹅国,企鹅们是通过滑冰出行的。每次滑冰需要选择一个营地作为起点,一个营地作为终点,然后从营地 \(A(a_x,a_y)\) 滑到营地 \(B(b_x,b_y)\) 需要的时间是 \(min \{|a_x-b_x |,|a_y-b_y | \}\)。 现在企鹅豆豆在 \(1\) 号营地,他需要…

利用workflows工作流Actions自动部署Vue项目Deploy to GitHub Pages

文档 https://github.com/marketplace/actions/deploy-to-github-pageshttps://cli.vuejs.org/zh/guide/deployment.html#github-pages 目录第一步:配置workflows第二步:开启GitHub Pages使用GitHub Pages部署一个在线Demo,每次更新代码都要…

变分自编码器VAE的直观理解与原理推导 及 问题记录

1 学习链接 参考链接: [1] 【变分自编码器 VAE 鲁鹏】 https://www.bilibili.com/video/BV1Zq4y1h7Tu?share_sourcecopy_web&vd_source7771b17ae75bc5131361e81a50a0c871 [2] http://www.gwylab.com/note-vae.html [3] https://www.bilibili.com/video/BV15E4…

已知组成元素可以唯一的确定物体形态吗?

如果把鼠标拆成一个一个的原子,能根据这些原子唯一的复现鼠标吗,或者把一个蛋白质拆成一个一个的氨基酸而顺序未知,能唯一的确定原来蛋白质的结构吗? 这次继续验算移位距离假设,所用的训练集是mnist的0,1,2…

IB课程必修课TOK到底有啥用?

众所周知,中国家长和学生最爱的IB,高中阶段有“三大奇葩课程”EE(拓展论文)、TOK(知识论)和CAS(创造、活动与服务)。下面,我们就来看看TOK到底“奇葩”在哪里&#xff0c…