操作系统是如何通过相应文件名和路径去找到该文件的物理地址的?

文件系统的问题: 操作系统是如何通过相应文件名和路径去找到该文件的物理地址的?????  具体的这个过程是如何的????



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟Linux文件系统。 1. 在现有机器硬盘上开辟100M的硬盘空间,作为设定的硬盘空间。 2. 编写一管理程序simdisk对此空间进行管理,以模拟Linux文件系统,要求: (1) 盘块大小1k (2) 空闲盘块的管理:Linux位图法 (3) 结构:超级块, i结点区, 根目录区 3. 该simdisk管理程序的功能要求如下: (1) info: 显示整个系统信息(参考Linux文件系统的系统信息),文件可以根据用户进行读写保护。目录名和文件名支持全路径名和相对路径名路径名各分量间用“/”隔开。 (2) cd …: 改变目录:改变当前工作目录,目录不存在时给出出错信息。 (3) dir …: 显示目录:显示指定目录下或当前目录下的信息,包括文件名物理地址、保护码、文件长度、子目录等(带/s参数的dir命令,显示所有子目录)。 (4) md …: 创建目录:在指定路径或当前路径下创建指定目录。重名时给出错信息。 (5) rd …: 删除目录:删除指定目录下所有文件和子目录。要删目录不空时,要给出提示是否要删除。 (6) newfile …: 建立文件。 (7) cat …: 打开文件。 (8) copy …: 拷贝文件,除支持模拟Linux文件系统内部的文件拷贝外,还支持host文件系统与模拟Linux文件系统间的文件拷贝,host文件系统的文件命名为…,如:将windows下D:盘的文件\data\sample\test.txt文件拷贝到模拟Linux文件系统中的/test/data目录,windows下D:盘的当前目录为D:\data,则使用命令: simdisk copy D:\data\sample\test.txt /test/data 或者:simdisk copy D:sample\test.txt /test/data (9) del …: 删除文件:删除指定文件,不存在时给出出错信息。 (10) check: 检测并恢复文件系统:对文件系统中的数据一致性进行检测,并自动根据文件系统的结构和信息进行数据再整理。 4. 程序的总体流程为: (1) 初始化文件目录; (2) 输出提示符,等待接受命令,分析键入的命令; (3) 对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令,直到键入EXIT退出为止。
本系统由用C#语言进行编写和实现,可实现多用户登录。各模块简介如下: 1 文件部分分为C盘和D盘两个磁盘块,在每个磁盘块中均可进行新建、删除、编辑、格式化、显示 属性及个文件等操作。如可新建文件夹、文本文件和可执行文件,并可对新建的文件进行编辑。 此次课程设计中文件系统采用显示链接FAT表。磁盘是断电后内容不丢失的,因此用文件模拟磁盘。要求模拟系统存在两块硬盘:每个磁盘分成128块,每块64字节,第0,1块存放FAT表,第2块存放初始盘快。 文件的逻辑结构采用流式结构; 文件的内容: 文件的内容均采用文本文件,系统中有两种文件: 一种是存放任意字符的文件 一种是可执行文件:可执行文件的内容就是系统内进程的程序体。 文件中要有一种特定命令的“可执行”文件文件中的命令非常简单,仅仅包括以下几种指令: i=?; 给i赋值一位数 i++; i加1 i--; i减1 !??; end; 第一个?为A,B,C中某个设备,第二个?为一位数,表示使用设备的时间(由于没有 实际设备,所以无法知道设备何时工作完成,所以假定一个数,这个数随着系统时间 增加而递减,减到0时,认为是设备工作完成); end. 表示文件结束,同时将结果写入文件out,其中包括文件路径名和i的值。 用户接口 用户接口提供用户命令接口,要求文件名中既可以支持相对路径文件名,也可支持绝对路径路径 名。要求实现以下命令: 创建文件:create 盘符:\文件名(目录名).e(t). 建立新文件,如果原来存在同名文件要提示是否覆盖。 拷贝文件:copy 盘符:\文件名(目录名).e(t). to 盘符: 拷贝文件可同名拷贝,也可更名拷贝 删除文件:delete盘符:\ 文件名(目录名).t(e). 注意:磁盘内和磁盘文件移动的不同,磁盘内的移动实际只是目录的改变,并不需要真的移动文件磁盘间的文件移动实际上是先拷贝文件到目标磁盘,然后再删除源文件。 2 进程部分 进程管理主要包括进程调度,进程的创建和撤销、进程的阻塞和唤醒,中断作用的实现。 硬件工作的模拟: 中央处理器的模拟 用函数CPU( )(该函数不能有参数)模拟中央处理器。 该函数主要负责解释“可执行文件”中的命令。 i=?; 给i赋值一位数 i++; i加1 i--; i减1 !??; end; 在模拟系统界面上,我们显示了: 就绪队列----进程名称、优先级; 阻塞队列----进程名称、优先级、阻塞原因; 正在运行的进程,该进程的优先级,以及正在运行的指令,中间结果,执行结果; 系统内存的占用情况,剩余空间等,以便显示的提示用户执行新的进程。 注意:CPU只能解释指令寄存器IR中的指令。一个进程的运行时要根据进程执行的位置,将对应的指令 存放到指令寄存器中。 3 存储部分 存储管理部分主要实现主存空 间的分配和回收、存储保护。 模拟系统中,采用页是存储管理方案(PCB区域单独存放) 系统区包括pcb区域 用数组模拟其他内存区域,大小为512字节。 主存分配策略 当有程序要存放入主存时,查看空闲块总数是否够用,如果够用,先分配一块用来存放页表,然后查 位示图中为“0”的位,根据查到的位所在的字和位可计算出对应的块,同时在该位填上占用 标志“1”,并填写页表;不够用,分配失败。 块=字*字长+位 主存回收策略 根据页表归还存储空间时,可以根据归还块的块推算出在位示图中的位置: 字=[块/位示图中字长] 位=块mod位示图中字长 然后把这一位的“1”清成“0”,表示该块成为空闲块了 最后回收页表所占用空间 内存部分分为32个物理块,当为分配时均为绿色,分配后变为红色, 进程正在读取的物理块显示 黄色。 4 设备部分 设备管理主要包括设备的分配和回收。 设备的模拟 模拟系统中有A、B、C三种独占型设备,A设备3个,B设备2个,C设备1个。 数据结构 因为模拟系统比较小,因此只要设备表设计合理既可。
本资源含所有三个任务的源代码,采用Visual Studio.NET 2003的C++与MFC编写(前端有图形化界面),供各位参考。 课程设计目的 本设计的目的是实现操作系统和相关系统软件的设计,其中涉及进程编程、I/O操作、存储管理、文件系统等操作系统概念。 课程设计要求 (1)对进行认真分析,列出实验具体步骤,写出符合题目要求的程序清单,准备出调试程序使用的数据。 (2)以完整的作业包的形式提交原始代码、设计文档和可运行程序。提交的光盘应当包括:设计题目,程序清单,运行结果分析,所选取的算法及其优缺点,以及通过上机取得了哪些经验。程序清单要求格式规范,注意加注释(包含关键字、方法、变量等),在每个模块前加注释,注释不得少于20%。课程设计要求同时上交打印文档,设计报告包括设计题目,算法分析,关键代码及其数据结构说明,运行结果分析以及上机实践的经验总结。 设计一: 设计任务:模拟Linux文件系统 在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟Linux文件系统。 在现有机器硬盘上开辟100M的硬盘空间,作为设定的硬盘空间。 编写一管理程序simdisk对此空间进行管理,以模拟Linux文件系统,要求: 盘块大小1k 空闲盘块的管理:Linux位图法 结构:超级块, i结点区, 根目录区 该simdisk管理程序的功能要求如下: info: 显示整个系统信息(参考Linux文件系统的系统信息),文件可以根据用户进行读写保护。目录名和文件名支持全路径名和相对路径名路径名各分量间用“/”隔开。 cd …: 改变目录:改变当前工作目录,目录不存在时给出出错信息。 dir …: 显示目录:显示指定目录下或当前目录下的信息,包括文件名物理地址、保护码、文件长度、子目录等(带/s参数的dir命令,显示所有子目录)。 md …: 创建目录:在指定路径或当前路径下创建指定目录。重名时给出错信息。 rd …: 删除目录:删除指定目录下所有文件和子目录。要删目录不空时,要给出提示是否要删除。 newfile …: 建立文件。 cat …: 打开文件。 copy …: 拷贝文件,除支持模拟Linux文件系统内部的文件拷贝外,还支持host文件系统与模拟Linux文件系统间的文件拷贝,host文件系统的文件命名为…,如:将windows下D:盘的文件\data\sample\test.txt文件拷贝到模拟Linux文件系统中的/test/data目录,windows下D:盘的当前目录为D:\data,则使用命令: simdisk copy D:\data\sample\test.txt /test/data 或者:simdisk copy D:sample\test.txt /test/data del …: 删除文件:删除指定文件,不存在时给出出错信息。 check: 检测并恢复文件系统:对文件系统中的数据一致性进行检测,并自动根据文件系统的结构和信息进行数据再整理。 程序的总体流程为: 初始化文件目录; 输出提示符,等待接受命令,分析键入的命令; 对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令,直到键入EXIT退出为止。 设计二: 设计任务:模拟文件系统的前端操作shell 实现一个简单的shell(命令行解释器)。 将设计一的管理程序simdisk作为后台进程运行,利用本设计任务的shell操作simdisk。 本设计任务在于学会如何实现在前端的shell进程和后端的simdisk进程之间利用共享内存进行进程间通信(IPC)。 设计三: 设计任务:模拟文件系统的操作管理 实现多个进程同时对模拟文件系统进行操作。设计管理程序simdisk的用户访问权限管理。访问模拟文件系统的每个进程都属于某个用户,管理程序simdisk根据其访问权限决定其对模拟文件系统的操作。 对模拟文件系统的操作要求做到:共享读,互斥写。 本设计任务在于学会如何实现信息的安全管理和进程同步。 注:要求从课程设计的整体来考虑设计任务一、二、三,并分阶段实现。
这个问题涉及到计算机文件系统的组织和命名规则。 在一个文件系统中,每个文件都有一个唯一的文件名路径文件名通常包括一个扩展名来指示文件类型。文件路径由一系列文件夹名称组成,每个文件夹包含一个或多个文件或其他文件夹。这个结构被称为树状结构,因为它类似于一棵树的分支和枝条。 为了在计算机上找到一个特定的文件,需要使用文件系统提供的搜索和导航功能。这通常涉及使用文件名路径中的某些部分来过滤和定位文件。 对于这个问题,一个常见的做法是使用类似于Unix文件系统的树状结构。每个文件都有一个唯一的文件名和扩展名。为了使文件名唯一,通常需要将其与一个路径组合起来,形成一个唯一的文件标识符。这可以通过使用目录路径的方式来完成,例如: /home/user/documents/myfile.txt 在这个例子中,文件名是“myfile.txt”,路径是“/home/user/documents”。这样做的好处是可以根据文件名路径文件系统中精确地定位一个文件。 在这个系统中,每个文件都有一个编,这个编可以作为文件的唯一标识符。第一个索引项提供了248个文件块的文件名和长度等信息。如果一个文件当前在第209个操作块中,而下一个操作是访问第706个操作块,那么必须从硬盘读取多少物理块?因为索引项大小未知,所以无法精确计算,但是一般情况下,需要读取若干个物理块才能获取所需的信息。 希望这个回答能够解决你的问题!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值