软件所1996软基答案(编辑修改稿)内容摘要:

ffer(out)。 out:=(out+1) mod n。 V(S0)。 V(S1)。 consume message m。 until false end parend end 五.解答:当用户创建或联接了一个文件并把它打开后 ,便可以对它执行读、写 操作。 文件系统在进行读写操作时,需调用一系列读写有关的过程,如 ⑴ passc 过程、 cpass 过程。 前者用于把一字符从缓冲区送到用户区,后 者相反; ⑵ iomove 过程用于实现用户区和缓冲区之间的信息传送; ⑶ readi 过程用于把信息从磁盘读入内存; ⑷ writei 过程用于把信息从 内存写入磁盘。 或: 1.读方式 在 UNIX 系统中有两种读方式: ⑴ 一般读方式。 把盘块中的信息读 入缓冲区,有 bread 过程完成; ⑵ 提前读方式。 在一个进程顺序地读入 一个文件的各个盘块时,会预见到所要读的下一个盘块,因而在请求读 出指定盘块(作为当前块)的同时,可要求提前将下一个盘块(提前块) 中的信息读 入缓冲区。 这样,当以后需要该盘块的数据时,因它已在内 存中,这就缩短了读数据时间,从而改善了系统性能。 提前读功能由 breada 过程完成。 2.写方式 UNIX 系统有三种方式: ⑴ 一般写方式。 真正把缓冲区中的数据写 入磁盘上,且进程须等待写操作完成,由过程 bwrite 完成; ⑵ 异步写 方式。 进程无须等待写操作完成便可返回,异步写过程为 bawrite; ⑶ 延迟写方式。 该方式并不真正启动磁盘,而只是在缓冲首部设置延迟写 标志,然后便释放该缓冲区,并将该缓冲区链入空闲链表的末尾,以后 当有进程申请到该缓冲区时,才将它写入磁盘。 引入延迟写的目的是为 了减少不必要的磁盘 I/O,因为只要没有进程申请到此缓冲区,其中的 数据便不会写入磁盘,倘若再有进程需要访问其中的数据时,便可直接 从空闲链表中摘下该缓冲区,而不必从磁盘读入。 六.解答: 设运算变量均为整数的某个简单算术表达式,已加工的为 k个四元 式, n1是起始四元式号码, nk是终止四元式号码。 由于是加工简单算术表 达式得到的四元式序列,因此这些四元式均为一目或二目算术运算的四元 式。 为使存放中间结果的临时单元个数最少,我们设立一个计数器 count。 当四元式的第 2或第 3 项出现临时变量(即出现对临时变量的引用时),每 出现一个,计数器就减少 1;当四元式的第 4项(即存放运算结果的项) 出现临时变量时,计数器就应增加 1。 正如前面所述,这些四元式是加工简单算术表达式得到的算术运算四 元式,因此每个四元式必然要把计算结果赋予某个临时变量, 因此四元式 的第 4项一定是临时变量。 于是对每个算术运算四元式来说,若四元式第 2,第 3项都是临时变 量时,计数器要减少 1;当第 2,第 3 项只有一个是临时变量,计数器不变; 当第 2,第 3 项都不是临时变量时,计数器增加 1。 下面给出的算法顺便也给出了临时变量分配的临时单元地址(假定当 前分配的临时变量的起始地址为 a)。 Procedure PT( a, n1, nk); begin。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。