欢迎来到天天文库
浏览记录
ID:59131878
大小:1.37 MB
页数:46页
时间:2020-09-12
《西安交通大学操作系统课内实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、西安交通大学实验报告——操作系统原理课内实验姓名:班级:学号:实验一用户接口实验一、实验目的1、理解并掌握面向操作命令的接口Shell,学会简单的shell编码。2、理解操作系统调用的运行机制,掌握创建系统调用的方法。二、实验内容1、控制台命令接口实验理解面向操作命令的接口shell和进行简单的shell编程。该实验是通过“几种操作系统的控制台命令”、“终端处理程序”、“命令解释程序”和“Linux操作系统的bash”来让实验者理解面向操作命令的接口shell和进行简单的shell编程。l查看bash版本。l编写bash脚本,统计/my目录下c语言文
2、件的个数2)系统调用实验。2、系统调用实验理解操作系统调用的运行机制。该实验是通过实验者对“Linux操作系统的系统调用机制”的进一步了解来理解操作系统调用的运行机制;同时通过“自己创建一个系统调用mycall()”和“编程调用自己创建的系统调用”进一步掌握创建和调用系统调用的方法。l编程调用一个系统调用fork(),观察结果。l编程调用创建的系统调用foo(),观察结果。l自己创建一个系统调用mycall(),实现功能:显示字符串到屏幕上。l编程调用自己创建的系统调用。三、实验准备为了使用户通过操作系统完成各项管理任务,操作系统必须为用户提供各种接
3、口来实现人机交互。经典的操作系统理论将操作系统的接口分为控制台命令和系统调用两种。前者主要提供给计算机的操作人员对计算机进行各种控制;而后者则提供个程序员,使他们可以方便地使用计算机的各种资源。四、实验步骤及结果1、控制台命令接口实验(1)查看bash版本操作:在shell提示符下输入:$echo$BASH_VERSION结果:版本是4.2.42(1)-release(2)建立bash脚本,输出Helloword操作:在编辑器中输入以下内容#!/bin/bashechoHelloWorld!结果:操作:执行脚本使用指令:$./text结果:(3)编写
4、bash脚本:统计/my目录下c语言文件的个数通过bash脚本,可以有多种方式实现这个功能,而使用函数是其中个一个选择。在使用函数之前,必须先定义函数。进入自己的工作目录,编写名为count的文件。脚本程序:#!/bin/bashfunctioncount{echo–n"Numberofmatchesfor$1:"#接收程序的第一个参数ls$1
5、wc–l#对子程序的第一个参数所在的目录进行操作}将count文件复制到当前目录下,然后在当前目录下建立文件夹,在my目录下建立几个c文件,以便用来进行测试。2、添加系统调用(1)编程调用一个系统调用fork
6、(),观察结果。源程序:#includeintmain(){intiUid;iUid=fork();if(iUid==0)for(;;){printf("Thisischildprocess.");sleep(1);}if(iUid>0)for(;;){printf("Thisisparentprocess.");sleep(1);}if(iUid<0)printf("Cannotusesystemcall.");return0;}实验结果:(2)操作:1.Linux-3.0.tar.bz2拷贝到/usr/src目录下—
7、—命令:cplinux-3.0.tar.bz2/usr/src/2.打开终端,获得root权限——命令:sudo–s3.进入/usr/src目录——命令:cd/usr/src4.解压linux源码——命令:tarxvzflinux-3.0.tar.bz25.进入目录linux-3.0.5——命令:cdlinux-3.06.添加系统调用——:geditkernel/myservice.c在文本编辑器中添加#include#includeasmlinkagevoidsys_mycall()
8、{printk(KERN_INFO"Hello,world!");return;}7.修改kernel/Makefile添加生成myservice.c添加到Makefile的编译规则中:obj-y+=myservice.o8..修改arch/x86/include/asm/unistd_32.h,添加以下内容:#define__NR_mycallSYS_ID//SYS_ID表示新添加系统调用的调用号并修改文件中的NR_syscalls,将其值增加19..修改arxh/x86/include/asm/syscalls.h添加以下内容:asmlink
9、agevoidsys_mycall();10.修改arch/x86/kernel/syscall_table
此文档下载收益归作者所有