西安交大操作系统课内实验指导书-免费

西安交大操作系统课内实验指导书-免费

ID:14529213

大小:1.34 MB

页数:41页

时间:2018-07-29

西安交大操作系统课内实验指导书-免费_第1页
西安交大操作系统课内实验指导书-免费_第2页
西安交大操作系统课内实验指导书-免费_第3页
西安交大操作系统课内实验指导书-免费_第4页
西安交大操作系统课内实验指导书-免费_第5页
资源描述:

《西安交大操作系统课内实验指导书-免费》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、操作系统原理课内实验指导书实验一:用户接口实验准备知识注意:内核编译和系统调用添加部分请参考共享的其他相关资料,实验指导书的内容多有错谬之处。亦可自行网上搜索相关教程。为了使用户通过操作系统完成各项管理任务,操作系统必须为用户提供各种接口来实现人机交互。经典的操作系统理论将操作系统的接口分为控制台命令和系统调用两种。前者主要提供给计算机的操作人员对计算机进行各种控制;而后者则提供个程序员,使他们可以方便地使用计算机的各种资源。1.控制台命令接口操作系统向用户提供一组控制台命令,用户可以通过终端输入命令的方式获得操作系统的服务,并由此来控制

2、自己作业的运行。一般来讲,控制台命令应该包含:一组命令、终端处理程序以及命令解释程序。1)bash的由来当登录Linux或者打开一个xterm时,当前默认的shell就是bash。Bash是GNUProject的shell。GNUProject是自由软件基金会(FreeSoftwareFoundation)的一部分。它对Linux下的许多编程工具负责。Bash(BourneAgainShell)是自由软件基金会发布的Bourneshell的兼容程序。它包含了其他有些shell的许多良好的特性,功能非常的全面。很多Linux版本都供bash

3、。2)bash的大致原理bash处理自己的脚本时,先找到需要处理的命令名称,进而在当前用户的默认命令目录中找到对应的命令,这些默认目录一般是/usr/bin、/bin或/sbin。在执行这些命令时,先使用进程创建系统调用fork(),在使用exex()来执行这些命令。3)建立bash脚本Ø编辑文件可以用最熟悉的编辑器来编辑这个文本文件,比如文件名为script,在shell下输入:$viscript进入vi编辑器,在编辑器中输入以下内容#!/bin/bashechoHelloWorld!然后保存,退出。Ø测试脚本。使用指令:$$sourc

4、escriptØ更改脚本属性使用指令:$chmoda+xscript将脚本程序设置为可执行。Ø执行脚本使用指令:$./script1)关键字参考echo在终端上显示bash特殊变量1~9,保存当前进程或脚本的前9个参数。ls列举目录wc统计数量function定义函数2.系统调用系统调用是操作系统为程序员提供的接口服务。使用系统调用,程序员可以更充分的利用计算机资源,使编写的程序更加灵活,功能更加强大。程序员在对系统充分了解的情况下甚至可以订做系统调用,实现那些非专业程序员所难以实现的功能。1)添加源代码第一个任务是编写添加到内核的源程序

5、,即添加到内核文件中的一个函数。该函数的名称应该是在新的系统调用名称之间前加上sys_标志。假设新加的系统调用为foo(),功能为原值返回输入的整型数。格式为intfoo(intiNumber),返回的值就是出入的参数。在/usr/src/linux/kernel/sys.c文件中添加源代码,如下所示:asmlinkageintsys_foo(intx){printf(“%d”,x);}注意:目录“/usr/src/linux“是linux各个版本的统称,它因系统内核的版本不同而名称不同。例如,当前操作系统是Linux7.1器内核四L

6、inux-2.4.2,所以在”usr/src”目录下有两个文件:Linux-2.4和Linux-2.4.2,其中Linux-2.4是Linux-2.4.2的连接文件,程序员可以进入任何一个目录,它对内核的修改都是一样的。1)连接新的系统调用添加新的系统调用之后,下一个任务是让Linux内核的其余部分知道该程序的存在。为了从已有的内核程序中增加新函数的链接,需要进行下面的操作:(1)进入目录/usr/src/linux/include/asm-i386/,打开文件unistd.h。这个文件包含了系统调用的清单,用来给每个系统调用分配一个唯一

7、的号码。系统调用号的定义格式如下:#define_NR_nameNNN其中,name以系统调用名称代替,而NNN是该系统调用对应的号码,应该将新的系统调用名称放到清单的最后,并给它分配已经用到的系统调用号后面的一个号码,比如:#define_NR_foo222以上的系统调用号便是222。Linux内核自身用的系统调用号已经用到了221了。如果读者还要自行增加系统调用,就必须从223开始。(2)进入/usr/src/linux/arche/i386/kernel/,打开文件entry.S。该文件中有类似下面的清单:ENTRY(sys_cal

8、l_table).longSYSMBOL_NAME(sys_ni_syscall).longSYSMBOL_NAME(sys_exitl).longSYSMBOL_NAME(sys_fork)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。