西安交通大学操作系统课内实验报告

2019-08-17 13:47

西安交通大学实验报告

操作系统实验报告

岳凡 2130505141 计算机36班

操作系统实验

实验一:用户接口实验 实验目的

1) 理解面向操作命令的接口Shell。 2) 学会简单的shell编码。 3) 理解操作系统调用的运行机制。 4) 掌握创建系统调用的方法。

操作系统给用户提供了命令接口和程序接口(系统调用)两种操作方式。用户接口实验也因此而分为两大部分。首先要熟悉Linux的基本操作命令,并在此基础上学会简单的shell编程方法。然后通过想Linux内核添加一个自己设计的系统调用,来理解系统调用的实现方法和运行机制。在本次实验中,最具有吸引力的地方是:通过内核编译,将一组源代码变成操作系统的内核,并由此重新引导系统,这对我们初步了解操作系统的生成过程极为有利。

实验内容

1) 控制台命令接口实验

该实验是通过“几种操作系统的控制台命令”、“终端处理程序”、“命令解释程序”和“Linux操作系统的bash”来让实验者理解面向操作命令的接口shell和进行简单的shell编程。

? 查看bash版本。 在 shell 提示符下输入: $echo $BASH_VERSION 我们的版本是4.3.42(1)-release

(2)建立 bash 脚本,输出 Hello word

在编辑器中输入以下内容 #!/bin/bash echo Hello World!

执行脚本使用指令: $./script

? 编写bash脚本,统计/my目录下c语言文件的个数

通过 bash 脚本,可以有多种方式实现这个功能,而使用函数是其中个一个选择。在使用函数之前,必须先定义函数。进入自己的工作目录,编写名为 count 的文件脚本程序: #! /bin/bash function count { echo

–n \

#接收程序的第一个参数

ls $1|wc –l }

#对子程序的第一个参数所在的目录进行操作

将 count 文件复制到当前目录下,然后在当前目录下建立文件夹,在 my 目录下建立几个 c 文件,以便用来进行测试 2) 系统调用实验

该实验是通过实验者对“Linux操作系统的系统调用机制”的进一步了解来理解操作系统调用的运行机制;同时通过“自己创建一个系统调用mycall()”和“编程调用自己创建的系统调用”进一步掌握创建和调用系统调用的方法。 ? 编程调用一个系统调用fork(),观察结果。

在应用程序中调用系统调用fork()非常简单,下面的程序可以很清楚的显示出有fork()系统调用生成了子进程,而产生的分叉作用:

# include

int main() {

int iUid; iUid=fork(); if(iUid==0)

for(;;) { printf(\

sleep(1);

} if(iUid>0) }

if(iUid<0) printf(\return 0;

for(;;) {

printf(\sleep(1);

}

程序运行结果:

? 编程调用创建的系统调用foo(),观察结果。 在内核源码中添加如下代码: asmlinkage int sys_foo(int x) { printf(“%d\\n”,x); }

编程调用创建的系统调用 foo(),观察结果。 #include

#include _syscall1(char*,foo,int,ret) main() {

int I,J; I=100; J=0; J=foo(I);

printf(\printf(\}

重新编译内核,编译成功后的内核版本如下:

? 自己创建一个系统调用mycall(),实现功能:显示字符串到屏幕上。 在内核源码中添加如下代码: #include asmlinkage long sys_newcall(int i) {

//printk(\ return(i*10); }

测试新的System_call CODE: vi test.c

? 编程调用自己创建的系统调用。


西安交通大学操作系统课内实验报告.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:铝合金压铸项目环境影响评价报告表 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: