操作系统实验1~9

合集下载

操作系统实验,实验3, 进程管理 (1)

操作系统实验,实验3, 进程管理 (1)

在图形界面上利用终端通过命令“su - ”切换到超级用户,编辑文件 “job”; 按组合键[Ctrl+Alt+F2]切换到第二个虚拟终端(超级用户); 输入命令“at –f job now+1 minute”,设置1分钟后执行at调度内容; 稍等后观察at调度的执行效果,再切换到第一个虚拟终端观察at调度 的执行效果;
切换到第一个虚拟终端观察at调度的执行效果(5分钟后系统将执行重 启调度任务)。
[操作要求2] 设置一个调度,要求1分钟后执行文件job中的作业。 文件job的内容为: find /home/jkx/ -name “*.c” > /home/jkx/fdresult wall user jkx, all code files have been searched out! Please check out. [操作步骤]
续表
守 护 进 程 innd Usenet新闻服务器 功 能 说 明
linuxconf
lpd named netfs network
允许使用本地WEB服务器作为用户接口来配置机器
打印服务器 DNS服务器 安装NFS、Samba和NetWare网络文件系统 激活已配置网络接口的脚本程序
nfsd
portmap postgresql routed sendmail
事件(例如xinetd和lpd)
启动守护进程有如下几种方法
在引导系统时启动 人工手动从shell提示符启动
系统启动script的执行期间 被启动(/etc/rc.d) 任何具有相应执行 权限的用户
使用crond守护进程启动
执行at命令启动
守护进程一般由系统在开机时通过脚本或root

操作系统实验二:银行家算法

操作系统实验二:银行家算法

操作系统实验⼆:银⾏家算法实验⼆银⾏家算法⼀、实验⽬的1、了解什么是操作系统安全状态和不安全状态;2、了解如何避免系统死锁;3、理解银⾏家算法是⼀种最有代表性的避免死锁的算法,掌握其实现原理及实现过程。

⼆、实验内容根据银⾏家算法的基本思想,编写和调试⼀个实现动态资源分配的模拟程序,并能够有效避免死锁的发⽣。

三、实验原理进程申请资源时,系统通过⼀定的算法判断本次申请是否不可能产⽣死锁(处于安全状态)。

若可能产⽣死锁(处于不安全状态),则暂不进⾏本次资源分配,以避免死锁。

算法有著名的银⾏家算法。

1、什么是系统的安全状态和不安全状态?所谓安全状态,是指如果系统中存在某种进程序列<P1,P2,…,Pn>,系统按该序列为每个进程分配其所需要的资源,直⾄最⼤需求,则最终能使每个进程都可顺利完成,称该进程序列<P1,P2,…,Pn,>为安全序列。

如果不存在这样的安全序列,则称系统处于不安全状态。

2、银⾏家算法把操作系统看作是银⾏家,操作系统管理的资源相当于银⾏家管理的资⾦,进程向操作系统请求分配资源相当于⽤户向银⾏家贷款。

为保证资⾦的安全,银⾏家规定:(1) 当⼀个顾客对资⾦的最⼤需求量不超过银⾏家现有的资⾦时就可接纳该顾客;(2) 顾客可以分期贷款,但贷款的总数不能超过最⼤需求量;(3) 当银⾏家现有的资⾦不能满⾜顾客尚需的贷款数额时,对顾客的贷款可推迟⽀付,但总能使顾客在有限的时间⾥得到贷款;(4) 当顾客得到所需的全部资⾦后,⼀定能在有限的时间⾥归还所有的资⾦。

操作系统按照银⾏家制定的规则设计的银⾏家算法为:(1)进程⾸次申请资源的分配:如果系统现存资源可以满⾜该进程的最⼤需求量,则按当前的申请量分配资源,否则推迟分配。

(2)进程在执⾏中继续申请资源的分配:若该进程已占⽤的资源与本次申请的资源之和不超过对资源的最⼤需求量,且现存资源能满⾜该进程尚需的最⼤资源量,则按当前申请量分配资源,否则推迟分配。

(3)⾄少⼀个进程能完成:在任何时刻保证⾄少有⼀个进程能得到所需的全部资源⽽执⾏到结束。

国家开放大学《操作系统》形考任务1参考答案

国家开放大学《操作系统》形考任务1参考答案

国家开放大学《操作系统》形考任务1-3参考答案形考作业1一、单项选择题1.按照所起的作用和需要的运行环境,操作系统属于( )。

A.系统软件B. 应用软件C. 用户软件D. 支撑软件2.UNIX操作系统核心层的实现结构设计采用的是( )。

A.层次结构B. 网状结构C. 微内核结构D. 单块式结构3.UNIX命令的一般格式是( )。

A.[参数] [选项] 命令名B. [选项] [参数] 命令名C. [命令名] [选项] [参数]D.命令名[选项][参数]4.操作系统的基本职能是( )。

A. 提供方便的可视化编辑程序B. 提供功能强大的网络管理工具c. 提供用户界面,方便用户使用D.控制和管理系统内各种资源,有效地组织多道程序的运行5.操作系统对缓冲区的管理属于( )的功能。

A. 处理器管理B. 存储器管理C. 文件管理D. 设备管理6.操作系统内核与用户程序、应用程序之间的接口是( )。

A. C语言函数B.shell命令C. 图形界面D. 系统调用7.工业过程控制系统中运行的操作系统最好是( )。

A.实时系统B. 分时系统C. 网络系统D. 分布式操作系统8.进程从运行状态变为阻塞状态的原因是( )。

A.输入或输出事件发生B. 输入或输出事件完成C. 时间片到D. 某个进程被唤醒9.进程控制块是描述进程状态和特性的数据结构,一个进程( )。

A. 可以没有进程控制块B. 可以有多个进程控制块C. 可以和其他进程共用一个进程控制块D.只能有唯一的进程控制块10.进程与程序之间有密切联系,但又是不同的概念。

二者的一个本质区别是( )。

A. 程序保存在文件中,进程存放在内存中B. 程序是动态概念,进程是静态概念c. 程序顺序执行,进程并发执行D.程序是静态概念,进程是动态概念11.两个进程合作完成一个任务,在并发执行中,一个进程要等待其合作伙伴发来信息,或者建立某个条件后再向前执行,这种关系是进程间的( )关系。

华科_计算机系统实验报告

华科_计算机系统实验报告

课程实验报告课程名称:计算机系统基础专业班级:学号:姓名:指导教师:报告日期:年月日计算机科学与技术学院目录实验1: (1)实验2: (7)实验3: (24)实验总结 (34)实验1:数据表示1.1 实验概述实验目的:更好地熟悉和掌握计算机中整数和浮点数的二进制编码表示。

实验目标:加深对数据二进制编码表示的了解。

实验要求:使用有限类型和数量的运算操作实现一组给定功能的函数。

实验语言:c。

实验环境:linux1.2 实验内容需要完成bits.c中下列函数功能,具体分为三大类:位操作、补码运算和浮点数操作。

1)位操作表1列出了bits.c中一组操作和测试位组的函数。

其中,“级别”栏指出各函数的难度等级(对应于该函数的实验分值),“功能”栏给出函数应实现的输出(即功能),“约束条件”栏指出你的函数实现必须满足的编码规则(具体请查看bits.c中相应函数注释),“最多操作符数量”指出你的函数实现中允许使用的操作符的最大数量。

你也可参考tests.c中对应的测试函数来了解所需实现的功能,但是注意这些测试函数并不满足目标函数必须遵循的编码约束条件,只能用做关于目标函数正确行为的参考。

表1 位操作题目列表2)补码运算表2列出了bits.c中一组使用整数的补码表示的函数。

可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。

表2 补码运算题目列表3)浮点数操作表3列出了bits.c中一组浮点数二进制表示的操作函数。

可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。

注意float_abs的输入参数和返回结果(以及float_f2i函数的输入参数)均为unsigned int类型,但应作为单精度浮点数解释其32 bit二进制表示对应的值。

表3 浮点数操作题目列表表示,当输入参数是NaN 时,返回NaN 号整型操作,包括||,&&以及if,while控制结构4 float_f2i 返回浮点数‘f’的强制整型转换“(int)f”表示仅能使用任何整型/无符号整型操作,包括||,&&以及if,while控制结构301.3 实验设计根据题目要求,选择合适的操作符来编写代码。

操作系统原理实验报告09

操作系统原理实验报告09
《操作系统原理》实验报告
实验序号:9实验项目名称:进程创建模拟实现
学 号
姓 名
专业、班
实验地点
指导教师
实验时间
一、实验目的及要求
(1)理解进程创建相关理论;(2)掌握进程创建方源自;(3)掌握进程相关数据结构。
二、实验设备(环境)及要求
Windows操作系统与Turbo C或者Visual C++开发环境
三、实验内容与步骤
四、实验结果与数据处理
详细记录程序在调试过程中出现的问题及解决方法。记录程序执行的结果。
五、分析与讨论
对上机实践结果进行分析,上机的心得体会。
六、教师评语
签名:
日期:
成绩

操作系统实验报告哈工大

操作系统实验报告哈工大

计算机操作系统课程实验报告专业信息管理与信息系统班级 1203601学号 120360117姓名乐云指导教师周学权计算机操作系统课程实验报告专业信息管理与信息系统班级 1203601学号 120360114姓名郭鑫指导教师周学权操作系统实验实验1 使用虚拟机安装系统 4学时【实验目的】1.了解虚拟机软件的使用。

2.了解使用虚拟机安装Windows及Ubuntu操作系统。

【实验内容】1. 安装虚拟机软件VirtualBox。

2. 配置VirtualBox环境安装WindowsXP,并在虚拟机中启动windowsXP。

3. 配置VirtualBox环境安装Ubuntu 10.10,并在虚拟机中启动Ubuntu。

【实验环境】VirtualBox4.0Windows XPUbuntu 8.04【实验过程】一、创建虚拟机首先运行VirtualBox,单击左上角的“新建”。

单击下一步。

出现如下图的界面,在名称后输入自己起的名字,如test选择自己想要安装的系统类型和版本,本次试验是安装windows xp系统设置完成后,单击下一步。

接下来是设置虚拟机的内存大小,本次实验操作的计算机内存为4GB,所以我选择分配给我的虚拟机的内存为512MB,然后单击下一步。

接着创建虚拟硬盘,选择创建新的虚拟硬盘,单击下一步。

选择虚拟硬盘的类型,默认选择了VDI类型,单击下一步。

接下来选择为动态扩展类型,因为计算机的存储空间不大。

单击下一步。

动态扩展:如果你为你的虚拟磁盘分配的是10G空间,虚拟磁盘占用真实磁盘空间的范围就为0~10G。

固定大小:如果你为你的虚拟磁盘分配的是10G空间,虚拟磁盘占用真实磁盘空间永远不是10G,不管虚拟磁盘空间是否被全部使用。

选择虚拟机在本地磁盘中的位置和大小,单击下一步。

确认虚拟机的详细情况,点击下一步。

这时我们已经成功的创建了一个虚拟机了,接下来我们要开始配置这个虚拟机安装操作系统选择刚才创建的虚拟机,然后单击上方的“开始”弹出了首次运行向导,单击下一步。

操作系统实验报告(进程间的共享存贮区和信号量通信)

操作系统实验报告(进程间的共享存贮区和信号量通信)

case -1:perror("fork()");exit(0);case 0:do_child_loop(sem_set_id,FILE_NAME);exit(0);default:break;}}for(i = 0;i<10;i++){int child_status;wait(&child_status);}printf("main is done");fflush(stdout);return 0;}运行结果:二、共享主存段机制共享主存段为进程提供了直接通过主存进行通信的有效手段,不像消息缓存机制那样需要系统提供缓存,也不像pipe机制那样需要事先建立一个特殊文件,而是有通信双方直接访问某些共享虚拟存储器空间。

在系统V中,系统管理一组共享主存段控制块。

通信进程在使用共享主存段以前,首先提出申请,系统为止分配存储空间并返回共享主存段标识号。

一个共享段建立后,进程把它被附加到自己的虚拟存储空间中。

一个进程可以附加多个共享主存段。

一个主存段一旦被附加到进程的虚拟机空间后,对它的访问以其他虚拟机的访问完全相同。

但为了保证共享主存段数据完整性,通信的进程之间要互斥的进行访问。

当通信进程不再需要该共享主存段时,可使用命令将其与进程分离,从而使其进程的虚空间删除。

为了理解进程通过共享主存段的通信过程,下面举例,一个是进程向共享段写信息的例子:一个是进行从共享段读信息的例子。

代码如下:四、实验过程与分析一、信号量机制在第一个例子的程序中创建了5个并发子进程,互斥地对文件进行写操作,将自己的进程号写到文件中去,信号量的初值为1,当地一个进程执行update_file函数时首先将信号量值-1,(相当于P操作)致使其它进程等待无法操作文件,直到其结束后,将其值变为1后(相当于V操作),其它进程并发竞争对文件的写操作,并将自己的pid 写入文件中。

在linux中信号量机制的执行既步骤如下所示:(1)信号量的定义:struct semaphore {spinlock_t lock;unsigned int count;struct list_head wait_list;};在linux中,信号量用上述结构体表示,我们可以通过该结构体定义一个信号量。

LINUX基础实验报告

LINUX基础实验报告

LINUX基础实验报告实验⼀:主要是介绍Linux系统概况,⽆运⾏代码。

实验⼆:Linux的基本操作重要知识点[Tab]使⽤Tab键来进⾏命令补全,Tab键⼀般键盘是在字母Q旁边,这个技巧给你带来的最⼤的好处就是当你忘记某个命令的全称时你可以只输⼊它的开头的⼀部分然后按下Tab键就可以得到提⽰或者帮助完成,当然不⽌补全命令,补全⽬录,补全命令参数都是没问题的。

Ctrl+c键⽤来强⾏终⽌当前程序。

⼀些其他常⽤快捷键按键作⽤Ctrl+d键盘输⼊结束或退出终端Ctrl+s暂定当前程序,暂停后按下任意键恢复运⾏Ctrl+z将当前程序放到后台运⾏,恢复到前台为命令fgCtrl+a将光标移⾄输⼊⾏头,相当于Home键Ctrl+e将光标移⾄输⼊⾏末,相当于End键Ctrl+k删除从光标所在位置到⾏末Alt+Backspace向前删除⼀个单词Shift+PgUp将终端显⽰向上滚动Shift+PgDn将终端显⽰向下滚动通配符是⼀种特殊语句,主要有星号(*)和问号(?),⽤来对对字符串进⾏模糊匹配(⽐如⽂件名,参数名)。

当查找⽂件夹时,可以使⽤它来代替⼀个或多个真正字符;当不知道真正字符或者懒得输⼊完整名字时,常常使⽤通配符代替⼀个或多个真正的字符。

终端⾥⾯输⼊的通配符是由 Shell 处理的,不是由所涉及到命令语句处理的,它只会出现在命令的“参数值”⾥(它不⽤在命令名称⾥,命令不记得,那就⽤Tab补全)。

当 Shell 在“参数值”中遇到了通配符时,Shell 会将其当作路径或⽂件名去在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进⾏代换(路径扩展);否则就将该通配符作为⼀个普通字符传递给“命令”,然后再由命令进⾏处理。

总之,通配符实际上就是⼀种 Shell 实现的路径扩展功能。

在通配符被处理后, Shell 会先完成该命令的重组,然后再继续处理重组后的命令,直⾄执⾏该命令。

Shell 常⽤通配符:字符含义*匹配 0 或多个字符匹配任意⼀个字符[list]匹配 list 中的任意单⼀字符[!list]匹配除list 中的任意单⼀字符以外的字符[c1-c2]匹配 c1-c2 中的任意单⼀字符如:[0-9] [a-z]{string1,string2,...}匹配 sring1 或 string2 (或更多)其⼀字符串{c2..c2}匹配 c1-c2 中全部字符如{1..10}在linux命令⾏中获取帮助使⽤man 命令通常情况下,man ⼿册⾥⾯的内容都是英⽂的,这就要求你有⼀定的英⽂基础。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
================================================================ int cl=0,c2=0,will_wait;
p1: while(l) { cl=l; will_wait=l; while(c2&&(will_wait ==1)); /*忙等待*/ csl; cl=0;programl; }
态为空闲*/
else {
/*等待队列不为空*/
remove(r->waiting_list,q);
/*从等待队列中移出一个进程q*/
q->status.type=’ready’;
/*将进程q的状态设为就绪*/
q->status.list=RL;
/*进程q的状态指针指向就绪队列*/
insert(RL,q); }
二、实验要求 1.知识基础:学生应在完成对进程和线程、调度、死锁等章节的学
习后进行。 2.开发环境与工具: 硬件平台——个人计算机。 软件平台——Windows操作系统,根据需要,任选安装VC++语
言、java语言或C语言开发环境。
三、实验内容 1.开发一个函数,建立进程控制块和资源控制块结构,并实现相关
题。两个线程分别将c1和c2设置为1,表示自己试图进入临界区,并将 will_wait分别设置为1和2,以消除任何竞争条件。通过“忙等待”循环实 现线程的阻塞。当线程退出CS区时,分别将变量c1和c2设置为0。
我们可以比较互斥锁和软件方法这两种解决方法的效率。可以通过重 复相同的循环次数,测量各自的执行时间,尽量减少可能的外部干扰,
p2: while(l) { c2=1; will_wait= 2; while(cl&&(will_wait==2); /* 忙等待*/ cs2; c2=0;program2; }
================================================================ 该软件方法使用三个变量cl,c2,will_wait,解决两个线程的同步问
数据结构的初始化。 2.开发一系列操作,由进程调用这些操作,达到控制进程申请或释
放各种资源的目的。
四、实验方案指导 该实验方案由以下几个关键设计项目组成: 1.进程数据结构表示。 2.资源数据结构表示。 3.进程对资源的操作。 4.调度程序。 5.用户功能shell界面。
五、实验方案实现范例 以下是对该项目中包含的设计功能的实现方法、实现过程、技术手
重复测试几次,并计算平均值。
实验二 进程及其资源管理
(建议4学时) 一、实验目的
1.理解资源共享与互斥特性,以及操作系统管理资源的基本方法。 2.学会使用高级语言进行多线程编程的方法。
3.掌握利用VC++或Java线程库实现一个管理器,用来实现操作系统 对进程及其资源的管理功能。
4.通过该实验,学生可在源代码级完成进程及其资源管理方案的分 析、功能设计、编程实现,控制进程间的同步、互斥关系。
/*进程q插入就绪队列*/
scheduler( );
/*调度程序运行选择下一个运行进程*/
================================================================
4.调度程序。
调度策略采用固定优先级和可剥夺优先级调度算法。即调度程序必
须维护n个不同优先 级的就绪队列,各就绪队列可为空,也可包含多个
scheduler( );
/*调度程序运行选择下一个运行进程*/
release(RID)
/*释放资源算法*/
{ r=get_RCB(RID);
/*获取资源控制块首地址*/
remove(self->other_resource,r);
/*从进程资源链表中删除该资源
*/
if(waiting_list==NULL) r->status=’free’; /*等待队列为空,置资源状
If(self->priority<p->priority)||self->status.type!=’running’||self= nil)
态数据,系统启动时初始化。
3.进程管理及进程对资源的操作。
进程操作及进程状态转换归纳如下:①进程创建——(无)→就绪;
②申请
行→阻塞;③资源释放——阻塞→就绪;④删除进程——(任何状态)
→(无);
——就绪→运行或运行→就绪。
具体实现步骤如下:
(1)根据上述数据结构,用高级语言设计相应函数,分别实现创建进
使用,用来确定下一个运行进程,可以设定为静态整数。
2.资源数据结构。
每个资源都用一个称为资源控制块的数据结构表示。使用结构类型设
计实现资源控制块RCB。资源控制块包括以下字段成员:①RID-资源的
唯一标识,由进程引用;②资源状态——空闲/已分配;③等待队列
——是被本资源阻塞的进程链表,本资源正被其他所有资源都设定为静
2.模拟一个竞争条件——全局变量。 创建两个线程tl和t2,父线程主函数main()定义两个全局变量accntl和 accnt2,每个变 量表示一个银行账户,初始化为0。每个线程模拟一个 银行事务:将一定数额的资金从一个 账户转到另一个账户。每个线程 读入一个随机值,代表资金数额,在一个账户上做减法,在 另一个账 户上做加法,用两个变量记录两个账户的收支情况。良性情况下收支应 平衡,即两 个全局变量之和应为0。 下面是每个线程的代码:
段的描述,供师生参考。 1.进程数据结构表示。 使用结构类型设计实现进程PCB表,它包含以下成员:①进程ID——
进程的唯一标识, 供其他进程引用该进程;②内存——是一个指针链 表,它在创建进程时已申请完毕,可用链表实现;③其他资源——表示 除去内存之外的所有资源;④进程状态——包括两个数据类型,一个是 状态码,另一个是状态队列链表指针;⑤生成树——包括两个数据类 型,本进程的父进程和本进程的子进程;⑥优先级——供进程调度程序
4.同步访问多缓冲区。利用上面的软件方法完成P,V操作,可实 现两个线程对多缓冲区的同步访问。
五、实验方案实现范例 以下是对该项目中包含的部分设计功能的实现方法、实现过程、技术
手段的描述,供师生参考。 1.模拟线程并发运行。 假设我们使用POSIX线程库,而POSIX并没有真正提供线程间的并发
运行需求。我们设计的系统应支持符合RR调度策略的并发线程,每个 线程运行一段时间后自动挂起,另一 个线程开始运行。这样一个进程 内所有线程以不确定的速度并发执行。
有当优先级高于自己的所有进程都运行完毕,或都进入阻塞 状态时,
它才能得到运行权。
为了简化调度程序,我们假定系统中至少有一个进程处于就绪态。为
确保这一点,设计 一个特殊进程init,该进程在系统初始化时自动创
建,并赋予最低优先级0级。init进程有两个作用:充当闲逛进程,该进
程运行时不申请任何资源,以免被阻塞;作为第一个被创建的进程,它
实验一 进程同步和互斥
(建议4学时) 一、实验目的
1.掌握临界资源、临界区概念及并发进程互斥、同步访问原理。 2.学会使用高级语言进行多线程编程的方法。 3.掌握利用VC++或Java语言线程库实现线程的互斥、条件竞争,并 编码实现P、V操作,利用P、V操作实现两个并发线程对有界临界区的 同步访问。 4.通过该实验,学生可在源代码级完成进程同步互斥方案的分析、 功能设计、编程实现,控制进程间的同步、互斥关系。
4.测试出现一个竞争条件的时间。 我们的编程环境中,一般无法支持线程的RR调度,必须编程实现两 个线程间在两个赋值语句之间插入以下代码:在指定区间(比如0到1) 生成一个随机数,小于一个极限值(如0.1),调用线程自动挂起函数 jield(),自动放弃CPU,另一运行,于是导致一个数据更新的丢失。 5.互斥锁。 POSIX线程库提供一个二值信号量,称为MUTEX,它可以加锁或解 锁。如果已被另一个线程加上锁的MUTEX加锁,就会引发该线程被阻 塞,MUTEX解锁时唤醒它。使用这些原语,很容易实现互斥进入 CS(临界区)。进入CS区时加锁,离开CS区时解锁。系统负责阻塞或 唤醒线程。 6.用软件方法实现互斥访问临界区。 用标准编程语言设置变量的值,用线程“忙等待”实现互斥访问CS。 设计两线分代码如下:
没有父进程,可创建比自己优先级高的其他进程。所以init进程是进程
生成树的根进程。
采用优先级策略的调度程序的常见结构知下所示:
================================================================
scheduler()
{ 找出最高优先级进程p;
request(RID)
/*申请资源算法*/
{ r=get_RCB(RID);
/*获取资源控制块首地址*/
if (r->status= =’free’ ) {
/*资源可用*/
r->status=’allocated’;
/*分配给调用进程,*/
insert(self->other_resources,r); } /*插入一个RCB指针指向进程
进程。0级进程优先级最低,n-l级进程优先级最高。创建进程时就赋予
了固定的优先级,并在进程的生存期内保持不变。当新进程创建或阻塞
进程被唤醒时,它就被插入同级的就绪队列中。
调度程序按“先来先服务”和优先级“从高到低”的方式处理就绪队列。
即从最高优先 级的非空就绪队列的队首选择一个进程进入运行态。这
样的调度策略很容易导致"饥饿",进 程出现。因为对进程q来说,只
资源链表;*/
else {
/*资源不可用*/
相关文档
最新文档