《操作系统概论》综合题

本文深入探讨了操作系统概论的重点知识,包括信号量编程、调度算法、动态分区分配、分页地址计算等。通过实例解析,详细阐述了各种算法的工作原理和应用,如银行家算法、实时调度、页面置换算法等,旨在帮助读者深化理解操作系统的精髓。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

操作系统概论

重点知识

  • 综合题:信号量编程
  • 综合题:三种调度算法
  • 简答题:实时调度进程个数与周期长度
  • 未出:实时调度的最低松弛度算法
  • 简答题:银行家算法
  • 未出:动态分区分配三种算法和回收四种情况
  • 综合题:基本分页的地址计算
  • 未出:快表有效访问时间与命中率
  • 未出:二级页表地址计算
  • 未出:四种页面置换算法
  • 未出:请求分页有效访问时间与命中率
  • 简答题:i结点支持的单个文件最大长度
  • 综合题:四种磁盘调度算法

信号量编程

题型1单个进程两个信号量,初始值1或n,两次检查

某展会任何时刻最多可容纳500名参观者,当展厅中少于500名参观者时,则厅外的参观者可立即进入,否则需在外面等待。参观者进入展厅时,都必须在入口处登记(并领取资料和礼品),假定入口处有5位工作人员,每位工作人员每次只能接待一个参观者登记,请用记录型信号量机制时间参观者进程的同步算法。register()是完成登记并领取资料的函数;visit()是完成参观展览的函数;leave()是表示参观完毕离开的函数。下面已经给出了部分代码,请填写1-2空白处的代码。注:每一空可能不止一行代码。

struct semaphore cap;		//表示展会容量
struct semaphore officer;	//表示工作人员的信号量
_____________(1)_________
void process Vistor()
{
   
   
    ________(2)_______
}
(1)	cap.value=500;			//cap表示容量,500
	officer.value=5;		//officer表示检查,5

(2)	wait(cap);				//先检查容量看看能否进去
	wait(officer);			//再检查登记看能否登记
	register();				
	signal(officer);		//完成登记,解锁让给下一位
	visit();
	leave();
	signal(cap);			//完成参观,离开让给下一位

*题型2:双进程,生产消费者问题变型,考核数组指针

设无穷多个整数缓冲区,A进程读入整数并写入级缓冲区,B进程则从缓冲区取出整数进行打印,存放整数的变量为item,缓冲区名为buffer

读取过程函数getAltem(int *itm)

打印整数函数printAltem(int item)

来完成。

用记录型信号量机制实现上述两个进程的同步算法。补充程序每个空缺部分代码(可能是多行)

struct semaphore full;
int buffer[];			//缓冲区
int in,out;				//缓冲区入口指针量和出口指针量
____________(1)_________
void processA()
{
   
   
	int item;			//存放整数的变量
    _________(2)_______
}
void processB()
{
   
   
    int item;			//存放整数的变量
    ________(3)______
}

题目中已经给出单信号量和两指针,由于无限空间而且题目只给单个信号量,说明不必考虑缓冲区互斥,只考虑是否有数据可以取

A进程不必检查,只管放数据

B进程要检查是否有数据,再取出

full表示检查是否有数据

full是私有信号量,跨越两进程

由于无限空间,in和out都是++

注意getAItem函数的参数带*,所以传递参数时要用&

(1)	in=0
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值