- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
西安交通大学操作系统课内实验报告
西安交通大学
实验报告
——操作系统原理课内实验
姓名:
班级:
学号:
实验一 用户接口实验
一、 实验目的
1、理解并掌握面向操作命令的接口Shell,学会简单的shell编码。
2、理解操作系统调用的运行机制,掌握创建系统调用的方法。
二、 实验内容
1、 控制台命令接口实验
理解面向操作命令的接口shell和进行简单的shell编程。
该实验是通过“几种操作系统的控制台命令”、“终端处理程序”、“命令解释程序”和“Linux 操作系统的 bash”来让实验者理解面向操作命令的接口 shell 和进行简单的 shell 编程。
查看 bash 版本。
编写 bash 脚本,统计/my 目录下 c 语言文件的个数 2) 系统调用实验 。
2、系统调用实验
理解操作系统调用的运行机制。
该实验是通过实验者对“Linux 操作系统的系统调用机制”的进一步了解来理解操作 系统调用的运行机制;同时通过“自己创建一个系统调用 mycall()”和“编程调用自己 创建的系统调用”进一步掌握创建和调用系统调用的方法。
编程调用一个系统调用 fork(),观察结果。
编程调用创建的系统调用 foo(),观察结果。
自己创建一个系统调用 mycall(),实现功能:显示字符串到屏幕上。
编程调用自己创建的系统调用。
三、实验准备
为了使用户通过操作系统完成各项管理任务,操作系统必须为用户提供各种接口来实现 人机交互。经典的操作系统理论将操作系统的接口分为控制台命令和系统调用两种。前者主 要提供给计算机的操作人员对计算机进行各种控制;而后者则提供个程序员,使他们可以方 便地使用计算机的各种资源。
四、 实验步骤及结果
1、 控制台命令接口实验
(1)查看 bash 版本
操作:
在 shell 提示符下输入:
$echo $BASH_VERSION
结果:
版本是4.2.42(1)-release
(2)建立 bash 脚本,输出 Hello word
操作:
在编辑器中输入以下内容
#!/bin/bash
echo Hello World!
结果:
操作:
执行脚本 使用指令:
$./text
结果:
(3)编写 bash 脚本:统计/my 目录下 c 语言文件的个数
通过 bash 脚本,可以有多种方式实现这个功能,而使用函数是其中个一个选择。
在使用函数之前,必须先定义函数。 进入自己的工作目录,编写名为 count 的文件。
脚本程序:
#! /bin/bash
function count
{
echo –n Number of matches for $1: #接收程序的第一个参数
ls $1|wc –l #对子程序的第一个参数所在的目录进行操作
}
将 count 文件复制到当前目录下,然后在当前目录下建立文件夹,在 my 目录下建立几个 c 文件,以便用来进行测试。
添加系统调用
(1)编程调用一个系统调用fork(),观察结果。
源程序:
# include stdio.h
int main()
{
int iUid;
iUid=fork();
if(iUid==0)
for(;;) { printf(This is child process.\n);
sleep(1);
}
if(iUid0)
for(;;) {
printf(This is parent process.\n);
sleep(1);
}
if(iUid0) printf(Can not use system call.\n);
return 0;
}
实验结果:
(2)操作:
1. Linux-3.0.tar.bz2拷贝到/usr/src目录下——命令:cp linux-3.0.tar.bz2
/usr/src/
2. 打开终端,获得root权限——命令:sudo –s
3. 进入/usr/src目录——命令:cd /usr/src
4. 解压linux源码——命令:tar xvzf linux-3.0.tar.bz2
5. 进入目录linux-3.0.5——命令:cd linux-3.0
6. 添加系统调用——:gedit kernel/myservice.c 在文本编辑器中添加
#include linux/kernel.h
#include linux/linkage.h
asmlinkage void sys_mycall()
{
printk(KERN_INF
文档评论(0)