操作系统实验报告3606.pdf

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

操作系统原理课内实验报告

实验一:用户接口实验

一.实验目的

1.理解面向操作命令的接口Shell。

2.学会简单的shell编码。

3.理解操作系统调用的运行机制。

4.掌握创建系统调用的方法。

二.实验内容

1.控制台命令接口实验

理解面向操作命令的接口shell和进行简单的shell编程。

2.系统调用实验

理解操作系统调用的运行机制

三.实验步骤

添加系统调用

1.Linux-3.0.tar.bz2拷贝到/usr/src目录下——命令:cplinux-3.0.tar.bz2

/usr/src/

2.打开终端,获得root权限——命令:sudo–s

3.进入/usr/src目录——命令:cd/usr/src

4.解压linux源码——命令:tarxvzflinux-3.0.tar.bz2

5.进入目录linux-3.0.5——命令:cdlinux-3.0

6.添加系统调用——:geditkernel/myservice.c在文本编辑器中添加

#includelinux/kernel.h

#includelinux/linkage.h

asmlinkagevoidsys_mycall()

{{

return;

}

-1-

7.修改kernel/Makefile添加生成myservice.c添加到Makefile的编译规则中:

obj-y+=myservice.o

8..修改arch/x86/include/asm/unistd_32.h,添加以下内容:

#define__NR_mycallSYS_ID//SYS_ID表示新添加系统调用

的调用号

并修改文件中的NR_syscalls,将其值增加1

9..修改arxh/x86/include/asm/syscalls.h添加以下内容:

asmlinkagevoidsys_mycall();

10.修改arch/x86/kernel/syscall_table_32.S,添加以下内容:

.longsys_mycall

11.配置内核(仅仅修改localversions即可)——命令:makemenuconfig

12.编译内核——命令:make–j4bzImage(开4个线程编译)

13.编译内核模块——命令:make–j4modules

14.安装内核模块——命令:makemodules_install

15.安装内核——命令:makeinstall

16.重启系统,在系统选择页面选择进入自己编译的linux-3.0内核

17.在桌面建立测试的C程序test.c程序内容如下:

#includestdio.h

intmain(intargc,char*argv[])

{

syscall(SYS_ID);//SYS_ID表示新添加系统调用的调用号

return0;

}

18.编译程序——gcctest.c–oa.out

19.运行程序——./a.out

20.查看内核日志(printk的输出信息在内核日志中):dmesg

-2-

四.实验结果

1.编译内核结果成功

2.添加系统调用结果

五.实验小结

这次实验过程比较坎坷,起初觉得在虚拟机中安装linux比较方便所以就

在虚拟机中做的实验可是在重启系统时无法选择系统,总是进入到原来的内

核,自己以为编译内核出了问题所以就编译了好几次内核,可是结果都是一

样的。后来又在将linux直接装在计算

文档评论(0)

135****5548 + 关注
官方认证
内容提供者

各类考试卷、真题卷

认证主体社旗县兴中文具店(个体工商户)
IP属地河南
统一社会信用代码/组织机构代码
92411327MAD627N96D

1亿VIP精品文档

相关文档