《《操作系统》课程实验报告--利用unix命令行解释程序.docx》由会员分享,可在线阅读,更多相关《《操作系统》课程实验报告--利用unix命令行解释程序.docx(6页珍藏版)》请在第一文库网上搜索。
1、操作系统课程实验报告实验题目:利用UniX命令行解释程序实验概述【实验目的及要求】实现一个unix命令解释程序1.在IinUX中实现一个命令执行程序doit,它执行命令行参数中的命令,之后统计1)命令执行占用CPU时间(包括用户态和系统态时间,以毫秒为单位),2)命令执行的时间,3)进程被抢占的次数,4)进程主动放弃CPU的次数,5)进程执行过程中发生缺页的次数2.在IinUX中实现一个简单的命令解释程序,功能要求:1)同时支持内部命令和外部命令,内部命令支持两个(cd、exit)2)支持后台命令提示:实验中可能用到的系统调用如下: fork()创建一个新进程 getrusage()一取得进程
2、的资源使用情况 gettimeofday()一取当前的时间 execve()装入一个程序并执行 wait()-等待子进程结束 ChdirO改变进程的工作目录 strtok()字符串解析3、提交源代码以及实验报告。【实验环境】操作系统:1inUXmint编译器:gcc实验内容【实验过程】一、实验步骤:1实验原理:1小实现一个Unix命令解释程序查看进程状态,系统调用函数为getrusage();查询getrusage()函数的用法及查看rusage数据结构);structrusage1ongrumaxrss;/maximumresidentsetsize1ongruixrss;/integra1
3、sharedmemorysize1ongruidrss;/integra1unshareddatasize1ongruisrss;/integra1unsharedstacksize1ongruminfIt;/pagerec1aims1ongrumajf1t;/pagefau1ts1ongrunswap;/swaps1ongruinb1ock;/b1ockinputoperations1ongruoub1ock;/b1ockoutputoperations1ongrumsgsnd;/messagessent1ongrumsgrcv;/messagesreceived1ongru_nsigna1
4、s;/signa1sreceived1ongru_nvcsw;/vo1untarycontextswitches1ongrunivcsw;/invo1untarycontextswitchesstructtimeva1ruutime;/usertimeusedstructtimeva1rustime;/systemtimeused1.2、 (2)system(string)包括forkexecwaitpid等操作1.3、 在IinUX中实现一个简单的命令解释程序whi1e(1)printCwd();memset(cmd,0,sizeof(cmd);getcmd(cmd);if(strncmp(
5、cmd,exitzz,4)-0)printf(zzshe11exitnzz);break;if(Strncmp(Cmd,cd,2)=0)/printf(,docdn);char*path=(char*)ma11oc(MAX_CMD_1EN+1);if(path=NU11)printf(z,outofmemerynzz);exit(0);)/*从cmd中取出cd的路径参数*/inti=2;找到第一个非空格的位置whi1e(cmdi=,)i+;intj=0;whi1e(cmdi!=,0,)pathj+=cmdi+;)pathj,0,;/printf(*pathis:%sn/z,path);chdir(path);printCwd();free(path);continue;)system(cmd);if(errno!=0)Printf(命令出错n%sn”,strerror(errno);printCwd();)2.实验结果与分析2.1 第个实验(2)一个she11的基本框架为Whi1e(1)Readcommand();If(forkO=0)Exec1p();)e1seWaitpid();)而函数system是这个过程的封装。(3)SyStem(“cd.);无法实现实验要求,需要自行编写函数解决。指导教师评语及成绩评语:成绩:指导教师签名:批阅日期: