ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:357.86KB ,
资源ID:29831161      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29831161.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《操作系统》课程设计说明书.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《操作系统》课程设计说明书.docx

1、操作系统课程设计说明书河南城建学院操作系统课程设计说明书 设计题目: UNIX/Linux文件系统分析 专 业: 计算机科学与技术 指导教师: 邵国金 耿永军 陈红军 班 级: 0614082 学 号: 061408261 姓 名: 贠炳森 同 组 人: 叶矿辉 、 陈 宇 计算机科学与工程系2011年1月 7日前 言在现在计算机更新如此迅速的时代要学好计算机软件技术,特别是操作系统的学习,不仅要努力学好课本上的基础知识,还要经常在图书馆看些有关这方面的书籍,而更重要的是要有足够的实践经验,也要注重和同学的交流,经常尝试性的做些小的操作系统,对自己技术的提升会有很大的帮助。同时,学习计算机操作

2、系统技术,除了需要刻苦努力外,还需要掌握软件和操作系统的原理与设计技巧。如何学习和掌握操作系统技术的原理与实际技巧呢?除了听课和读书之外,最好的方法恐怕就是在实践中练习。例如,自己设计一个小型操作系统,多使用操作系统,多阅读和分析操作源代码等。但由于我们的条件和学时有限,在理论学习过程中没有给同学们提供更多的实验机会。本操作系统课程设计,是给同学提供一个集中实验的机会。希望同学们通过该设计加深对所学习课程的理解。本设计是基于课程中学到的UNIX系统调用,使用操作系统环境是Red Hat Linux 9,言语开发环境是Linux的GNU C或C+。我做的课程设计是:Linux/Unix文件系统分

3、析。在Linux系统下,使用与文件相关的系统调用实现对物理设备文件的读写,参照Linux系统源代码以及Grub系统的源代码,对不同介质上的FAT格式文件系统进行分析。要求在Linux环境下设计出C语言程序,实现以下功能:1) 分析UNIX SysV/Linux系统引导记录的作用;2) 分析UNIX SysV/Linux的超级块及其结构,并建立相关数据结构,通过编程实现UNIX SysV/Linux文件系统内各部分的定位。3) 至少要实现对给定i节点文件的只读访问目 录一系统环境 51.1硬件环境 51.2软件环境 5二设计目的及要求 5三总体设计 7四详细设计 8五调试与测试 8六设计中遇到的

4、问题及解决方法 8七Linux/Unix文件系统分析源程序清单 97.1 头文件 97.2 示例程序 12八运行结果及分析 188.1 linux文件系统读取 188.2 UNIX文件系统读取 20九心得体会 21十参考文献 22Linux/Unix文件系统分析一系统环境1.1硬件环境cpu为pentium4双线程技术,频率为2.8GHZ,内存为256MB。1.2软件环境使用操作系统环境是Red Hat Linux 9,言语开发环境是Linux的 GNU C或C+。二设计目的及要求1、设计目的学习计算机软件技术,特别是计算机操作系统技术,除了需要刻苦努力外,还需要掌握软件和操作系统的原理与设计

5、技巧。如何学习和掌握操作系统技术的原理与实际技巧呢?除了听课和读书之外,最好的方法恐怕就是在实践中练习。例如,自己设计一个小型操作系统,多使用操作系统,多阅读和分析操作源代码等。但由于条件和学时有限,在理论学习过程中没有给提供更多的实验机会。本操作系统课程设计,是提供了一个集中实验的机会。应该通过该设计加深对所学习课程的理解。2、设计要求按软件工程的思想和方法进行设计,并把它作为一个工程来做。设计的每一步都有要形成文档,“成品”出来以后要有使用说明书和测试报告。最后按院方统一要求整理出软件实习“论文”,并分别以电子和书面文档的形式上交。最后,设计的程序要编译通过,并在验收时进行演示。本设计的内

6、容是基于操作系统原理教材的,但同学们必须对以前的C语言程序设计和数据结构等内容进行认真的复习。本设计是基于课程中学到的UNIX系统调用,使用操作系统环境是Red Hat Linux 9,言语开发环境是Linux的GNU C或C+。因此,要求课程设计者对Linux操作系统和GNU C或C+有一定的了解。3、设计内容在Linux系统下,使用与文件相关的系统调用实现对物理设备文件的读写,参照Linux系统源代码以及Grub系统的源代码,对不同介质上的FAT格式文件系统进行分析。要求在Linux环境下设计出C语言程序,实现以下功能:1)分析UNIX SysV/Linux系统引导记录的作用;2)分析UN

7、IX SysV/Linux的超级块及其结构,并建立相关数据结构,通过编程实现UNIX SysV/Linux文件系统内各部分的定位。3)至少要实现对给定i节点文件的只读访问。4)建议根据文件读取文件。文件系统必须完成下列工作:1) 为了合理的存放文件,必须对磁盘等辅助空间(或称文件空间)进行统一管理。在用户创新新文件时为其分配空闲区,而在用户删除或修改某个文件时,回收和调整存储区。2) 为了实现按名存取,需要有一个用户可见的文件逻辑结构,用户按照文件逻辑结构所给定的方式进行信息的存取和加工。这种逻辑结构时独立于物理存储设备的。3) 为了便于存放和加工信息,文件在存储和设备上应按一定的顺序存放。这

8、种存放方式被称为文件物理结构。4) 完成对存放在存储设备上的文件信息的查找。5) 完成文件的共享和提供保护功能。三总体设计 四详细设计分析UNIX SysV/Linux系统引导记录的作用 UNIX SysV/Linux系统引导记录存放于整个硬盘的第一个扇区,即0柱面0磁头l扇区,也叫做MBR(MaserBoot Reoofd)扇区,即主引导记录。 主引导记录在计算机引导过程中起着举足轻重的作用,计算机在按下电源键以后,开始执行主板BI0S程序,进行完一系列检测和配置以后,开始按BI0S中设定的系统引导顺序引导系统。BIOS执行完自己的程序后如何把执行投交给硬盘呢。交给硬盘后叉执行存储在哪里的程

9、序呢?其实,称为MBR的扇区中的一段代码起着举足轻重的作用。 MBR不随操作系统的不同而小同,即不同的操作系统町能会存在相同的MBR即使不同,MBR也不会夹带操作系统的性质,具有公共引导的特性。对文件系统的操作参看程序源代码。 实现对磁盘文件的访问,实现读写、查看文件系统的存取信息,对应各个i节点的相关信息,以及各个i节点的排列情况,使用户能清楚的看到文件系统磁盘结构。更加了解计算机文件系统的工作流程。五调试与测试(1)通过输入命令cc chengxu.c将文件编译为可执行文件a.out,通过输入命令./a.out加参数执行文件。(2)判断命令行参数进行操作,当参数为./a.out u s51

10、k .img时进行Linux文件系统读取,当参数为./a.out x xenix.img时进行Unix文件系统读取。(3)判断是否有第四个参数,若没有,则提示输入i节点号并实现对给定i节点文件的只读访问。六设计中遇到的问题及解决方法在设计程序时。我们按自己的理解编写了一个超级块和inode节点的结构体。然后放在主程序中去读取信息,但是运行的结果大出我们的预料。没有按我们的预期读出文件系统的信息,而是输出了一堆乱码,我们有经过查资料最后终于解决了问题,程序输出正常。 七Linux/Unix文件系统分析源程序清单7.1 头文件#include typedef _s16 s16;typedef _u

11、16 u16;typedef _s32 s32;typedef _u32 u32;typedef u16 sysv_ino_t;/* Block numbers are 24 bit, sometimes stored in 32 bit. On Coherent FS, they are always stored in PDP-11 manner: the least significant 16 bits come last.*/typedef u32 sysv_zone_t;/* Among the blocks . */* Xenix FS, Coherent FS: block 0

12、 is the boot block, block 1 the super-block. SystemV FS: block 0 contains both the boot sector and the super-block. */* The first inode zone is sb-sv_firstinodezone (1 or 2). */* Among the inodes . */* 0 is non-existent */#define SYSV_BADBL_INO 1 /* inode of bad blocks file */#define SYSV_ROOT_INO 2

13、 /* inode of root directory */* Xenix super-block data on disk */#define XENIX_NICINOD 100 /* number of inode cache entries */#define XENIX_NICFREE 100 /* number of free block list chunk entries */struct xenix_super_block u16 s_isize; /* index of first data zone */ u32 s_fsize;/ _packed2_; /* total

14、number of zones of this fs */ /* the start of the free block list: */ u16 s_nfree;/* number of free blocks in s_free, = XENIX_NICFREE */ u32 s_freeXENIX_NICFREE; /* first free block list chunk */ /* the cache of free inodes: */ u16 s_ninode; /* number of free inodes in s_inode, = XENIX_NICINOD */ sy

15、sv_ino_t s_inodeXENIX_NICINOD; /* some free inodes */ /* locks, not used by Linux: */ char s_flock;/* lock during free block list manipulation */ char s_ilock;/* lock during inode cache manipulation */ char s_fmod; /* super-block modified flag */ char s_ronly;/* flag whether fs is mounted read-only

16、*/ u32 s_time;/_packed2_;/*time of last super block update*/ u32 s_tfree;/ _packed2_; /* total number of free zones */ u16 s_tinode; /* total number of free inodes */ s16 s_dinfo4; /* device information ? */ char s_fname6; /* file system volume name */ char s_fpack6; /* file system pack name */ char

17、 s_clean; /* set to 0x46 when filesystem is properly unmounted */ char s_fill371; s32 s_magic; /* version of file system */ s32 s_type; /* type of file system: 1 for 512 byte blocks 2 for 1024 byte blocks 3 for 2048 byte blocks */;/* SystemV FS comes in two variants: * sysv2: System V Release 2 (e.g

18、. Microport), structure elements aligned(2). * sysv4: System V Release 4 (e.g. Consensys), structure elements aligned(4). */#define SYSV_NICINOD 100 /* number of inode cache entries */#define SYSV_NICFREE 50 /* number of free block list chunk entries */* SystemV4 super-block data on disk */struct sy

19、sv4_super_block u16 s_isize; /* index of first data zone */ u16 s_pad0; u32 s_fsize; /* total number of zones of this fs */ /* the start of the free block list: */ u16 s_nfree;/* number of free blocks in s_free, = SYSV_NICFREE */ u16 s_pad1; u32 s_freeSYSV_NICFREE; /* first free block list chunk */

20、/* the cache of free inodes: */ u16 s_ninode;/* number of free inodes in s_inode, = SYSV_NICINOD */ u16 s_pad2; sysv_ino_t s_inodeSYSV_NICINOD; /* some free inodes */ /* locks, not used by Linux: */ char s_flock; /* lock during free block list manipulation */ char s_ilock; /* lock during inode cache

21、 manipulation */ char s_fmod; /* super-block modified flag */ char s_ronly; /* flag whether fs is mounted read-only */ u32 s_time; /* time of last super block update */ s16 s_dinfo4; /* device information ? */ u32 s_tfree; /* total number of free zones */ u16 s_tinode; /* total number of free inodes

22、 */ u16 s_pad3; char s_fname6; /* file system volume name */ char s_fpack6; /* file system pack name */ s32 s_fill12; s32 s_state;/* file system state: 0x7c269d38-s_time means clean */ s32 s_magic; /* version of file system */ s32 s_type; /* type of file system: 1 for 512 byte blocks 2 for 1024 byte

23、 blocks */;/* SystemV/Coherent inode data on disk */struct sysv_inode u16 i_mode; u16 i_nlink; u16 i_uid; u16 i_gid; u32 i_size; union /* directories, regular files, . */ unsigned char i_addb3*(10+1+1+1)+1; /* zone numbers: max. 10 data blocks, * then 1 indirection block, * then 1 double indirection

24、 block, * then 1 triple indirection block. * Then maybe a file generation number ? */ /* named pipes on Coherent */ struct char p_addp30; s16 p_pnc; s16 p_prx; s16 p_pwx; i_p; i_a; u32 i_atime; /* time of last access */ u32 i_mtime; /* time of last modification */ u32 i_ctime; /* time of creation */

25、;/* * SystemV/V7/Coherent FS inode data in memory */struct sysv_inode_info u32 i_data10+1+1+1; /* zone numbers: max. 10 data blocks, * then 1 indirection block, * then 1 double indirection block, * then 1 triple indirection block. */;7.2 示例程序#include #include #include #include #include #include sysv

26、fs.h#include main(int argc, char *argv) int i,j,k,typ,fd,L=5; char *file_sys,*tmp,buff1024,buff_i1025; struct sysv4_super_block *sbu; struct xenix_super_block *sbx; struct sysv_inode *inode; int inode_size, inode_no,blk_size; int i_start,d_start; long ll; ulong i_add13; if(argcs_isize); printf(s_pad

27、0:%xn, sbu-s_pad0); printf(total number of zones of this fs:%xn,sbu-s_fsize); printf(/* the start of the free block list: */n); printf(number of free blocks in s_free, s_nfree); printf(s_pad1:%xt%udn, sbu-s_pad1, sbu-s_pad1); printf(/* the cache of free inodes: */n); printf(number of free inodes in s_inode, s_ninode); printf(s_pad2:%xn ,sbu-s_pad2); printf(some free inodes:n); printf(/* locks, not used by Linux: */n); printf(time of last super block update:%xn ,sbu-s_time); printf(total number of free zones:%xn ,sbu-s_tfree); pri

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1