湖南大学操作系统作业(2)_第1页
湖南大学操作系统作业(2)_第2页
湖南大学操作系统作业(2)_第3页
湖南大学操作系统作业(2)_第4页
湖南大学操作系统作业(2)_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、操作系统第二次作业第三章3.1 Describe the differences among short-term, medium-term,and long-term scheduling.描述短程,中程和长程调度的区别答:长程调度从作业池中选取进程,并装入内存开始执行,它的执行频率较慢,短程调度从准备执行的进程中选择进程并分配CPU时间片,这种调度方式必须频繁地为CPU分配新的进程,且有一定量的时间浪费在CPU的上下文切换上,而中程调度使用的是交换的策略,将进程从CPU竞争中移出,以降低多道程序设计的程度。被交换出的进程会保存信息,并在换入时继续执行3.2 Describe the act

2、ions 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的程

3、序,解释LINE A的可能输出答:因为子进程会复制父进程的堆栈信息,在生成子进程前,堆栈中已经存放全局变量value=5的信息,然后子进程的修改只是在其独有堆栈中,而父进程的打印操作打印的是父进程的value值,故没有被修改过,为53.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个

4、缓存空间,要求修改代码实现所有缓存都能被利用答:本题是一个数据结构问题,在上学期的数据结构课中有所探讨,对于一个顺序队列来说,队空和队满的判断条件其实都是front=rear,所以书上采取的措施是舍弃一个存储单元,当队列中只剩下一个单元时就认为队满。本题有两个解决思路,分别是:1通过增加flag位修正队满条件 2 增加count值来判定队列中元素个数,我在此处使用方法1来完成对于代码的修改。/使用flag记录最后一个对队列的操作,当判断头尾指针相等时,如果标志记录为删除,则队列空,如果标志记录上一个操作为插入,则队列满intflag=0;/0代表空,1代表满,2代表不空不满While(1)/生

5、产者While (flag=1);/do nothing/队列满 等待bufferin=nextProduced;in=(in+1)%BUFFER_SIZE;/否则,存入下一个空位,移动指针if(in=out) flag=1;else flag=2;/如果生产之后in=out,则队满While(1)/消费者While(flag=0);/do nothing/队空时无操作nextconsumed=bufferout;out=(out+1)%buffer_size;/否则,取出第一个信息,移动指针if(in=out) flag=0; / 如果消费之后in=out 则队空else flag=2; 第

6、四章作业4.1 Provide two programming examples in which multithreading does not provide better performance than a single-threaded solution.举2个例子说明多线程不比单线程处理方式优良的情况答:1 对于单核机器,执行一个具有两个线程的进程耗时要大于执行同一个线程两次,这是因为在线程的切换过程中有上下文切换的耗时,另一方面,线程的创建和销毁也有较多的耗时。2 单核机器下,对于计算密集型的程序(即IO操作较少),多线程会囿于线程切换的耗时表现不如单线程3 对于一个要求顺序很强

7、的程序来说,比如对于一个文件的操作,要求先读,后写,这时如果采用多线程则会涉及到对于信号的保护,比如写的时候不能读,读的时候不能写等问题,所以这时多线程的表现也会不如单线程。4.2 Describe the actions taken by a thread library to context switch between user-level threads.描述线程库在用户级线程上下文切换时的动作答:通过轻量级进程LWP,LWP表现为一种应用程序可以调度用户线程来运行的虚拟处理器,通过调用线程库中的函数,将用户级线程通过LWP和内涵线程建立起连接,我的理解是,用户线程通过LWP向内核线程

8、发送消息,内核线程接收消息并作出调度,将当前线程挂起并给予另一个线程CPU资源,这个信息也通过LWP传给另一个将要被切换至的线程,从而导致该线程得以运行。4.3 Under what circumstances does a multithreaded solution using multiple kernel threads provide better performance than a single-threaded solution on a single-processor system?什么情况下多核多线程比单核单处理器系统提供更好的表现?答:一个应用程序可能需要执行多个相似任

9、务,例如网页服务器接收用户关于网页,图像,声音的请求,一个忙碌的网页服务器可能有多个客户并发访问它,如果网页服务器作为传统单个线程的进程来执行,那么一次只能处理一个请求,这样客户必须等待很长的等待时间。4.5 Can a multithreaded solution using multiple user-level threads achieve better performance on a multiprocessor system than on a single-processor system?相比单处理器系统,多线程使用多用户线程的解决方案在一个多用户系统上面能够实现更好的表现吗

10、答:在多用户线程的多线程系统中,操作系统不能调度不同处理器上的其他用户进程的线程,这和多任务的初衷相违背,因此多处理器多用户线程无法获得性能提高。4.9 Write a multithreaded Java, Pthreads, or Win32 program that outputs prime numbers. This program should work as follows: The user will run the program and will enter a number on the command line. The program will then create

11、 a separate thread that outputs all the prime numbers less than or equal to the number entered by the user.编写多线程的java,pthreads或者win32程序输出素数,程序的功能如下:用户运行程序并输入数字指令,程序如何创建一个线程输出小于等于他的所有素数。答:整体代码结构和书上无异,只需要更改线程内的函数体即可,代码后附,以下为运行结果 传入参数均为100Win32程序运行环境 DEVC+ 5.11Java程序运行环境 Mars.2 Release (4.5.2)Win32代码#i

12、nclude#include#includeDWORD flag;DWORD WINAPI Prime(LPVOID Param)DWORD num =*(DWORD*)Param;printf(2 );for(DWORD i=3;i=num;i+ )flag=1; for(DWORD j=2;j=sqrt(i)+1;j+)if(i%j=0)flag=0;break; if(flag)printf(%d ,i);return 0; int main(int argc,char *argv)DWORD ThreadID;HANDLE ThreadHandle;int Param;if(argc!

13、=2)fprintf(stderr,未传参给main函数n);return -1;Param = atoi(argv1);if(Param2)fprintf(stderr,整数要大于2n); return -1;ThreadHandle = CreateThread(NULL,0,Prime,&Param,0,&ThreadID);if(ThreadHandle != NULL)WaitForSingleObject(ThreadHandle,INFINITE);CloseHandle(ThreadHandle);Java代码/* * author zhoudawei * version 创建

14、时间:2016年10月15日 下午8:48:01 * version 完成时间:2016年10月16日 上午11:57:01*/class PrimesThread implements Runnable/定义实现runnable接口的类private int num;private int primeNums;public PrimesThread(int num) if (num =2)System.out.print(2 );for(int x=2;xnum;x+)int flag=1;for(int i=2;iMath.sqrt(x)+1;i+)if (x%i=0)flag=0;if (flag=1)Sys

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论