文档详情

操作系统第三章习题.docx

发布:2019-01-07约3.72千字共6页下载文档
文本预览下载声明
第三章习题 3.1 短期调度:在内存作业中选择就绪执行的作业,并为他们分配CPU。? 中期调度:作为一种中等程度的调度程序,尤其被用于分时系统,一个交换方案的实施,将部分运行程序移出内存,之后,从中断处继续执行。? c.长期调度(作业调度程序):确定哪些作业调入内存以执行.? 它们主要的不同之处是它们的执行的频率。短期调度必须经常调用一个新进程,由于在系统中,长期调度处理移动的作业时,并不频繁被调用,可能在进程离开系统时才被唤起。 3.2 总的来说,操作系统必须保存正在运行的进程的状态,恢复进程的状态。保存进程的状态主要包括CPU寄存器的值以及内存分配,上下文切换还必须执行一些确切体系结构的操作,包括刷新数据和指令缓存。? (书中答案)进程关联是由进程的PCB来表示的,它包括CPU寄存器的值和内存管理信息等。当发生上下文切换时,内核会将旧进程的关联状态保存在其?PCB中,然后装入经调度要执行的新进程的已保存的关联状态。 3.4 当控制回到父进程时,它的值会保持在5,而子进程将更新并拷贝这个值。 3.5 A.对称和非对称通信:对称通信的影响是它允许发送者和接收者之间有一个集合点。缺点是阻塞发送时,不需要集合点,而消息不能异步传递。因此,消息传递系统,往往提供两种形式的同步。? B.自动和显式缓冲:自动缓冲提供了一个无限长度的队列,从而保证了发送者在复制消息时不会遇到阻塞,如何提供自动缓存的规范,一个方案也许能保存足够大的内存,但许多内存被浪费缓存明确指定缓冲区的大小。在这种状况下,发送者不能在等待可用空间队列中被阻塞。然而,缓冲明确的内存不太可能被浪费。? C.复制发送和引用发送:复制发送不允许接收者改变参数的状态,引用发送是允许的。引用发送允许的优点之一是它允许程序员写一个分布式版本的一个集中的应用程序。Java’s?RMI?公司提供两种发送,但引用传递一个参数需要声明这个参数是一个远程对象。? D.固定大小和可变大小消息:涉及的太多是有关缓冲问题,带有定长信息,一个拥有具体规模的缓冲课容纳已知数量的信息缓冲能容纳的可变信息数量是未知的。考虑?Windows?2000?如何处理这种情况。带有定长信息(256bytes),信息从发送者的地址空间被复制至接受进程的地址空间。更大的信息(如变长信息)使用共享内存传递信息。 3.6 #include?stdio.h? #include?stdlib.h? #include?unistd.h? #include?sys/types.h?? int?main(int?argc,?char*?argv[])? {?? pid_t?pid;????????? int?i;? int?f0,f1,f2;????????? f0=0;????????? f1=1;?? if(argv[1]0)????????? {? ?fprintf(stderr,request?a?nun-negative?number);?? }??? ?pid=fork();??//printf(pid?=?%d??,pid);????????? if(pid0)?? {??? fprintf(stderr,fork?failed);??? exit(-1);?? }?? else?if(pid==0)?? {? printf(argv[1]?=?%d\n,atoi(argv[1]));?????????????? printf(0?1?);??????? for(i=2;?i=atoi(argv[1]);i++)?????????????? {? ?f2=f0+f1;??????????????????? f0=f1;??????????????????? f1=f2;? printf(%d?,f2);?????????????? }? printf(\nchild?process?completed\n);?? }?? else?? {??? wait(NULL);??? printf(parent?process?exited);????? }? return?0;? }? 3.10 #include?stdio.h? #include?sys/shm.h? #include?sys/stat.h? int?main(void)? {? ?int?segment_id;? ?char*?shared_memory;?? const?int?size?=?4096;?? unsigned?short?mode;? ?struct?shmid_ds?shmbuffer;?? /*?
显示全部
相似文档