2016西安交通大学操作系统实验报告.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2016西安交通大学操作系统实验报告

操作系统实验报告 实验一:用户接口实验 实验目的 实验内容 实验步骤 系统调用实验 首先将Linux-3.0.tar.bz2拷贝到/usr/src目录下——命令:cp linux-3.0.tar.bz2 /usr/src/ 进入/usr/src目录 ——命令:cd /usr/src 解压linux源码 ——命令:tar xvzf linux-3.0.tar.bz2 进入目录linux-3.0.5 ——命令:cd linux-3.0 添加系统调用gedit kernel/myservice.c 在文本编辑器中添加 #include linux/kernel.h #include linux/linkage.h asmlinkage void sys_mycall() { printk(KERN_INFO Hello, world!\n); return; }obj-y += myservice.o .修改arch/x86/include/asm/unistd_32.h,添加以下内容: #define __NR_mycall SYS_ID //SYS_ID表示新添加系统调用的调用号 并修改文件中的NR_syscalls,将其值增加1 修改arxh/x86/include/asm/syscalls.h添加以下内容: asmlinkage void sys_mycall(); 修改arch/x86/kernel/syscall_table_32.S,添加以下内容: .long sys_mycall 配置内核(仅仅修改local versions即可)——命令:make menuconfig 编译内核——命令:make –j4 bzImage(开4个线程编译) 编译内核模块——命令:make –j4 modules 安装内核模块——命令:make modules_install 安装内核——命令:make install 重启系统在系统选择页面选择进入自己编译的linux3.0内核 在桌面建立测试的C程序test.c #include stdio.h int main(int argc, char *argv[]) { syscall(SYS_ID); // SYS_ID表示新添加系统调用的调用号 return 0; } 编译程序——gcc test.c –o a.out 运行程序 查看内核日志(printk的输出信息在内核日志中):dmesg 实验结果 下图为添加系统调用结果 实验小结 实验四 实验目的 熟悉Ext文件系统的原理 根据Ext文件系统的数据结构和构建方法,自行实现一个简单的内存文件系统 实验内容 实验原理 引导块BootBlock 每个硬盘分区的开头1024字节,即0 byte至1023 byte是分区的启动扇区。存放由ROM BIOS自动读入的引导程序和数据,但这只对引导设备有效,而对于非引导设备,该引导块不含代码。这个块与ext2没有任何关系。 超级块SuperBlock 每个分区均有一个super block块,定义了文件系统的全局信息,包括块的大小,总块数,空闲块,索引结点数,各种位图和i节点表的地址和大小等信息。 数据块位图 这是ext2管理存储空间的方法。即位图法。每个位对应一个数据块,位值为0表示空闲,1表示已经分配。数据块位图定义为一个块大小。于是,一个组中的数据块个数就决定了。假设块大小为b 字节。可以区别的块数为b*8个 数据块 DataBlocks 每个组的数据最大个数是在块大小定义后就确定了的。所以组容量也就确定了。假设块大小为b 字节。那么组容量就确定为(b*8)*b 字节 若1块=4K,则组块大小=4K*8*4K=128M inode位图 与数据块位图相似,用来表示索引结点是否已经被使用。假设块大小为b字节,每个索引结点数据结构大小为128字节。最多可以有b*8个索引结点,索引结点表需要占用的存储空间大小为(b*8)*128字节。即(b*8)*128/b=8*128个块 inode表 索引结点表由若干个索引结点数据结构组成,需要占用若干个块。Ext2中的每个索引结点数据结构大小为128字节。每个索引结点即对应一个文件或是目录。是对其除文件名(目录名)以外的所有属性的描述。例如:文件类型,文件创建时间,访问时间,修改时间,文件所占数据块的个数,指向数据块的指针。其中,数据块指针是由15个元组的数据组成 四实验步骤运行结果 1. 根据要求编写源程序实验源代码见附录 2. 运行程序运行结果如图 根据提示输入结果如图 输入ls 列出根目录下的项目然后创建文件目录c 再输入ls观察是否创建成功 5.

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档