首页 > 其他分享 >操作系统实验四 文件管理

操作系统实验四 文件管理

时间:2024-07-17 17:30:57浏览次数:16  
标签:文件 blocks 操作系统 NDIRECT xv6 实验 inode 分配 block

实验目的与要求

    实验目的:

(1)、掌握计算机操作系统管理进程、处理机、存储器、文件系统的基本方法。

(2)、了解进程的创建、撤消和运行,进程并发执行;自行设计解决哲学家就餐问题的并发线程,了解线程(进程)调度方法;掌握内存空间的分配与回收的基本原理;通过模拟文件管理的工作过程,了解文件操作命令的实质。

(3)、了解现代计算机操作系统的工作原理,具有初步分析、设计操作系统的能力。

(4)、通过在计算机上编程实现操作系统中的各种管理功能,在系统程序设计能力方面得到提升。

实验要求:

(1)、题目1:

    xv6采用混合索引分配方式。阅读以下英文介绍:

The on-disk inode structure, struct dinode, contains a a size and a list of block numbers. The inode data is found in the blocks listed in the dinode’s addrs array. The first NDIRECT blocks of data are listed in the first NDIRECT entries in the array; these blocks are called ‘‘direct blocks’’. The next NINDIRECT blocks of data are listed not in the inode but in a data block called the ‘‘indirect block’’. The last entry in the addrs array gives the address of the indirect block.

请联系代码分析,回答以下问题:

只采用直接分配方式,xv6支持的最大文件尺寸是多少?

结合直接分配方式和索引分配方式,xv6支持的最大文件尺寸是多少?

解析: 

(1)、题目1

    xv6采用混合索引分配方式。阅读以下英文介绍:

The on-disk inode structure, struct dinode, contains a a size and a list of block numbers. The inode data is found in the blocks listed in the dinode’s addrs array. The first NDIRECT blocks of data are listed in the first NDIRECT entries in the array; these blocks are called ‘‘direct blocks’’. The next NINDIRECT blocks of data are listed not in the inode but in a data block called the ‘‘indirect block’’. The last entry in the addrs array gives the address of the indirect block.

请联系代码分析,回答以下问题:

只采用直接分配方式,xv6支持的最大文件尺寸是多少?

结合直接分配方式和索引分配方式,xv6支持的最大文件尺寸是多少?

结合文档和源码学习,我们可以得知在xv6文件系统中,文件数据可以存储在直接块(direct blocks)和间接块(indirect block)中。

文档中的第8章8.10节描述了inode的内容和数据块的分配方式。文档提到了直接块(direct blocks)和间接块(indirect block),并且说明了它们是如何在inode的addrs数组中被组织的。文档中给出了磁盘中的文件分配示意图,如图1所示。

图 1 磁盘上的文件表示

在xv6文档中,可以在fs.h和fs.c文件中看到文件分配的具体实现。

在源码文件kernel/fs.h中,定义了struct dinode,其中包含了文件的大小(size字段)和数据块号的数组(addrs字段)。这个结构体直接关联到磁盘上的inode结构。

以下是kernel/fs.h中struct dinode的定义,它包含了直接块和间接块的地址列表:

图 2 struct inode定义

同样在源码文件kernel/fs.h中,定义了NDIRECT和NINDIRECT宏,它们分别表示直接块和间接块的数量。例如,如果NDIRECT被定义为12,这意味着有12个直接块可以被直接索引,如图3所示。

图 3 相关宏定义

在kernel/fs.c中,bmap函数处理数据块的分配,包括直接块和间接块。这个函数展示了如何根据文件的大小和块号来分配和访问数据块,如图4所示。

图 4 bmap函数定义

以下是对这两种分配方式的分析:

  1. 只采用直接分配方式:

直接块存储在inode的addrs数组中的前NDIRECT个条目。

每个条目代表一个数据块,如果只使用直接块,那么文件的最大尺寸将受限于可以直接索引的数据块数量。

根据xv6的实现,NDIRECT通常被定义为一个较小的值,例如12。这意味着有12个直接块可以被直接索引。

每个数据块的大小为BSIZE,这是一个宏定义,在xv6中通常设置为512字节或1024字节等。

因此,如果只使用直接块,xv6支持的最大文件尺寸为NDIRECT * BSIZE。

例如,如果BSIZE为1024字节,那么只使用直接块时,xv6支持的最大文件尺寸为:1024B*12=12KB

  1. 结合直接分配方式和索引分配方式:

除了直接块之外,xv6还使用一个间接块来存储更多的数据块地址。间接块本身也是一个数据块,可以存储NINDIRECT个数据块地址。

因此,间接块可以提供额外的NINDIRECT * BSIZE字节的存储空间。然而,间接块的地址是通过addrs数组中的最后一个条目来索引的,这意味着间接块可以存储的块数也受到BSIZE的限制。

假设BSIZE为1024字节,NINDIRECT通常被定义为1,每个间接块可存储的地址数为(BSIZE / sizeof(uint)),其中sizeof(uint)意义是指针所占长度,那么间接块可以存储的地址数为:1024/4=256,即间接块可以存储256个数据块的地址。

因此,结合直接分配和间接分配,xv6支持的最大文件尺寸为:

(NDIRECT+NDIRECT*(BSZIE/ sizeof(uint)))*BSIZE

若BSIZE为1024B,NDIRECT为12,则xv6支持的最大文件尺寸为:

(12+1024/4)*1024B=268KB

++++++++++++++++++++++++++++++++++++++++++++++++++++++

其他(例如感想、建议等等)。

本次实验通过深入研究xv6操作系统的源码和实验过程,加深了我对操作系统核心概念的理解,也锻炼了编程和系统分析能力。实验中,我学习了文件系统等关键领域的知识,并通过实际编码来实现操作系统中的各种管理功能,这让我对操作系统的工作原理有了更加直观的认识。通过阅读xv6文档进行学习,不但可以加深对系统的理解,也进一步提高了我自主学习的能力。同时,我也意识到操作系统设计中的复杂性和精妙之处,为我未来的学习和研究奠定了坚实的基础。

标签:文件,blocks,操作系统,NDIRECT,xv6,实验,inode,分配,block
From: https://blog.csdn.net/weixin_44340944/article/details/140411070

相关文章

  • 操作系统综合实验二
    实验目的与要求:   实验目的:(1)、掌握计算机操作系统管理进程、处理机、存储器、文件系统的基本方法。(2)、了解进程的创建、撤消和运行,进程并发执行;自行设计解决哲学家就餐问题的并发线程,了解线程(进程)调度方法;掌握内存空间的分配与回收的基本原理;通过模拟文件管理的工作......
  • 网络安全实验一 分组密码实验(AES加解密)
    本实验代码附在文末实验目的与要求:理解对称密码体制和分组密码算法的基本思想理解分组密码AES的基本原理实现AES的加解密过程,可以对各种文件(word、txt、mp3、jpg)进行加解密实现分组密码的密码分组链接工作模式与计算器工作模式实验环境:MicrosoftVisualStudio2022等......
  • 实验的分流验证
    父实验下有:子实验1:手机品牌=华为,子实验2:手机品牌!=华为。一、验证只走父实验,默认进对照组,不进实验组。1.设置父实验的流量为100%2.在终端执行curlcurl--location'(sdk地址)/service/2/abtest_config/'\--header'Content-Type:application/json'\--header'Cookie:in......
  • 通过图片文件头判断图片格式
    今天测试公司产品的时候发现一个Bug,上传图片需要在允许的格式下方可上传,例如常见的Png,从GPT下载下来的图片是.png的,但确实无法上传。拿到图片后查看文件头,发现是webp格式的。有些情况下,图片的后缀并不能真实的反应图片的格式,通过16进制能准确的判断出图片的真实格式。事实上,所有......
  • 基于java+springboot+vue实现的实验室管理系统(文末源码+Lw)127
    基于SpringBoot+Vue的实现的实验室管理系统(源码+数据库+万字Lun文+流程图+ER图+结构图+演示视频+软件包)系统功能:实验室管理系统管理员功能有个人中心,学生管理,教师管理,公告信息管理,知识库管理,实验课程管理,实验室信息管理,实验室预约管理,实验设备管理,采购记录管理,维修记录管理......
  • 基于java+springboot+vue实现的中药实验管理系统(文末源码+Lw)124
    基于SpringBoot+Vue的实现的中药实验管理系统(源码+数据库+万字Lun文+流程图+ER图+结构图+开题报告+演示视频+软件包)系统功能:本中药实验管理系统有管理员,教师,学生,实验员。管理员功能有个人中心,学生管理,教师管理,实验员管理,实验教学管理,在线学习管理,实验信息管理,实验预约管理,实......
  • AI办公自动化007:用kimi批量加密PDF文件
    文章目录一、介绍二、输入内容三、输出内容一、介绍使用kimichat实现对PDF文件进行加密二、输入内容在kimichat中输入提示词:你是一个Python编程专家,要完成一个编写Python脚本的任务,具体步骤如下:联网检索PyPDF2库的最新使用方法;打开文件夹:D:\2024-05读......
  • 基于java+springboot+vue实现的实验室管理系统(文末源码+Lw)127
     基于SpringBoot+Vue的实现的实验室管理系统(源码+数据库+万字Lun文+流程图+ER图+结构图+演示视频+软件包)系统功能:实验室管理系统管理员功能有个人中心,学生管理,教师管理,公告信息管理,知识库管理,实验课程管理,实验室信息管理,实验室预约管理,实验设备管理,采购记录管理,维修记录......
  • 购买一台云服务器,安装nvm,能够将配置全局命令链接js文件执行
    全局安装@vue/cli为什么会添加命令vuelinux或者MAC系统中通过whichvue查看vue地址,通过进入该地址查看文件发现软链接指向真实文件,真实文件同级别下的package.json中的bin字段中的名决定了输入命令vue2.全区安装@vue/cli时将包放在了node安装位置的node_modules下并且在包中的p......
  • x264、x265、libaom 编码对比实验
    介绍x264是一个开源的高性能H.264/MPEG-4AVC编码器,它以其优秀的压缩比和广泛的适用性而闻名。x265是一种用于将视频流编码成H.265/MPEG-HHEVC压缩格式的免费软件库和应用程序,以其下一代压缩能力和卓越的质量而闻名。作为x264的继任者,x265支持HEVC的Main、......