湖南大学操作系统作业 (2).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统第二次作业 第三章 3.1 Describe the differences among short-term, medium-term,and long-term scheduling. 描述短程,中程和长程调度的区别 答:长程调度从作业池中选取进程,并装入内存开始执行,它的执行频率较慢,短程调度从准备执行的进程中选择进程并分配CPU时间片,这种调度方式必须频繁地为CPU分配新的进程,且有一定量的时间浪费在CPU的上下文切换上,而中程调度使用的是交换的策略,将进程从CPU竞争中移出,以降低多道程序设计的程度。被交换出的进程会保存信息,并在换入时继续执行 3.2 Describe the actions taken by a kernel to context-switch between pro-cesses. 描述系统内核在上下文切换时的动作 答:在执行上下文切换时,在某个进程的挂起时(由中断或系统调用引起),先保存该进程状态至该进程控制块PCB中,包括进程的状态,编号,程序计数器PC,寄存器等等,而在程序从挂起状态重新执行时(由中断或系统调用引起),需要从对应的PCB表中读取信息,并从上次中断处继续执行。 3.4 Using the program shown in Figure 3.24, explain what will be output at Line A. 使用3.24的程序,解释LINE A的可能输出 答:因为子进程会复制父进程的堆栈信息,在生成子进程前,堆栈中已经存放全局变量value=5的信息,然后子进程的修改只是在其独有堆栈中,而父进程的打印操作打印的是父进程的value值,故没有被修改过,为5 3.5 The correct producer-consumer algorithm in the ppt,allows only n-1 buffers to be full at any one time .Modify the algorithm to allow all buffers to be utilized fully. 课件中的代码只能存储n-1个缓存空间,要求修改代码实现所有缓存都能被利用 答:本题是一个数据结构问题,在上学期的数据结构课中有所探讨,对于一个顺序队列来说,队空和队满的判断条件其实都是front==rear,所以书上采取的措施是舍弃一个存储单元,当队列中只剩下一个单元时就认为队满。 本题有两个解决思路,分别是:1通过增加flag位修正队满条件 2 增加count值来判定队列中元素个数,我在此处使用方法1来完成对于代码的修改。 //使用flag记录最后一个对队列的操作,当判断头尾指针相等时,如果标志记录为删除,则队列空,如果标志记录上一个操作为插入,则队列满 int?flag=0;?//0代表空,1代表满,2代表不空不满 While(1){ ?//生产者 While (flag==1)?????????;?//do nothing //队列满 等待 buffer[in]=nextProduced;? in=(in+1)%BUFFER_SIZE; ?//否则,存入下一个空位,移动指针 if(in==out) flag=1; else flag=2; //如果生产之后in==out,则队满 }? While(1){ //消费者 ?While(flag==0)???????;?//do nothing //队空时无操作 nextconsumed=buffer[out]; ?out=(out+1)%buffer_size;? //否则,取出第一个信息,移动指针 if(in==out) flag=0; // 如果消费之后in==out 则队空 else flag=2; } } 第四章作业 4.1 Provide two programming examples in which multithreading does not provide better performance than a single-threaded solution. 举2个例子说明多线程不比单线程处理方式优良的情况 答:1 对于单核机器,执行一个具有两个线程的进程耗时要大于执行同一个线程两次,这是因为在线程的切换过程中有上下文切换的耗时,另一方面,线程的创建和销毁也有较多的耗时。 2 单核机器下,对于计算密集型的程序(即IO操作较少),多线程会囿于线程切换的耗时表现不如单线程 3 对于一个要求顺序很强的程序来说,比如对于一个文件的操作,要求先读,后写,这时如果采用多线程则会涉及到对于信号的保护,比如写的时候不能读,读的时候不能写等问题,所以这时

文档评论(0)

我思故我在 + 关注
实名认证
文档贡献者

部分用户下载打不开,可能是因为word版本过低,用wps打开,然后另存为一个新的,就可以用word打开了

1亿VIP精品文档

相关文档