电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOCX文档下载
分享到微信 分享到微博 分享到QQ空间

哈工大《操作系统》实验3

  • 资源ID:475812342       资源大小:102.49KB        全文页数:8页
  • 资源格式: DOCX        下载积分:15金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要15金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

哈工大《操作系统》实验3

2014级本科操作系统实验报告(实验 3)学生姓名曾帅学号1143710412院系软件学院任课教师范国祥实验TAXXX实验地点软件学院三楼实验室实验时间2016年05月26日星期四实验题目进程管理实验学时3学时实验目的:掌握Linux下的多进程编程技术;通过对进程运行轨迹的跟踪来形象化进程的概念;在进程运行轨迹跟踪的基础上进行相应的数据统计,从而能对进程调度算法进行实际的量化评价, 更进一步加深对调度和调度算法的理解,获得能在实际操作系统上对调度算法进行实验数据对比的直接 经验。实验内容及要求:(1) 基于模板“process.c”编与多进程的样本程序,实现如下功能:所有子进程都并行运行,每个子进程的实际运行时间一般不超过30秒;父进程向标准输出打印所有子进程的id,并在所有子进程都退出后才退出。(2) 在Linux 0.11上实现进程运行轨迹的跟踪。基本任务是在内核中维护一个日志文件/var/ process.log,把从操作系统启动到系统关机过程中所有进程的运行轨迹都记录在这一log文件中。(3) 在修改过的Linux0.11上运行样本程序,通过分析log文件,统计该程序建立的所有进程的等 待时间、完成时间(周转时间)和运行时间,然后计算平均等待时间,平均完成时间和吞吐量。可以自 己编写统计程序,也可以使用python脚本程序“stat_log.进行统计。(4) 修改Linux0.11进程调度的时间片,然后再运行同样的样本程序,统计同样的时间数据,和原 有的情况对比,体会不冋时间片带来的差异。实验过程描述、结果及思考:简要描述实验过程(含操作步骤及看到的结果)。(1) 在ubuntu下,利用系统提供的进程控制函数fork、wait系统调用编写多进程程序process.c,编译 运行,分析运行结果,之后开始修改linux0.11内核。(2) 在init/main.c中的m ain ()中添加创建日志文件/var/process.log的语句。需要在把log文件关联到文件 描述符3, 0 1 2分别是stdin stdout和stderr,按照如下方式修改:137 move to user mode() ;/* 切换到用户模式 */138 /*/139 setup(void *)&drive info);140 (void) open(,/dev/tty0",0 RDWR,®);/*建立文件描述符®和/dev/ttyO的关联*/141 (void) dup(0);一/*文件描述符 1也和/dev/ttyO关联*/142 (void) dup(0);/*文件描述符2也和/dev/ttyO关联*/143 (void) open("/var/process.log",0 CREAT10 TRUNC10 WRONLY,0666);145 if (!fork() /* we count on this going ok */146 init();(3) 向kernel/printk.c中添加日志打印功能,将以下代码添加到原文件中:14#include <linux/sched.h> 15#include <sys/stat.h>44454647464950static char logbufiiez*!; intfprlntk(ijrt fd, cxnsI char *fnrt,)va Iist args;int county struct file * file;: struct m incicte * inodejvaij&tarttargs. frrU:CDtint=w:s.prlntr(logbuT F fit r arg&h va_encHarg5.);if (fd < 3J严 即卑St训到5tck)ut或5t(kr,iff按出用5y5_wrltfi呵 *fSB59阴62«m_(Bpisisllii WsXnXt"'*push W讥 Wpop fsnf"push!pushl tlbufntH 严FWlnd&ws环境实说lugtiub 下同 */64"call sys writent" /注意对TWindows环境来说,足 sys write,下同 */65"addl $8,%espnt"66"popl %0ntM67'pop %fsH68:"r" (count)/rM (fd):"axM/cx"t"dx");6970else/*假定的描述符都与文件关联.事实上,还存在很多其它情况,这里并没有考虑*/7172if (!(file=task0->filpfd) /*从进程0的文件描述符表中得到文件句柄/73return 0;74inode=file->f_inode;7576asm ("push %fsntM77 "push %dsntM78"pop %fsnt"79”pushl %0ntw80“pushl $logbufntH81"pushl %lnt"82”pushl %2nt"83”call file writent"84858687888990“addl $12,%espnt"”popl %ent""pop %fs":"r" (count),"r" (file)/'r" (inode):"ax","cx"f"dx| return count;(4) 在kernel/fork.c、kernel/sched.c和kernel/exit.c中,找到正确的状态转换点,并添加合适的状态信息,把它输出到log文件之中。 fork.c的修改如下:92939495969713613713813914Q141p->start time = jiffies;/*在初始化f进稈的开始时间向log文件输出一条进程创建的log*/ fprintk(3, ,%ldt%ct%ldnM,last pid,N' Jiffies); /*/ p>tss.back link = 0; p->state = TASKRUNNING;/*输出一个进入就绪队列的log*/| fprintk(3,"%ldt%ct%ldn"flastpid,'J'Jiffies);/* do this last, just in case /return last pid;exit.c的修改如下:174175176177178179190191192193194195196197code = (*p)>exit code;:输出一条进稈迫出的Log*/fprintk(3f tt%ldt%ct%ldn",flag f'E1 Jiffies);release严p);current->state=TASK INTERRUPTIBLE;/*/*输出一条等待的Log*/if (current->pid!=0)fprintk(3,ldt%ct%ldn”疋urent>pid,*W'Jiffies); scheduleO;if (! (current->signal &= *(1«(SIGCHLD-1)sched.c的修改如下:11711811912&121122123124125if | (*pj& -_BL0CKABL£ L ( *p)-blotkfrd)丛(pl->state=TA$K_IWTffiWf>TIBLE)<->£tte=TA5K_RUNMIMG:y * + *+¥+ * 44*4+ *4*¥*4+-#* f户蹩出的Log* fprirrtk3, (*p)>pid, PJ' Jiffies);143144145146147148149150151152153154155156(*p)>counter = (*p)>counter » 1) + (*p)->priority;if(current->state = TASK RUNNING && current != tasknext) 严输出就缩的Log*/ ' fprintk(3,"%ldt%ct%ldn",current->pid,'J'Jiffies); if(current != tasknext)/*输出可运行的Log*/ fprintk(3,"%ldt%ct%ldn",tasknext->pid, R'Jiffies); /*/switchto(next);158 int159 160161162163164165166167168 sys pause(void)current->state = TASK INTERRUPTIBLE;/*检査并输出等待的Log*/if (current->pid != 0)fprintk(3,"%ldt%ct%ldn",current->pid,'W'Jiffies);schedule();return 0;179180181182183184185186187188189190191192193194p = current; current->state = TASK UNINTERRUPTIBLE; /*m *“*/厂检査并输出等待的Log*/ if (current>pid != 0) fprintk(3,%ldt%ct%ldn*'fcurrent->pid, 'W* jiffies);schedule。; if (tmp)tmp>state=0;严输出就纟耆的Log*/fprintk(3,M%ldt%ct%ldn"ftmp->pid,'J',jifties); /*/207208209210211212213214215216217218219220repeat:current->state = TASKINTERRUPTIBLE;/*检査并输出等待的Log*/if (current->pid != 0)fprintk(3,

注意事项

本文(哈工大《操作系统》实验3)为本站会员(鲁**)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.