操作系统实验指导书

发布时间 : 星期一 文章操作系统实验指导书更新完毕开始阅读

图2 编译驱动程序模块加载

如果加载成功,就会在/proc/devices中看到该设备: 使用命令:cat /proc/devices查看(如图3)

图3 查看设备

可以看到多了“254 string”一行,说明设备驱动模块加载成功。

接着创建设备结点,用户进程就可以通过这个结点访问到字符数组的虚拟设备了: 创建设备结点可以使用如下命令:mknod /dev/string c 254 0(如图4)

图4 创建设备结点

29

至此设备驱动模块加载完成;为了验证驱动程序的正确性,下面进行测试。 首先编译测试文件test.c,使用命令 :gcc test.c –o test.o (如图 5)

图5 编译测试程序

编译完成后生成一个test.o 的文件,运行该文件: 使用命令:./test.o (如图 6)

图6 运行测试程序

可以看到初始化时str[]为”Hello,Wrold!”,所以读取的字符串为Hello,Wrold!。此时按照提示输入新数值:“First,test!”情况如下:(如图 7)

图7 运行测试程序

可以看到用户输入字符串到设备后,程序可以读取到该字符串,说明驱动程序编写成功。 当不需要该设备驱动程序时可以卸载该驱动,使用命令为:rmmod string(如图8 )

30

图8 卸载驱动

此时驱动程序已被卸载,若再试图操作该设备则情况如下:(如图 9)

图9 测试驱动程序

可以看到提示“Device open failure”字样,这是因为驱动程序已被卸载,所以无法对设备进行操作,即打开设备文件失败。

31

实验六 添加一个文件系统

实验学时:2 实验类型:(验证) 一、实验目的

1. 深入理解操作系统文件系统原理

2. 学习理解Linux的VFS文件系统管理技术 3. 学习理解Linux的ext2文件系统实现技术 4. 设计和实现自定义文件系统 二、实验环境

WindowsXP+虚拟机+Linux 三、实验原理及相关知识

Linux支持那么多文件系统,它是怎么支持的,我们已经知道了,我们还知道了具体的文件系统ext2是怎么实现的,但是那些文件系统是怎么添加上去的呢?你是不是觉得手痒痒,想自己亲自实践一次,在Linux中添加一个文件系统呢?

本实验的主要目的,就是帮助读者自己添加一个文件系统,进一步理解Linux的文件系统及其实现。第1小节是对问题的描述,提出了我们实验的内容,要添加一个类似于ext2的自定义文件系统myext2。第2小节是解决方法,详细说明了要实现第1小节的目标,我们需要做那些具体的工作。第3小节是例子程序。 四、实验步骤

本实验的内容是要添加一个类似于ext2的自定义文件系统myext2。我们对myext2文件系统的描述如下:

1、myext2文件系统的物理格式定义与ext2基本一致,除了myext2的magic number是0x6666,而ext2的magic number是0xEF53。

2、myext2是ext2的定制版本,它只支持原来ext2文件系统的部分操作,以及修改了部分操作。

文件系统的定义和操作是完成了,但不要忘了,这样的一个文件系统如何去创建呢?我们最后还要提供一个创建myext2文件系统的工具:mkfs.myext2。

1. 解决方法

如何实现上面提出来的要求呢?首先从添加一个完全和ext2相同的myext2开始,然后再对myext2进行雕琢,逐步达到上一小节提到的要求:先修改magic number,再修改Linux对myext2文件系统的一些操作。最后是创建文件系统的工具mkfs.myext2的完成。

①添加一个和ext2完全相同的文件系统myext2

要添加一个与ext2完全相同的文件系统myext2,首先是确定实现ext2文件系统的内核源码是由哪些文件组成。Linux源代码结构很清楚地告诉我们:fs/ext2目录下的所有文件是属于ext2文件系统的。再检查一下这些文件所包含的头文件,可以初步总结出来Linux源代码中属于ext2文件系统的有:

fs/ext2/acl.c fs/ext2/acl.h

32

联系合同范文客服:xxxxx#qq.com(#替换为@)