- 1、本文档共41页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
西安交大操作系统课内实验指导书
操作系统原理课内实验指导书
实验一:用户接口实验
准备知识
注意:内核编译和系统调用添加部分请参考共享的其他相关资料,实验指导书的内容多有错谬之处。亦可自行网上有哪些信誉好的足球投注网站相关教程。
为了使用户通过操作系统完成各项管理任务,操作系统必须为用户提供各种接口来实现人机交互。经典的操作系统理论将操作系统的接口分为控制台命令和系统调用两种。前者主要提供给计算机的操作人员对计算机进行各种控制;而后者则提供个程序员,使他们可以方便地使用计算机的各种资源。
控制台命令接口
操作系统向用户提供一组控制台命令,用户可以通过终端输入命令的方式获得操作系统的服务,并由此来控制自己作业的运行。一般来讲,控制台命令应该包含:一组命令、终端处理程序以及命令解释程序。
bash的由来
当登录Linux或者打开一个xterm时,当前默认的shell就是bash。Bash是GNU Project的shell。GNU Project是自由软件基金会(Free Software Foundation)的一部分。它对Linux下的许多编程工具负责。Bash(Bourne Again Shell)是自由软件基金会发布的Bourne shell的兼容程序。它包含了其他有些shell的许多良好的特性,功能非常的全面。很多Linux版本都供bash。
bash的大致原理
bash处理自己的脚本时,先找到需要处理的命令名称,进而在当前用户的默认命令目录中找到对应的命令,这些默认目录一般是/usr/bin、/bin或 /sbin。在执行这些命令时,先使用进程创建系统调用fork(),在使用exex()来执行这些命令。
建立bash脚本
编辑文件
可以用最熟悉的编辑器来编辑这个文本文件,比如文件名为script,在shell下输入:
$ vi script进入vi编辑器,在编辑器中输入以下内容
#!/bin/bash
echo Hello World!
然后保存,退出。
测试脚本。
使用指令:
$$source script
更改脚本属性
使用指令:
$chmod a+x script
将脚本程序设置为可执行。
执行脚本
使用指令:
$./script
关键字参考
echo 在终端上显示
bash 特殊变量1~9,保存当前进程或脚本的前9个参数。
ls 列举目录
wc 统计数量
function 定义函数
2.系统调用
系统调用是操作系统为程序员提供的接口服务。使用系统调用,程序员可以更充分的利用计算机资源,使编写的程序更加灵活,功能更加强大。程序员在对系统充分了解的情况下甚至可以订做系统调用,实现那些非专业程序员所难以实现的功能。
添加源代码
第一个任务是编写添加到内核的源程序,即添加到内核文件中的一个函数。该函数的名称应该是在新的系统调用名称之间前加上sys_标志。假设新加的系统调用为foo(),功能为原值返回输入的整型数。格式为int foo(int iNumber),返回的值就是出入的参数。在/usr/src/linux/kernel/sys.c文件中添加源代码,如下所示:
asmlinkage int sys_foo(int x)
{ printf(“%d\n”,x);
}
注意:目录“/usr/src/linux“是linux各个版本的统称,它因系统内核的版本不同而名称不同。例如,当前操作系统是Linux7.1器内核四Linux-2.4.2,所以在”usr/src”目录下有两个文件:Linux-2.4和Linux-2.4.2,其中Linux-2.4是Linux-2.4.2的连接文件,程序员可以进入任何一个目录,它对内核的修改都是一样的。
连接新的系统调用
添加新的系统调用之后,下一个任务是让Linux内核的其余部分知道该程序的存在。为了从已有的内核程序中增加新函数的链接,需要进行下面的操作:
进入目录/usr/src/linux/include/asm-i386/,打开文件unistd.h。这个文件包含了系统调用的清单,用来给每个系统调用分配一个唯一的号码。
系统调用号的定义格式如下:
#define_NR_name NNN
其中,name以系统调用名称代替,而NNN是该系统调用对应的号码,应该将新的系统调用名称放到清单的最后,并给它分配已经用到的系统调用号后面的一个号码,比如:
#define _NR_foo 222
以上的系统调用号便是222。Linux内核自身用的系统调用号已经用到了221了。如果读者还要自行增加系统调用,就必须从223开始。
进入/usr/src/linux/arche/ i386/kernel/,打开文件entry.S。该文件中有类似下面的清单:
ENTRY(sys
文档评论(0)