- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
上海交通大学 试 卷
操作系统 年 月 日
姓名 学号 班级 得分
选择题:每题只选一个用字母表示的答案
1.根据作业在本次分配到的内存起始地址,将可执行目标代码装到指定的内存地址中,
并修改有关地址部分的值的方法称为 B 方式。
固定定位 B) 静态重定位 C) 动态重定位 D) 单一重定位
2.有9条磁带机供4个进程使用,如每个进程最多同时分配 C 条磁带机,就没有死锁的危险。
A) 1 B) 2 C) 3 D) 4
填充题
1.在进程主要状态转换图中,①表示____就绪__________状态。
2.写出正则表达式 ([^(+)]*) 对应字符串 ((first)(a+b)(second(a-b))) 的匹配部分:
___(first)、 (a-b) _________________
简答题
1.写出进程(不支持线程)的定义。
进程是程序处于一个执行环境中在一个数据集上的运行过程,它是系统进行资源分配和调度的一个可并发执行的独立单位。
2.简述可变分区存储管理算法中的首次适应算法(包括分配和释放算法,注:可拆成2题)。
(一)分配算法
采用首次适应法为作业分配大小为size的内存空间时,总是从表的始端的低地址部分开始查找,当第一次找到大于或等于申请大小的空闲区时,就按所需大小分配给作业。如果分配后原空闲区还有剩余空间,就修改原存储区表项的m_size和m_addr,使它记录余下的“零头”。如果作业所需空间正好等于该空闲区大小,那么该空闲区表项的m_size就成为0,接下来要删除表中这个“空洞”。
(二)回收算法
释放区与原空闲区相邻情况可归纳为四种情况。
(1)仅与前空闲区相连:合并前空闲区和释放区,该空闲区的m_addr仍为原前空闲区的首地址,修改表项的长度域m_size为原m_size与释放区长度之和。
(2)与前空闲区和后空闲区都相连:将三块空闲区合并成一块空闲区。修改空闲区表中前空闲区表项,其始地址为原前空闲区始址,其大小m_size等于三个空闲区长度之和,这块大的空闲区由前空闲区表项登记。接下来还要在空闲区表中删除后项。
(3)仅与后空闲区相连:与后空闲区合并,使后空闲区表项的m_addr为释放区的始址,m_size为释放区与后空闲区的长度之和。
(4)与前、后空闲区皆不相连:在前、后空闲区表项中间插入一个新的表项,其m_addr为释放区的始址,m_size为释放区的长度。
四、生产者a、b不断向仓库存放产品,由销售者c取走仓库中的产品(仓库初态产品数为0,仓库容量为无限大)。请写出通过semWait、semSignal操作实现三个进程间的互斥和同步的框图或伪程序,并写出信号灯的初值和意义。
信号灯初值和意义:
product: 初值为0,仓库中已存放的产品个数,(半)同步信号灯
mutex: 初值为1,向仓库存放产品和从仓库取走产品的互斥信号灯
生产进程a、b 销售进程c
semWait (product)
semWait (product)
semWait (mutex)
semWait (mutex)
semWait (mutex)
Put in (product)
semSignal(mutex)
semSignal(mutex)
Take out (product) (product) (product) (product)
在下面的程序中,父进程首先创建无名管道,再创建一个子进程;然后从键盘上
semSigna
semSignal (mutex)
semSignal (product)
五、在下面的程序中,父进程首先创建无名管道,再创建一个子进程;然后从键盘上读入一个Shell命令串(如 ls -l ),并通过无名管道向子进程发送该命令串;父进程等待子进程终止。子进程通过管道读到命令串并执行该命令后返回。子进程然后打印“Cmmand Completed.”后终止自己。父进程在子进程完成任务后,显示返回状态后结束运行。
在下面程序的下划线上填写适当的语句。
char cmd [100];
void main()
{
int pid, status, chan[2];
__pipe ( chan )_;
if (_pid = fork( )___) {
close (c
文档评论(0)