pintos-pro4-filesystem

合集下载

Pintos-斯坦福大学操作系统Project详解-Project1

Pintos-斯坦福大学操作系统Project详解-Project1

Pintos-斯坦福⼤学操作系统Project详解-Project1转载请注明出处。

前⾔:本实验来⾃斯坦福⼤学cs140课程,只限于教学⽤途,以下是他们对于Pintos系统的介绍:Pintos is a simple operating system framework for the 80x86 architecture. It supports kernel threads, loading and running user programs, and a filesystem, but it implements all of these in a very simple way. In the Pintos projects, you and your project team will strengthen its support in all three of these areas. You will also add a virtual memory implementation.Pintos实验主要分成四部分,如下所⽰:实验⼀:Thread实验⼆:User Programs实验三:Virtual Memory实验四:File System实验原理:通过 bochs 加载 pintos 操作系统,该操作系统会根据 pintos 的实现打印运⾏结果,通过⽐较标准输出⽂档和实际输出,来判断 pintos 实现是否符合要求。

环境配置:实验实现代码地址:实验⼀ THREAD:我们试验⼀的最终任务就是在threads/中跑make check的时候, 27个test全pass。

Mission1:重新实现timer_sleep函数(2.2.2)(注意,博主以下⽤了包括代码在内⼤概7000字的说明从每⼀个底层细节解析了这个函数的执⾏,虽然很长但是让我们对pintos这个操作系统的各种机制和实现有更深刻的理解,如果嫌长请直接跳到)timer_sleep函数在devices/timer.c。

GENIUSPRO软件安装说明书

GENIUSPRO软件安装说明书

1GENIUS PROSYSTEM REQUIREMENTS FOR MINIMUM PERFORMANCE• PC Processor Pentium®Dual-Core inside TM• 2 Gb RAM• Windows: XP SP3 or Vista , 7 or 8• Microsoft .NET Framework 4.0, if current is be-fore 3.5, first install 3.5 then 4.0• Internet connection for registration and Licenseactivation, software upgrade, remote accesssupport and training• USB connection• 2 Gb available HD space• CD drive• Video resolution 1280x1024Software installationDriver installationRegistration processActivation processSoftware configuration2Insert the GENIUSPRO cd into the pc.Wait for the Auto-run window, the installation process will then start automatically.On the Ready to Install GENIUSPRO window, click InstallThe setup checks for the presence of additional components including Framework 4; if necessary confirm component installation.Confirm by clicking AcceptInsert Name and Organisation in appropriate field.ClickNextPRO®SOFTWARE INSTALLATION 13 I 062 EThe following window shows the path of thesoftware installation.To continue, click NextThe GENIUSPRO Setup Finalizer will now com-mence and start the printer driver installation wizardClick NextTo complete the installation click Continue AnywayClick Finish to complete the installation.When installation is complete, the GENIUSPROicon will appear on the desktop.5Driver search for MG3 printer.If WINDOWS 7/8 have been configurated cor-rectly, they will automatically search for and installthe printer driver. This may take a few minutes tocomplete.If successful, the MG3 printer icon will appear inDevices and PrintersOn wizard window select No, not this timeConnect MG3 to mains power and switch on at the back of the printer.Windows will indicate that it has found new hardware.6Click NextOn next window select the optionInstall the software automaticallyClick NextTo complete the installation click Continue AnywayClick Finish to complete the installationThe MG3 printer icon will now appear in the Printers and FaxesPRO®REGISTRATION & ACTIVATION PROCESS7On installation of GENIUSPRO a 30 day trial usageperiod commences.To continue usage after 30 days, the user mustregister and license key activation must occur beforethis period expires, otherwise access to the programwill be denied.User Registration ProcessNote - The registration process must be carried outon a PC connected to the Internet.Access , click ASSISTANCE thenclick SOFTWARE.On the left select GENIUSPRO licencesClick REGISTERComplete all mandatory fields in the New UserRegistration form.Note – R emember the Username & Password asthey are needed to log in to the Users own reservedarea following registration, eg for Offline licenseactivation.Click SendCembre will verify the data and notify the user, oftheir approval or otherwise, by email in as short atime as possible.Once approved, the registration process must beONLINE REGISTRATIONOFFLINE REGISTRATIONClick License on the Home ribbon.The Application window shows current license details.Click RegisterChoose Online or Offline method of License activation.Click Online Registra tion only if the PC running GENIUSPRO is connected to the Internet.Enter Username & P assword remembered from User registration. Following a successful check of this data a license will automatically be activated and the user granted full GENIUSPRO functionality without expiration (per installation of the software).Click Offline Registra tion only if the PC running GENIUSPRO is not connected to the Internet.From this window, note the Machine ID (Processor ID).On a different P C that is Internet-enabled Access , click ASSISTANCE then click SOFTWARE.Click ACTIVATE LICENSELog in with previously registered Username & Password.Insert the previously noted Machine ID in the Processor ID field and click Activate LicenseAfter a few seconds an Activation code will appear at the top of the web page.Note this code and return to the P C runningGENIUSPROOpen the program and enter the noted Activation code in Registration keyGENIUSPRO will activate automatically and provide the user with full functionality without expiration (per installation of the software).PRO®SOFTWARE CONFIGURATION10Double click on GENIUSPRO icon on the desktop, aloading window will appear until the Start windowindicates the program is ready.In Start window, click Settings, then PrintersIn PRINTER CONFIGURATION window,click Add Printer and select MG3 from the list.The GENIUSPRO configuration is finished.Now you can print with MG3If, when printing, MG3 does not accept the template, configure templates thus.TEMPLATE CONFIGURATIONSelect MG3 printer and click one of the fourprinting configurations (here FLAT).Click on PreferencesSelect the colour option, Black & WhitePrint quality: 300 x 600 dpiPlate: Plate 1Click OK for all the open windows to confirm the new settings. Return to PRINTER CONFIGURATION window.Repeat the operation for the other printing configurations by setting:MG-CPM = plate 2MG-TPM = plate 3MG-TDM/TDMO = plate 4System default print position values.Normally these values are set to 0 and do not require adjustment.Please refer to the user manual for individual media print position fine tuning.Click OK to save and EXITNow read the User Manual to calibrate MG3 andcommence working.。

PROE4.0安装教程

PROE4.0安装教程

PROE4.0安装教程首先打开迅雷输入PROE4.0找到安装文件(大概1.5G多)用迅雷下载下载完成后就开始安装了。

1.修改环境变量。

在桌面右击“我的电脑”再点属性-高级-环境变量-新建-变量名:lang 值:chs (这样就保证了你打开proe后是中文的)2.右键点击ptc-li-4.0.dat文件点打开方式为记事本打开后会看到有一串数字这就是网卡地址,你要把它全部换成你自己电脑的网卡地址。

方法:在安装文件你找到CD1里面有个setup.exe文件并打开它这是会看到跳出一个界面,它的左下方有一串数字就是你自己的网卡地址,先复制它,再在上面用记事本打开的界面上点击编辑-替换。

在"查找内容”里输入原有的地址,在“替换为”里输入你的网卡ID:XX-XX-XX-XX-XX-XX,然后点击“全部替换”,保存后关闭)。

3.继续安装点击安装界面的下一步,再点击Pro/ENGINEER进入下一界面,选择你要安装在什么位置(任何盘都可以)。

继续下一步,单击“添加”-“锁定的许可证文件(服务器未运行)”-找到前面修改过的ptc_li-4.0.dat(路径限英文,须将路径中的数字和其他符号去掉),下一步直至安装完Pro/ENGINEER 安装.中间可能有个两个小细节A当提示插入光盘2的时候,把1改为2就行,当提示插入光盘3的时候,把数字该为3就行。

安装完成后退出。

4.把CRACK里面没有用的文件wildfire4.0-patch.exe复制到proewildfire/i486-nt/obj里面,然后运行改文件,点击PATCH---是。

选择文件,找到proewildfire/i486_nt/obj,这时你要选择文件类型,选择第二个类型.exe,然后找到XTOP.EXE--- -打开,弹出对话框,选择;是,还是找到XTOP.EXE,如此三次。

(如果没有弹出对话框就错了)5.在桌面打开peoe4.0就行了。

pintos-pro4-filesystem

pintos-pro4-filesystem

Project 4 FileSystem作者:西安电子科技大学2014.2.7文件系统是操作系统的五大功能模块之一,主要实现操作系统对程序、数据、设备等的管理。

一、当前pintos文件系统的功能当前pintos文件系统已经实现了基本的文件创建删除功能。

文件是固定大小,连续存放的。

(1)文件在磁盘的存储方式:每个文件都有一个disk_inode存放在磁盘的一个扇区上,其结构如下:struct inode_disk{block_sector_t start; //文件数据每一个起始块off_t length; //文件长度。

unsigned magic; //uint32_t unused[125];};现在pintos文件是连续的,而且在创建时指定其大小后,再不能改变大小。

由起始扇区和文件大小就能找到所有文件数据。

目录也是一个文件,只是其内容中都存放如下结构:struct dir_entry{Block_sector_t inode_sector; //文件inode_disk 所在扇区。

Char name[NAME_MAX+1];Bool in_use;};(2)磁盘空闲空间管理方式。

空闲空间是用位图来表示的。

其中位图也是一个文件,其disk inode存放在Sector 0.位图文件大小显然与磁盘大小有关,用一个位表示一个扇区是否被分配,一个扇区512字节,一个扇区作为一个物理块,创建一个2M的磁盘,有1024*1024*2/512bit=4096bit= 4096/8=512Byte。

(3)文件系统初始化过程:在init.c:main()函数中调用了filesys_init();1. 在filesys_init()中,初始化了bitmap,而且对磁盘进行了格式化。

其中格式化就是创建了两个文件,一个用来管理空闲块的位置图文件,一个是根目录文件。

2.Filesys_init()中调用了free_map_init(),在free_map_init()中调用bitmap_create()创建了位图,大小依据磁盘大小。

笔记本装系统蓝屏解决方法

笔记本装系统蓝屏解决方法

笔记本装系统蓝屏解决方法那是因为你没有SA TA驱动,可以用以下两种方法的任何一个进行安装系统!一、可以用番茄花园版的XP,它里面带SA TA驱动!选择带有SA TA驱动的系统安装模式进行安装!二、如果你的笔记本有软驱的花,可以在安装系统的开始时按F*(*是数字,具体我记不请了),然后系统安装程序扫描完硬件就会提示你插如SA TA驱动,安装完驱动以后就可以继续安装系统了!当然了,现在机器上有软驱的情况太少了,我建议你还是选择番茄花园版的XP我建议你使用上面的两种方法中的一个,如果你一定要设置BIOS,下面的资料你可参考参考!有些新笔记本装系统就蓝屏,那是因为新笔记本一般是sata硬盘,xp默认是不支持sata硬盘,所以会蓝屏,下面是解决方法。

一、可以用番茄花园版的XP,它里面带SA TA驱动!选择带有SA TA驱动的系统安装模式进行安装!二、设置bios,调整成ide兼容模式关于BIOS设置SA TA串口硬盘bois设置随着i865、i875、KT600等支持SA TA串口硬盘的主板的逐步普及,越来越多的人装机时选择了SA TA硬盘。

但是由于SA TA硬盘有别于并口PA TA硬盘,其安装设置部分会不同。

如果设置没搞清楚,在以后的使用中很可能出现问题,所以本文会从BIOS设置(重点部分,是后面几项的基础),分区,安装系统三个方面讲解SA TA硬盘的使用问题,其中还会说明一下SA TA硬盘与旧有并口硬盘共存的注意事项。

一、BIOS设置部分由于各家主板的BIOS不尽相同,但是设置原理都是基本一致的,在此只介绍几种比较典型的BIOS设置,相信读者都能够根据自己主板BIOS的实际情况参考本文解决问题。

1.南桥为ICH5/ICH5R的主板先以华硕的P4C800为例,这款主板芯片组为i865PE,南桥为ICH5/ICH5R。

进到BIOS后,选择Main下的IDE Configuration Menu,在Onboard IDE Operate Mode下面可以选择两种IDE操作模式:兼容模式和增强模式(Compatible Mode和Enhanced Mode)。

安装配置pintos

安装配置pintos

安装过程4.安装bochsBochs和pintos下载到ubuntu系统下的home/qing(变成你的用户名)打开终端(应用程序→附件→终端),输入命令:sudo passwd root,系统提示你输入root用户的新密码,输入两次后成功激活root用户,以后你就可以用root用户登陆了。

通过终端进入bochs所在的位置:cd /home/qing(最前面加/,表示绝对路径)解压bochs:tar zxvf bochs-2.4.5.tar.gz解压后,从位置→计算机→file system→home→qing,可以看到文件已经被解压成为文件夹接下来按照如下操作:进入bochs解压后的文件夹:cd bochs-2.4.5配置bochs:./configure –enable-gdb-stub(注意最前面的点)常见错误:1.configure: error: C++ preprocessor "/lib/cpp" fails sanity check解决方法:联网状态下在终断输入sudo aptitude install build-essential2. X windows gui was selected, but X windows libraries were not found.",解决方法:联网状态下在终端输入sudo apt-get install libx11-devsudo apt-get install xserver-xorg-devsudo apt-get install xorg-dev(分条执行)编译:make(注意编译后有没有error信息,如果有根据提示安装某些包后,重新编译)安装:sudo make installBochs安装完了。

5.下面我们安装和运行pintos首先和bochs一样,进入所在的位置,解压解压后进入pintos/src/threads,编译编译后,进入build目录,运行测试用例alarm-multiple注:按图中的输入命令,若想要直接用pintos命令,请先配置环境变量(见7.配置环境变量)你将看到如下界面6.下面学习用gdb来调试pintos输入如下命令:../../utils/pintos –gdb -s -- run alarm-multiple(注意run和前面的横杠之间有空格)(配置好环境变量后可直接用pintos命令)终端中显示等待连接。

番茄花园WindowsXPProSP3V1 0

番茄花园WindowsXPProSP3V1 0

a.自动安装 解压ISO目录下的WINDOWS\TVOA到硬盘根目录, 比如d:\tvoa,然后运行autorun.exe就可以进行安装。 安装之前需要见格式化C盘,以免垃圾文件存在。
更新日志
新的XP SP3来了,这里我给大家也制作了一款适合广大用户需要的XP SP3 集合版,根据会员意见和以往制作经验,采取DIY的安装模式来让大家体验 安装的乐趣,一张光盘为了适应大众的需求我们想了很多也为此做出了改进。 主要可选项目有一下一些 Windows Media Player播放器:可选 9或 11 Internet Explorer浏览器 :可选 6或 7 Flash Player 9播放器 :可选或不选 番茄花园主题 :可选或不选 桌面墙纸系列 :可选或不选 精美屏幕保护 :可选或不选 番茄花园主题 :可选或不选
番茄花园 WindowsXPProSP3V1 0
软件系统
01 系统特点
03 目录说明 05 更新日志
目录
02 修改明细 04 安装说明 06 含义
番茄花园WindowsXPProSP3V1.0安装程序是ISO可启动映像文件,推荐下载以后直接用NERO刻录映像文件, 然后用光盘安装;当然也可以解压到硬盘根目录安装,比如DOS下运行d:\i386\winnt.bat;或者可以WIN下或者 PE下运行光盘目录下的autorun.exe来安装。
安装说明
硬盘安装
光盘安装
PE安装
请用刻录软件,选择映像刻录方式来刻录ISO文件,刻 录之前请先校验一下文件的准确性,刻录速度推荐24X! a.自动安装 安装请设置光盘启动,然后选择1或3就可以自动安装! b.手动安装 安装请设置光盘启动,然后选择第2或4个就可以手动安装!
DOS下硬盘安装(需要DOS启动环境支持自动无人职守安装) a.自动安装 请提取ISO中WINDOWS\TVOA\I386目录到硬盘根目录 ,比如D:\I386,然后运行D:\I386\WINNT.BAT 就可以自动安装。 安装之前需要见格式化C盘,以免垃圾文件存在。 b.手动安装 请提取ISO中WINDOWS\TVOA\I386目录到硬盘根目 录,比如D:\I386,然后运行D:\I386\winnt.exe就可以 手动安装。安装之前需要先加载smartdrv.exe(I386中有) 安装之前需要见格式化C盘,以=原版+补丁+可选优化+可选安装功能+可选美化 为什么选番茄花园 +可以通过正版验证 +集合目前所有补丁 +可选安装漂亮主题 +可选安装必要优化 +多版本可选安装 +无人值守安装 +实用的增强软件DIY

新手安装指南——一步一步在Windows安装苹果雪豹系统

新手安装指南——一步一步在Windows安装苹果雪豹系统

[教程] 新手安裝指南:一步一步在Windows安裝蘋果雪豹系統本帖最後由samsonwtsui 於2009-12-20 12:09 編輯12/17更新,解釋了從光碟提取HFS+的意思,遠景最近換管理層了?編輯不相容Safari,PM還要PB幣,腦袋進水,我都不知道還能回復多少個人了。

09年8月底,蘋果正式發佈了新一代Mac OS X Snow Leopard操作系統。

蘋果操作系統一直在用戶友好度和安全穩定性方面廣受好評。

蘋果操作系統只允許在蘋果電腦上面安裝和使用。

和Windows不一樣,要在PC上安裝,需要一系列的模擬和破解。

破解安裝的過程很繁瑣而具有挑戰性,以下是安裝10A432雪豹的PC安裝指南,附帶25張圖片幫助說明,沒有遠景ID的朋友可以打開鏈接查看。

請準備必要的東西:配備Windows操作系統而且能夠上網的PC雪豹安裝光碟dmg鏡像檔(10A432正式零售版MD5校驗碼是bcd4957b2f86216dddc8f1472c20f098)23G的可用空間你的勇氣和耐性這個指南可能最適合從來都沒在PC上安裝過蘋果系統的朋友,因為你不需要外加USB鍵盤滑鼠不需要啟動U盤不需要DVD刻錄機(如果你已經下載有鏡像甚至不需要光驅)不需要第二塊硬碟和GPT分區表不需要另外一個正常運轉的蘋果系統(破解操作全都可以在Windows完成,不需要另外的平臺)不需要輸入一句又一句的命令行。

全過程快速預覽:第一步,縮小當前分區,為雪豹和安裝盤騰出空間第二步,加載dmg到分區並修改第三步,配置開機引導程式第四步,使用蘋果光碟鏡像安裝雪豹第五步,啟動雪豹第六步,安裝後操作為方便安裝,全過程需要的檔都可以在5樓提供的連接下載。

第一步:縮小現有分區卷雪豹使用自己的檔系統,HFS+,不相容Windows的NTFS檔系統,這個指南需要2個HFS+分區完成安裝任務,其中一個大小是6.3GB,用來放雪豹安裝光碟,另一個用來放雪豹操作系統,大小是20GB(按照自己需要增減,操作系統本身就占了約4.5GB)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Project 4 FileSystem作者:电子科技大学2014.2.7文件系统是操作系统的五大功能模块之一,主要实现操作系统对程序、数据、设备等的管理。

一、当前pintos文件系统的功能当前pintos文件系统已经实现了基本的文件创建删除功能。

文件是固定大小,连续存放的。

(1)文件在磁盘的存储方式:每个文件都有一个disk_inode存放在磁盘的一个扇区上,其结构如下:struct inode_disk{block_sector_t start; //文件数据每一个起始块off_t length; //文件长度。

unsigned magic; //uint32_t unused[125];};现在pintos文件是连续的,而且在创建时指定其大小后,再不能改变大小。

由起始扇区和文件大小就能找到所有文件数据。

目录也是一个文件,只是其容中都存放如下结构:struct dir_entry{Block_sector_t inode_sector; //文件inode_disk 所在扇区。

Char name[NAME_MAX+1];Bool in_use;};(2)磁盘空闲空间管理方式。

空闲空间是用位图来表示的。

其中位图也是一个文件,其disk inode存放在Sector 0.位图文件大小显然与磁盘大小有关,用一个位表示一个扇区是否被分配,一个扇区512字节,一个扇区作为一个物理块,创建一个2M的磁盘,有1024*1024*2/512bit=4096bit= 4096/8=512Byte。

(3)文件系统初始化过程:在init.c:main()函数中调用了filesys_init();1. 在filesys_init()中,初始化了bitmap,而且对磁盘进行了格式化。

其中格式化就是创建了两个文件,一个用来管理空闲块的位置图文件,一个是根目录文件。

2.Filesys_init()中调用了free_map_init(),在free_map_init()中调用bitmap_create()创建了位图,大小依据磁盘大小。

而且标记了0 1两个扇区为已经分配,作为free_map_file的disk_inode空间和根目录文件的disk_inode空间。

此时free_map只是在存中。

3.Filesys_init()中又调用了do_format()在do_format()中:调用了free_map_create(),创建了free_map_file,即一个文件,其disk_inode已经在上面分配了,再分配文件大小即可,这是由调用inode_create函数来实现的。

创建这个文件时显然需要分配磁盘空闲块,就从在存中的free_map位图中分配就可以。

文件创建好了之后,打开文件,把存中的位图free_map写到磁盘上,这是调用bitmap_write()实现的,本质还是用file_write()实现的。

File_write()是通过inode_write_at()写磁盘的。

在do_format()中还创建根目录文件,ROOT_DIR_SECTOR已经标记了,分配文件所需要的空间就行了。

4. Filesys_init()调用了free_map_open()把free_map读入存。

其实就是打开上面创建的free_map文件,读数据入存。

直到系统关闭时才将free_map写回到磁盘上。

首先在存中建立了磁盘的位图,标记了根目录和free_map本身的disk_inode结构扇区。

上面的存free_map立就保证创建文件时可以分配磁盘空间了。

而inode_create()中就需要调用free_map_allocate()来获取空闲物理块。

如果不格式化,则以前必然格式化过,直接读入free_map就行。

(4)目录创建过程。

Pintos原来已经实现了创建目录的功能,但是只创建根目录,而且根目录只能包含16个文件,即16个dir_entry结构。

目录本质也是一个文件,根目录是特殊的文件,在filesys.h中有宏定义:#define ROOT_DIR_SECTOR 1.在ROOT_DIR_SECTOR中,也就是第1个扇区中存放了根目录的disk_inode.上面已经提到了,在格式化时创建了根目录。

(5)文件打开过程。

调用filesys_open().每个打开的文件在在都维护了一个唯一的数据结构inode(为了与disk_inode区别,这个叫memory inode).以下是memory inode结构:Struct inode{Struct list_elem elem;Block_sector_t sector;Int open_cnt;Bool removed;Int deny_write_cnt;Struct inode_disk data;};打开一个文件显然就是在存中创建一个inode结构,其中struct inode_disk data保存了该文件对应的磁盘中的inode. 如果此文件已经打开了,则只需要增加open_cnt的值,不用再创建一个inode. 这些inode通过一个链表链结到一起的,在filesys_init()中初始化了这个链表。

具体过程:调用filesys_open(const char filename); 首先打开根目录,然后在根目录中依据filename查找文件。

如果找到了,也就是找到了此文件对应的struct dir_entry结构,里面记录了文件disk_inode, disk_inode中记录文件数据起始位置和文件大小,这就可以读写文件了。

当然,还需要建立文件对应的memory inode.其中data就是此文件的disk_inode.通过filesys_open()只能得到文件的inode. 如果此文件是普通文件,则调用fileopen(inode)把inode包装成struct file结构;如果是目录就调用dir_open把inode包装成struct dir.Struct file结构如下:Struct file{Struct inode *inode;Off_t pos;Bool deny_write;};(6)文件的创建过程.创建一个文件要有文件名和文件大小,每一个文件在磁盘中都有一个struct disk_inode 结构,每个文件和目录都要在一个目录下,在目录文件中,struct dir_entry中记录了每个该目录下的文件的文件名,以及每个文件disk_inode所在扇区号。

具体是通过调用filesys_create(const char *name,off_t initial_size)实现的.首先调用struct dir *dir =dir_open_root()打开根目录。

以下struct dir结构。

Struct dir{Struct inode *inode;Off_t pos}; 本质就是一个文件,读写目录与读写普通文件没有区别。

然后调用free_map_allocate分配一个扇区sector作为新文件的disk_inode.再调用inode_create(sector,initial_size)分配文件所需要磁盘空间,分配的空间是连续的扇区。

最后创建一个struct dir_entry结构,把文件名和其sector填入其中,在目录中找一个位置放入就可以了。

(7)文件的读写。

调用filesys_open()打开文件,这就得到了struct file结构,如下:些结构记录了当前文件指针位置pos。

File_read() file_write()分配是通过inode_read_at()和inode_write_at()实现的。

二、对disk_inode的改进当前pintos文件系统限制很大。

文件需要连续存储,这会导致大量磁盘碎片。

文件大小固定,不能动态增长文件,只有一个目录。

这里主要把连续存储方式改为了linux中三级索引结构,而且可以动态增长文件,可以创建子目录。

三级索引结构:三级索引:128*128*128*512=1GB总大小1GB8M72K通过修改struct disk_inode结构来实现三级索引结构。

修改过的disk_inodeStruct inode_disk{Off_t length; //文件长度Uint32_t blocks[BLOCK_NUM]; //三级索引区Unsigned isdir; //此文件是不是目录Unsigned magic;Uint32_t unused[110];};修改inode_create()Inode_read_at()Inode_write_at()三个函数即可。

空闲磁盘块依然用位图管理。

可以用free_map_allocate()获得一个空闲物理块。

用free_map_release()来释放物理块。

只用写文件才有可能增长一个文件的大小。

读写文件一般是给出.1.改变了disk_inode, 自然要从inode_create开始入手。

代码见附录。

因为要区分目录和普通文件,所以对原来的inode_create进行了扩展,改为了boolinode_create_ex (block_sector_t sector, off_t length,uint32_t isdir);增加了isdir参数。

重新定义了一个函数:bool inode_create(block_sector_t sector,off_t length){return inode_create_ex(sector,length,0);}用这个来代替原来的inode_create。

Inode_create执行时文件的disk_inode已经分配了,只需要分配文件数据空间,这里并不从free_map中分配空间,只是简单的把索引初始化为0。

新创建的文件容应为全0,所以调用了inode_write_at()来把文件容写为全0;在写的过程中如果发现空间未分配,则会分配。

2.读写文件读写文件时会给出文件指针偏移offset和要读写的大小。

需要根据offset来确定要读写的扇区,通过上面的公式可以计算出扇区号。

计算代码见附录。

定义如下结构:struct PosInfo{uint16_t lev; //索引级别uint32_t off; //数据扇区部偏移uint32_t sn[4]; //sn[i]表示i级索引块的扇区号uint32_t np[4];//np[i]表示i级索引块的偏移.};根据offset可以计算出offset在几级索引中----lev最后的数据块中的偏移-------off举例:如果offset=215364 size=865 buff=…要从文件215364字节处读取865字节到buff中。

相关文档
最新文档