操作系统文件管理相关习题2
文件管理的任务和功能文件管理
任务:对用户文件和系统文件进行组织管理,以方便用户使用,并保证文件的安全
功能:文件存储空间的管理,目录管理,文件读写管理和保护
目录管理
对目录管理的要求
- 实现按名存取
- 提高对目录的检索速度
- 文件共享
- 允许文件重名
文件控制块和索引结点
- 为了能对文件进行正确的存取,必须为文件设置用于描述和控制文件的数据结构,称为“文件控制块(FCB)
- 一个文件对应一个FCB(目录项),若干目录项组成一个目录文件。
- 文件控制块
通常包含三类信息:
基本信息类:- 文件名
- 文件物理位置
- 文件逻辑结构
- 文件物理结构存取
控制信息类: - 文件主的存取控制权限
- 核准用户的存取控制权限
- 一般用户的存取控制权限
使用信息类: - 文件建立的日期、时间
- 文件上一次修改的日期、时间
- 当前使用信息:已打开文件的进程数;是否被其他用户锁住;文件在内存中是否已被修改但尚未拷贝到磁盘上
- 索引结点
-
索引结点的引入
设目录文件所占盘块数为N,则查找一个目录项平均需要调入盘块(N+1)/2次。假如一个FCB为64B,盘块大小为1KB,则每个盘块可存放16个FCB,对于640个FCB的目录文件,需占40个盘块,平均查找一个文件需启动磁盘20次。假如每个FCB占16B,则每个盘块可存放64个FCB,对于640个FCB的目录文件,需占10个盘块,平均查找一个文件需启动磁盘5次。大大节省了系统开销。
为此,UNIX采用索引结点,每个目录项占16B,其中14B为文件名,2B为i结点指针(索引结点号) -
磁盘索引结点
主要包括以下内容:- 文件模式:包括文件类型(正规文件、目录文件、字符特别文件、块特别文件、管道文件等)和存取权限(9位二进制表示)。
- 文件主标识符uid——拥有该文件的个人·同组用户标识符gid
- 文件物理地址一一每一个索引结点中含有13个地址项iaddr(0)~iaddr(12),混合索引
- 文件长度一以字节为单位
- 文件连接计数一一在本文件系统中所有指向该文件名的指针计数(一个文件可以对应多个文件名)
- 文件存取时间一一文件最近被进程存取的时间、最近被修改的时间及索引结点最近被修改的时间
-
内存索引|结点
文件打开时,要将磁盘索引结点拷贝到内存的索引结点中,以便以后使用。
在内存索引结点中增加了以下内容:- 索引结点编号——用于标识内存素引结点
- 状态一一指示结点是否上锁或被修改
- 访问计数一一每当有一进程访问此i结点时,将该访问计数加1,访问完再减1
- 文件所属文件系统的逻辑设备号
- 链接指针一一设置有分别指向空闲内存i结点链表和散列队列的指针(内存i接点采用散列搜索,相同散列地址的i 接点构成一队列,队列内用顺序查找方式。)
-
目录结构
目录结构的组织,关系到文件系统的存取速度,也关系到文件的共享性和安全性。
-
单级目录结构
最简单的目录结构。
状态位用来表示该目录项是否空闲。
单级目录可以实现按名存取,但有如下缺点:- 查找速度慢
- 不允许重名
- 不便于实现文件共享,只适用于单用户环境
-
两级目录
第一级是主文件目录,第二级是用户文件目录。
为每个用户建立一个单独的用户文件目录UFD
系统建立一个主文件目录MFD,在MFD 中,每个用户目录文件占有一个目录项,其目录项
中包含用户名和指向该用户目录文件的指针同一个UFD中文件不能重名
两级目录基本克服了单级目录的缺点,并有以下优点:- 提高了检索目录的速度
- 在不同的用户目录中,可以使用相同的文件名。
- 不同用户还可以使用不同的文件名来访问系统中的同一个共享文件。
如果在主目录中有n个子目录(用户目录),每个用户目录最多为m个目录项,则查找指定的目录项,最多只需要检索 n+m个目录项。但如果采用单级目录,则最多需检索n×m个目录项。假定m=n,可以看出,采用两级目录可使检索效率是单级目录的n/2倍。
-
多级目录结构
-
目录结构
大型文件系统,常采用三级或三级以上目录结构
多级目录结构又称树型目录结构
主目录在这里被称为根目录
-
路径名
从根目录到任何数据文件,都只有一条唯一的通路。在该通路上,从根目录开始,把全部目录文件名与数据文件名,依次用"/"连接起来,就构成该数据文件的路径名。
系统中每个文件都有唯一的路径名 -
当前目录
又称工作目录。
为方便、提高检索速度,为每个进程设置一个“当前目录”,进程对文件的访问都相对于当前目录进行
相对路径名一从当前目录开始
绝对路径名—从根目录开始 -
增加和删除目录
在树型目录结构中,用户可以为自己建立UFD,并可再创建子目录。
创建子目录时,只需注意不要同名(文件名也不行)。
删除子目录,可采用下述两种方法处理:- 不删除非空子目录(MS-DOS)
- 可删除非空子目录(Windows)
第二种方法比较方便,但却比较危险
-
目录查询技术
当用户要访问一个已存文件时,系统首先利用用户提供的文件名对目录进行查询,找到该文件的文件控制块或索引结点;然后根据FCB或索引|结点中所记录的文件物理地址(盘块号),换算出文件在磁盘上的物理位置。
目前,目录查询的方式有两种:线性检索法和Hash方法。
-
线性检索法(顺序检索法)
对单级目录:根据用户提供的文件名,用顺序查找法直接从文件目录中找到指定文件的目录项
对树型目录:须对多级目录进行查找。用下面的例子说明
假定用户提供的文件路径名是/usr/ast/mbox,系统的目录项采用索引结点。
-
文件检索 Hash方法
针对Hash文件的目录查找方法。
如果我们建立了一张Hash索引文件目录,便可利用Hash方法进行查询,即系统利用用户提供的文件名并将它转变为文件自录的索引值,再利用该索引值到自录中去查找,将显著地提高检索速度。
使用通配符星号或?时,不能用Hash法查找。
文件存储空间的管理
与内存分配相似,可采用连续分配方式和离散分配方式
前者具有较高的文件访问速度,但可能产生较多的外存零头;
后者能有效地利用外存空间,但访问速度较慢。
外存空间的分配的基本单位都是磁盘块而非字节。
为实现存储空间的分配,系统必须记住存储空间的使用情况。为此,需:
- 设置相应的数据结构
- 提供存储空间分配和回收的手段
空闲表法和空闲链表法
- 空闲表法
-
空闲表
类似空闲分区表
属于连续分配方法,与内存的动态分配方式雷同
每个文件分配一块连续的存储空间
为外存上的所有空闲块建立一张空闲表,每个空闲区对应一个空闲表项
空闲表项包括:表项序号、该空闲区的第一个盘块号、空闲块数等。
将所有空闲区按其起始盘块号递增次序排列
-
存储空间的分配和回收
与内存动态分配相似,同样可以采用首次适应算法、循环首次适应算法等
回收时,相邻接的空闲区应合并。
与内存的动态分配不同的是空闲表法在磁盘空间分配中仍占有一席之地。例如:
对换方式中,对换空间一般都采用连续分配方式;
当文件较小(1~4个盘块)时,仍采用连续分配方式。当文件较大时,采用离散分配。
-
位示图法
-
位示图
位示图是用二进制的一位来表示磁盘中一个盘块的使用情况。
“0”——空闲;
“1”——已分配。
通常用m×n个位数来构成位示图。m×n等于磁盘的总块数。
-
位示图盘块的分配
顺序扫描位示图,从中找出一个或一组其值为0的二进制位。
将找到的二进制位,转换成相应的盘块号。- 设行号为i,列号为j,则对应的盘块号b为:
- b = i x n + j
- n为每行的位数。32位机每个字为32位,上图中是16位。
修改位示图,令map[i][j] = 1
-
位示图盘块的回收
步骤:- 将回收盘块号转换成位示图的行号和列号
- i = b / n(整数除法,结果取整数)
- j = b % n
- 修改位示图,令
map[i][j] = 0
位示图小,可以调入内存,节省了许多磁盘操作
位示图常用于微型机和小型机,如CP/M、Apple DOS等OS中
- 将回收盘块号转换成位示图的行号和列号
文件共享与文件保护
基于索引结点的共享方式
索引节点中应增加一个链接计数count
任何用户对共享文件的修改,都是其他用户可见的
此种共享方式,如果文件主不再需要此文件时,不能删除。
如果系统采用记帐收费,则文件主C必须为共享者B使用此文件而付费
利用符号链实现文件共享
为使B能共享C的一个文件F,可以由系统创建一个LINK类型的新文件,也取名为F,并将它写入B的目录中,以实现B的目录与文件F的链接。
在新文件中只包含链接文件F的路径名。这种方法称为符号链接。
允许文件主删除文件。只不过当B要使用文件F时,会“找不到文件”,不会产生其他影响。
缺点:
- 共享文件时,可能要按路径多次读盘
- 新文件也要占用磁盘空间。
2
设某系统的磁盘空间共有2500块,计算机字长32位。系统用位示图方法管理磁盘空间
- 位示图需用多少字构造
- 画出申请一块的工作流程图
位示图一行代表一个字
字长有32位,代表bit位,一个字长32,位示图有32列
序号默认从0开始
行数等于2500除以32=78.125,向上取整79
2.
1. 检查位示图是否有空闲块
2. 若有空闲块,找到第一个空闲块的位置
3. 将该位标记为已使用
4. 返回该块的物理地址,完成申请
5. 若没有空闲块,返回申请失败
2015
用一张8个16位字长的字组成的”位示图”来管理一个高速存储器,现规定字号,位号和块号均从1开始计,试问:
- 该位示图可表示多少块?
- 字号为7,位号13所对应的块号是多少?
- 块号55对应的字号和位号分别是多少?
8 x 16 = 128
2.
i = 7,j = 13
b = n( i - 1 ) + j = (7 - 1) x 16 + 13 = 109
3.
i = (b - 1) DIV n + 1 = (55 - 1) / 16 + 1 = 3 + 1 = 4
j = (b - 1) MOD n + 1 = (55 - 1) % 16 + 1 = 6 + 1 = 7
或
55 / 16 = 3 … 7,(从0开始)
所以字号是1,位号为7
相关文章:

操作系统文件管理相关习题2
文件管理的任务和功能文件管理 任务:对用户文件和系统文件进行组织管理,以方便用户使用,并保证文件的安全 功能:文件存储空间的管理,目录管理,文件读写管理和保护 目录管理 对目录管理的要求 实现按名存…...
react 通过ref调用子组件的方法
背景 父组件内引入了一个弹窗组件,弹窗组件使用了完全内聚的开发方法; 实现思路 父组件内通过ref获取的子组件,通过current调用子组件的方法,子组件需要通过forwardRef进行“包装”导出,通过useImperativeHandle暴露…...

【计算机网络】 —— 数据链路层(壹)
文章目录 前言 一、概述 1. 基本概念 2. 数据链路层的三个主要问题 二、封装成帧 1. 概念 2. 帧头、帧尾的作用 3. 透明传输 4. 提高效率 三、差错检测 1. 概念 2. 奇偶校验 3. 循环冗余校验CRC 1. 步骤 2. 生成多项式 3. 例题 4. 总结 四、可靠传输 1. 基本…...
AcWing 93. 递归实现组合型枚举
文章目录 前言代码思路 前言 今天晚上还有三个小时,写一晚上简单题。划水。 代码 #include<bits/stdc.h> using namespace std; int n,m; void dfs(int u,int sum,int state){if(sumn-u<m){return;//sum 表示当前选了 sum 个数字,假设把所有…...
vscode 折叠范围快捷键
vscode 折叠范围快捷键 问答 原文网址:https://www.n.cn/search/c830b29cb76146d08cae5074acfd4785 VSCode 折叠范围快捷键 在使用Visual Studio Code(VSCode)进行代码编辑时,掌握一些快捷键可以大大提高工作效率。以下是关于VSCode中折叠和…...
RabbitMQ 实现分组消费满足服务器集群部署
实现思路 使用扇出交换机(Fanout Exchange):扇出交换机会将消息广播到所有绑定的队列,确保每个消费者组都能接收到相同的消息。为每个消费者组创建独立的队列:每个消费者组拥有自己的队列,所有属于该组的消…...

Chromium网络调试篇-Fiddler 5.21.0 使用指南:捕获浏览器HTTP(S)流量(二)
概述 在上一篇文章中,我们介绍了Fiddler的基础功能和如何安装它。今天我们将深入探讨如何使用Fiddler来捕获HTTP请求,这是Fiddler的一个核心能力,对于前端开发者、测试人员以及安全研究人员来说非常有用。捕获HTTP请求可以帮助我们更好地理解…...

个人IP建设:简易指南
许多个体创业者面临的一个关键挑战是如何为其企业创造稳定的需求。 作为个体创业者,您无法使用营销团队,因此许多人通过推荐和他们的网络来产生需求。因此,扩大您的网络是发展您的业务和产生持续需求的最佳策略。 这就是个人IP和品牌发挥作…...

智能指针【C++11】
文章目录 智能指针std::auto_ptr std::unique_ptrstd::shared_ptrstd::shared_ptr的线程安全问题std::weak_ptr 智能指针 std::auto_ptr 管理权转移 auto_ptr是C98中引入的智能指针,auto_ptr通过管理权转移的方式解决智能指针的拷贝问题,保证一个资源…...

【Linux 篇】Docker 启动和停止的精准掌舵:操控指南
文章目录 【Linux篇】Docker 启动和停止的精准掌舵:操控指南前言docker基本命令1. 帮助手册 2. 指令介绍 常用命令1. 查看镜像2. 搜索镜像3. 拉取镜像4. 删除镜像5. 从Docker Hub拉取 容器的相关命令1. 查看容器2. 创建与启动容器3. 查看镜像4. 启动容器5. 查看容器…...

Cursor vs VSCode:主要区别与优势分析
Cursor - The AI Code Editor 1. AI 集成能力 Cursor的优势 原生AI集成: # Cursor可以直接通过快捷键调用AI # 例如:按下 Ctrl K 可以直接获取代码建议 def complex_function():# 在这里,你可以直接询问AI如何实现功能# AI会直接在编辑器中…...

从单体到微服务:如何借助 Spring Cloud 实现架构转型
一、Spring Cloud简介 Spring Cloud 是一套基于 Spring 框架的微服务架构解决方案,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。 Spring Cloud 提供了诸如服务发现、配置管理、负载均衡、断路器、消息总线…...

RocketMq基础学习+SpringBoot集成
学习贴:参考https://blog.csdn.net/zhiyikeji/article/details/138286088 文章目录 普通消息顺序消息延迟消息批量消息事务消息 SpringBoot整合RocketMQ 3.1 NameServer NameServer是一个简单的路由注册中心,支持Topic和Broker的动态注册和发现。作用主…...

分布式cap
P(分区安全)都能保证,就是在C(强一致)和A(性能)之间做取舍。 (即立马做主从同步,还是先返回写入结果等会再做主从同步。类似的还有,缓存和db之间的同步。&am…...
mybatis-xml映射文件及mybatis动态sql
规范 XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)。 XML映射文件的namespace属性为Mapper接口全限定名一致。 XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致…...

计算机网络复习——概念强化作业
物理层负责网络通信的二进制传输 用于将MAC地址解析为IP地址的协议为RARP。 一个交换机接收到一帧,其目的地址在它的MAC地址表中查不到,交换机应该向除了来的端口外的所有其它端口转发。 关于ICMP协议,下面的论述中正确的是ICMP可传送IP通信过程中出现的错误信息。 在B类网络…...

用友BIP与旺店通数据集成方案解析
用友BIP与旺店通企业奇门的供应商集成同步方案 在现代企业的数据管理中,跨平台的数据集成是实现高效业务运作的关键环节。本文将分享一个实际案例:如何通过轻易云数据集成平台,将用友BIP系统中的供应商数据无缝对接到旺店通企业奇门…...

string类函数的手动实现
在上一篇文章中,我们讲解了一些string类的函数,但是对于我们要熟练掌握c是远远不够的,今天,我将手动实现一下这些函数~ 注意:本篇文章中会大量应用复用,这是一种很巧妙的方法 和以往一样,还是…...

Oceanbase离线集群部署
准备工作 两台服务器 服务器的配置参照官网要求来 服务器名配置服务器IPoceanbase116g8h192.168.10.239oceanbase216g8h192.168.10.239 这里选oceanbase1作为 obd机器 oceanbase安装包 选择社区版本的时候自己系统的安装包 ntp时间同步rpm包 联网机器下载所需的软件包 …...

transformers生成式对话机器人
简介 生成式对话机器人是一种先进的人工智能系统,它能够通过学习大量的自然语言数据来模拟人类进行开放、连贯且创造性的对话。与基于规则或检索式的聊天机器人不同,生成式对话机器人并不局限于预定义的回答集,而是可以根据对话上下文动态地…...

Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...

基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...