操作系统实验指导书汇总

合集下载

《计算机操作系统》实验指导书

《计算机操作系统》实验指导书

宁夏师范学院——数学与计算机科学学院《操作系统》实验指导《OPERATING SYSTEM》2013.08前言计算机操作系统是计算机科学与技术专业的主要专业基础课程,其实践性、应用性很强。

实践教学环节是必不可少的一个重要环节。

计算机操作系统的实验目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握操作系统的基本原理,加深对操作系统基本方法的理解,加深对课堂知识的理解,为学生综合运用所学知识,在Linux环境下调用一些常用的函数编写功能较简单的程序来实现操作系统的基本方法、并在实践应用方面打下一定基础。

要求学生在实验指导教师的帮助下自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个实验解决一类问题。

要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,并且能够进行简单分析和判断;能够熟练使用Linux用户界面;掌握操作系统中进程的概念和控制方法;了解进程的并发,进程之间的通信方式,了解虚拟存储管理的基本思想。

同时培养学生进行分析问题、解决问题的能力;培养学生完成实验分析、实验方法、实验操作与测试、实验过程的观察、理解和归纳能力。

为了收到良好的实验效果,编写了这本实验指导书。

在指导书中,每一个实验均按照该课程实验大纲的要求编写,力求紧扣理论知识点、突出设计方法、明确设计思路,通过多种形式完成实验任务,最终引导学生有目的、有方向地完成实验任务,得出实验结果。

任课教师在实验前对实验任务进行一定的分析和讲解,要求学生按照每一个实验的具体要求提前完成准备工作,如:查找资料、设计程序、完成程序、写出预习报告等,做到有准备地上机。

进行实验时,指导教师应检查学生的预习情况,并对调试过程给予积极指导。

实验完毕后,学生应根据实验数据及结果,完成实验报告,由学习委员统一收齐后交指导教师审阅评定。

目录操作系统实验大纲 (1)第一部分实验环境及所用系统函数介绍 (3)1.1 Linux操作系统简介 (3)1.2 Linux的使用 (3)第二部分实验内容 (7)实验一熟悉LINUX基本命令及编程环境 (7)实验二进程管理 (10)实验三进程调度 (14)实验四进程间通信 (19)实验五存储管理实验 (22)操作系统实验大纲一、教学目的和要求操作系统课程是一门理论性很强的专业课,操作系统实验是该课程的辅助课程。

操作系统实验指导书

操作系统实验指导书

《操作系统》课程实验指导书一.实验总学时(课外学时/课内学时):4/8 总学分:8/44必开实验个数: 4 选开实验个数:0二.适用专业:网络工程、计算机科学与技术2007级三.考核方式及办法:在规定实验时间内完成实验要求,依据实验过程及实验结果在实验现场逐一检查考核。

四.配套的实验教材或指导书:自编实验指导书五. 实验项目:实验1 SHELL命令的使用1、实验目的通过对LINUX的系统启动、注销、关闭和关机,帐号管理,文件系统的日常管理,文件系统的权限控制等常用基本命令的使用及与Windows下DOS SHELL的比较,了解现代操作系统SHELL的特点和功能。

了解编辑器vi的使用方法。

2、实验工具及环境LINUX系统网络环境或单机,Windows系统网络环境或单机。

3、实验计划学时2学时上机实际操作。

4、实验内容及操作步骤⑴系统启动和关闭①使用自己的账户登录UNIX系统,查看系统提示符确定自己使用的shell程序类型别。

◎开机后,系统自检启动后提示login:(输入:root↙)password:(输入:用户口令↙,root用户为redhat)◎查看/etc/passwd文件可以获得用户使用的shell#grep $LOGNAME /etc/passwd↙可能的显示为:user001:*:200:50::/usr/user001:/bin/sh请思考上述命令怎样得到了当前使用的shell类型的?使用下面的命令也可以查看当前shell:#echo $SHELL②注销和关机命令。

◎用户注销使用:$exit↙或$<ctrl>+<D>↙或$logout↙◎超级用户关机使用:#shutdown↙该命令将结束所有的进程,当执行此命令后系统提示“Safe to Power off or Press Any Keyto Reboot”时可以关闭电源或按任一键重启系统。

◎haltsys(halt),reboot只能由超级用户在单用户模式下使用。

计算机操作系统实验指导linux版,操作系统实验指导书(linux版).doc

计算机操作系统实验指导linux版,操作系统实验指导书(linux版).doc

计算机操作系统实验指导linux版,操作系统实验指导书(linux版).doc操作系统实验指导书(linux版)《操作系统》实验指导书实验学时:16适⽤专业:计算机科学与技术实验⼀:进程和线程的创建1. 在linux下编写⼀个应⽤程序,命名为an_ch2_1b。

这个程序不断地输出如下⾏:Those output come from child,[系统时间]另外写⼀个应⽤程序,命名为an_ch2_1a。

这个程序创建⼀个⼦进程,执⾏an_ch2_1b。

这个程序不断地输出如下⾏:Those output come from child,[系统时间]观察程序运⾏的结果,并对你看到的现象进⾏解释。

2。

在linux环境下编写⼀个控制台应⽤程序,程序中有⼀个共享的整型变量shared_var,初始值为0;创建⼀个线程并使其⽴即与主线程并发执⾏。

新创建的线程与主线程均不断地循环,并输出shared_var 的值。

主线程在循环中不断地对shared_var 进⾏加1操作,即每次循环shared_var 被加1;⽽新创建的线程则不断地对shared_var 进⾏减1 操作,即每次循环shared_var 被减1。

观察程序运⾏的结果,并对你看到的现象进⾏解释。

3。

提交源代码以及实验报告。

实验⼆:进程和线程同步和互斥1。

⽣产者消费者问题(信号量)参考教材中的⽣产者消费者算法,创建5个进程,其中两个进程为⽣产者进程,3个进程为消费者进程。

⼀个⽣产者进程试图不断地在⼀个缓冲中写⼊⼤写字母,另⼀个⽣产者进程试图不断地在缓冲中写⼊⼩写字母。

3个消费者不断地从缓冲中读取⼀个字符并输出。

为了使得程序的输出易于看到结果,仿照阅读材料中的实例程序,分别在⽣产者和消费者进程的合适的位置加⼊⼀些随机睡眠时间。

可选的实验:在上⾯实验的基础上实现部分消费者有选择地消费某些产品。

例如⼀个消费者只消费⼩写字符,⼀个消费者只消费⼤写字母,⽽另⼀个消费者则⽆选择地消费任何产品。

操作系统实验指导书

操作系统实验指导书

操作系统实验指导书实验⼀操作系统⽤户接⼝实验⼀、实验⽬的熟悉操作系统的命令接⼝、图形⽤户接⼝和程序接⼝。

⼆、实验内容:1、使⽤操作系统的命令接⼝。

使⽤Windows常⽤命令:dir 、md、copy、date、help,显⽰这些命令的结果,并解释这些命令的作⽤。

图1-1 命令控制台图1-2 windows常⽤命令图1-3 windows常⽤命令图1-4 windows常⽤命令使⽤图1-5 windows常⽤命令使⽤2、使⽤操作系统的程序接⼝。

VB环境下:编制⼀⼩程序,使其可通过某个系统调⽤来获得os 提供的某种服务,如打开控制⾯板:Shell "rundll32.exe Shell32.dll,Control_RunDLL", 1VC环境下:⽤C语⾔编制⼀个⼩程序,使其可通过Localtime( )系统调⽤来获得OS提供的时间和⽇期。

3、使⽤操作系统的图形⽤户接⼝(略)。

三、思考:OS向⽤户提供的命令接⼝、图形⽤户接⼝和程序接⼝分别适⽤于哪些场合?实验⼆进程创建与撤消⼀、实验⽬的1、加深对进程概念的理解和进程创建与撤消算法;2、进⼀步认识并发执⾏的实质。

⼆、实验内容本实验完成如下三个层次的任务:(1)系统级—以普通⽤户⾝份认识windows的进程管理。

通过windows的“任务管理器”观察进程的状态,进⾏进程的创建、切换和撤销。

(2)语⾔级—以普通程序员⾝份认识⾼级语⾔VC++/Java/VB的进程创建与撤销⼯具。

(3)模拟级—以OS设计师⾝份编程模拟实现进程创建与撤销功能,并在屏幕上观察进程活动的结果。

三、实验步骤1、windows的进程管理当前状态图2-1 windows任务管理器切换前图2-2 windows任务管理器切换后图2-3 windows任务管理器撤销图2-4 windows任务管理器2、VC++进程创建与撤销⼯具Windows所创建的每个进程都从调⽤CreateProcess() API函数开始,该函数的任务是在对象管理器⼦系统内初始化进程对象。

操作系统实验指导书

操作系统实验指导书

实验报告要求实验报告应包括如下内容z封面:实验报告题目、姓名、学号、完成时间z目录z实验目的z实验内容z实验要求z实验设计(功能设计、数据结构、程序框图、参数说明)z实验测试结果及分析z运行结果z收获及体会z参考资料以上是文字资料。

通过教师上机测试后,要按教师要求上交源代码、目标代码、测试数据的文本(如光盘、电子邮件等方式)。

实验一 UNIX/LINUIX入门实验学时:2学时实验类型:验证型一、 实验目的了解UNIX/LINUX运行环境,熟悉UNIX/LINUX的常用基本命令,熟悉和掌握UNIX/LINUX下c语言程序的编写、编译、调试和运行方法。

二、 实验内容z熟悉UNIX/LINUX的常用基本命令如ls、who、pwd、ps等。

z练习UNIX/LINUX的文本行编辑器vi的使用方法z熟悉UNIX/LINUX下c语言编译器cc/gcc的使用方法。

用vi编写一个简单的显示“Hello,World!”c语言程序,用gcc编译并观察编译后的结果,然后运行它。

三、 实验要求按照要求编写程序,放在相应的目录中,编译成功后执行,并按照要求分析执行结果,并写出实验报告。

四、 Linux 常用命令Linux 系统常用命令格式:command [option] [argument1] [argument2] ...其中option以“-”开始,多个option可用一个“-”连起来,如“ls -l -a” 与“ls -la”的效果是一样的。

根据命令的不同,参数分为可选的或必须的;所有的命令从标准输入接受输入,输出结果显示在标准输出,而错误信息则显示在标准错误输出设备。

可使用重定向功能对这些设备进行重定向。

命令在正常执行结果后返回一个0值,如果命令出错可未完全完成,则返回一个非零值(在shell中可用变量$?查看)。

在shell script中可用此返回值作为控制逻辑的一部分。

五、 帮助命令:man 获取相关命令的帮助信息例如:man dir 可以获取关于dir的使用信息。

操作系统实验指导书

操作系统实验指导书

操作系统实验指导书实验概述本次操作系统实验是为了让学生通过实践了解操作系统的基本概念,原理和使用。

通过完成实验,学生将了解操作系统内核,进程调度,文件系统和输入输出等关键组成部分。

实验环境实验要求使用 Linux 操作系统,可以选择任意一种 Linux 发行版。

可以在物理机上安装 Linux,也可以使用虚拟机软件(如 VirtualBox)来运行 Linux 虚拟机。

实验准备在进行实验之前,需要完成以下准备工作:1.安装 Linux 操作系统(如 Ubuntu、Fedora 等)或虚拟机软件(如VirtualBox)。

2.熟悉 Linux 基本命令和操作,包括文件操作、进程管理等。

实验内容本次操作系统实验分为以下几个部分:1. 实验一:进程管理本部分实验要求学生了解进程管理的基本概念和原理,掌握进程创建、终止和状态转换等操作。

学生需要完成以下任务:•编写一个简单的 C 程序,实现进程的创建、终止和状态转换功能。

•使用 Linux 命令行工具编译、运行和调试 C 程序。

•观察和分析进程的状态转换过程。

2. 实验二:进程调度本部分实验要求学生了解进程调度算法的原理和实现方法,掌握优先级调度、轮转调度和最短作业优先调度等算法。

学生需要完成以下任务:•编写一个简单的 C 程序,模拟进程调度算法的执行过程。

•使用 Linux 命令行工具编译、运行和调试 C 程序。

•观察和分析不同调度算法对进程执行顺序的影响。

3. 实验三:文件系统本部分实验要求学生了解文件系统的基本概念和实现原理,掌握文件的创建、读写和删除等操作。

学生需要完成以下任务:•编写一个简单的 C 程序,实现文件的创建、读写和删除功能。

•使用 Linux 命令行工具编译、运行和调试 C 程序。

•观察和分析文件系统的存储结构和操作过程。

4. 实验四:输入输出本部分实验要求学生了解操作系统的输入输出机制和设备驱动程序的原理和实现方法,掌握文件读写、设备驱动和错误处理等操作。

操作系统实验指导书

操作系统实验指导书

操作系统实验指导书一、实验说明1、实验目的实验是操作系统原理课程中不可缺少的重要教学环节,实验目的是使学生理论联系实际,使学生在实践探索中去发现问题、去解决问题,提高了学生获取知识和应用技术的能力,培养了学生分析和解决问题的能力。

《操作系统原理》要求理论与实践相结合,本门实验课程是对《操作系统原理》课堂教学的一个重要补充,与理论学习起着相辅相成的作用,是实施《操作系统原理》教学的一个重要组成部分。

通过本实验课的实践学习,可以增强本专业的学生对系统实现的认识。

对加深理解和掌握操作系统相关原理有重要帮助。

2、实验要求进一步了解和掌握操作系统原理,提高系统设计的能力。

对每一实验题目,应独立完成,并要求:·上机前,学生必须做好充分的实验准备工作,掌握与实验相关的背景知识,用任一种高级语言编写程序。

·上机时,认真调试,并观察、记录程序运行过程中出现的现象和问题。

·上机后,分析实验结果并写出实验报告。

3、实验报告要求每个实验(包括选做的)均应编写实验报告,学生实验后要写出严谨的、实事求是的、文字通顺的、字迹公整的实验报告。

实验报告应包括以下内容:(1)实验题目(2)实验目的(3)实验内容●程序中使用的数据结构及符号说明●流程图●源程序清单并附上注释(4)实验结果及分析●运行结果(必须是上面程序清单所对应输出的结果)●对运行情况所作的分析以及本次调试程序所取得的经验。

如果程序未能通过,应分析其原因。

二、实验内容实验一熟悉使用计算机系统一、实验名称:熟悉使用计算机系统二、实验目的与要求通过对Windows操作系统的使用,熟悉Windows操作系统中的基本概念,如单用户、多任务、进程和文件等,熟悉Windows中命令行方式下常用命令的使用方法;进一步熟悉TC语言与开发环境,为以后的实验打好基础。

三、实验内容1.开机后,熟悉Windows的界面(桌面、任务栏、开始按钮<点击后出现“开始”菜单>、我的电脑图标、回收站、我的文档)。

操作系统实验指导书及代码

操作系统实验指导书及代码

操作系统实验指导书及代码《操作系统》实验指导书目录实验环境 ................................................. 1 实验报告要求 ............................................. 1 实验一进程控制与处理机调度综合实验 ..................... 2 实验二存储管理与页面置换算法 (7)实验环境本课程实验硬件环境为PⅢ以上的处理器,带有显示器。

操作系统使用windows98以上操作系统,基本编程环境为Turbo C。

实验报告要求实验报告应包含以下内容:(1)实验题目(2)实验目的(3)实验环境(4)算法描述(5)程序源代码(6)出现的问题(7)对问题的解决方案(8)实验结果与结果分析(9)实验思考(学生对本次实验的收获的总结)实验一进程控制与处理机调度综合实验一、实验目的通过模拟进程控制方法及单处理机系统的进程调度,了解进程的结构,进程的创建与撤消,进程的组织及进程的状态及其转换,掌握进程调度策略。

二、实验学时4学时三、实验内容本实验为单机模拟进程调度算法,在程序设计时不需真正地建立线程或者进程。

实验模拟创建若干进程(人为输入或随机数产生),选择一种或几种单处理机的进程调度算法,如FCFS(先来先服务),SPF(短进程优先),RR(时间片轮转法),优先级算法等,模拟进行进程调度。

每进行一次调度,都打印一次运行进程、就绪队列、以及各个进程的PCB,并能在进程完成后及时撤消该进程。

四、算法描述1 进程及进程的运行状态进程是现代计算机中的基本要素,是系统分配资源和调度的基本单位。

进程与程序不同,进程是系统中动态的实体,有它的创建、运行和撤销的过程。

PCB块是系统感知进程存在的唯一实体。

进程的创建必须首先创建进程的PCB块,而进程的运行也伴随着PCB块的变化,进城撤销也要同时撤销它的PCB块。

所以本实验的任务就是通过模拟调度进程的PCB块来调度进程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操作系统实验指导书东北大学软件学院2008年10月实验要求(1)预习实验指导书有关部分,认真做好实验的准备工作。

(2)实验中及时分析记录。

(3)按指导书要求书写实验报告,提交打印版(A4)。

实验的验收将分为两个部分。

第一部分是上机操作,包括检查程序运行和即时提问。

第二部分是提交的实验报告。

实验一进程调度(4学时)一、实验目的在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。

当就绪进程个数大于处理机数时,就必须依照某种策略来决定哪些进程优先占用处理机。

本实验模拟在单处理机情况下的处理机调度,帮助学生加深了解处理机调度的工作。

二、实验类型设计型。

三、预习内容预习课本处理机调度有关内容,包括进程占用处理机的策略方法。

四、实验内容与提示本实验中共有两个实验题。

第一题:编写并调试一个模拟的进程调度程序,采用“最高优先数优先”调度算法对五个进程进行调度。

<一>最高优先级优先调度算法1)优先级简介动态优先数是指在进程创建时先确定一个初始优先数,以后在进程运行中随着进程特性的改变不断修改优先数,这样,由于开始优先数很低而得不到CPU 的进程,就能因为等待时间的增长而优先数变为最高而得到CPU运行。

例如:在进程获得一次CPU后就将其优先数减少1。

或者,进程等待的时间超过某一时限时增加其优先数的值,等等。

2)详细设计优先权调度算法:1、设定系统中有五个进程,每一个进程用一个进程控制块( PCB)表示,进程队列采用链表数据结构。

2、进程控制块包含如下信息:进程名、优先数、需要运行时间、已用CPU时间、进程状态等等。

3、在每次运行设计的处理调度程序之前,由终端输入五个进程的“优先数”和“要求运行时间”。

4、进程的优先数及需要的运行时间人为地指定。

进程的运行时间以时间片为单位进行计算。

5、采用优先权调度算法,将五个进程按给定的优先数从大到小连成就绪队列。

用头指针指出队列首进程,队列采用链表结构。

6、处理机调度总是选队列首进程运行。

采用动态优先数办法,进程每运行一次优先数减“1”,同时将已运行时间加“1”。

7、进程运行一次后,若要求运行时间不等于已运行时间,则再将它加入就绪队列;否则将其状态置为“结束”,且退出就绪队列。

8、“就绪”状态的进程队列不为空,则重复上面6,7步骤,直到所有进程都成为“结束”状态。

9、在设计的程序中有输入语句,输入5个进程的“优先数”和“要求运行时间”,也有显示或打印语句,能显示或打印每次被选中进程的进程名、运行一次后队列的变化,以及结束进程的进程名。

10、最后,为五个进程任意确定一组“优先数”和“要求运行时间”,运行并调试所设计的程序,显示或打印出逐次被选中进程的进程名及其进程控制块的动态变化过程。

3)流程图:图一.最高优先级优先调度算法流程图<二>简单轮转法调度算法1)简单轮转法的基本思想:所有就绪进程按 FCFS排成一个队列,总是把处理机分配给队首的进程,各进程占用CPU的时间片相同。

即将CPU的处理时间划分成一个个相同的时间片,就绪队列的诸进程轮流运行一个时间片。

当一个时间片结束时,如果运行进程用完它的时间片后还未完成,就强迫运行机制进程让出CPU,就把它送回到就绪队列的末尾,等待下一次调度。

同时,进程调度又去选择就绪队列中的队首进程,分配给它一时间片,以投入运行。

直至所有的进程运行完毕。

2)详细设计:1、设系统有5个进程,每个进程用一个进程控制块PCB来代表。

2、为每个进程任意确定一个要求运行时间。

3、按照进程输入的先后顺序排成一个队列。

再设一个队首指针指向第一个到达进程的首址。

4、执行处理机调度时,开始选择队首的第一个进程运行。

另外,再设一个当前运行进程的指针,指向当前正在运行的进程。

5.考虑到代码的可重用性, 轮转法调度程序和最高优先级优先调度是调用同一个模快进行输出。

6.进程运行一次后,以后的调度则将当前指针依此下移一个位置,指向下一个进程,即调整当前运行指针指向该进程的链接指针所指进程,以指示应运行进程。

同时还应判断该进程的要求运行时间是否等于已运行时间。

若不等,则等待下一轮的运行,否则将该进程的状态置为完成态C,并退出循环队列。

7.若就绪队列不空,则重复上述的(5)和(6)步骤直到所有的进程都运行完为止。

8.在所设计的调度程序中,包含显示或打印语句。

显示或打印每次选中的进程的名称及运行一次后队列的变化情况。

3)流程图图二. 简单轮转法调度算法流程图五、思考题(1)处理机调度的目的?(2)你实现优先数调度算法的思想?(3)你采用时间片轮转法实现处理机调度的思想?(4)比较效率如何?六、实验报告(1) 实验题目。

(2) 程序中使用的数据结构及符号说明。

(3) 流程图。

(4) 打印一份源程序并附上注释。

(5) 打印程序运行时的初值和运行结果。

参考资料(1)《计算机操作系统》(修订版),汤子瀛等编,西安电子科技大学出版社,2001-8。

(2)《<计算机操作系统>学习指导与题解》,汤子瀛等编, 西安电子科技大学出版社,2003-3。

实验二资源分配(4学时)一、实验目的多个进程动态地共享系统的资源可能会产生死锁现象。

死锁的产生,必须同时满足四个条件,第一个是互斥条件,即一个资源每次只能由一个进程占用;第二个为等待条件,即一个进程请求资源不能满足时,它必须等待,但它仍继续保持已得到的所有其它资源;第三个是非出让条件,任何一个进程不能抢占另一个进程已经获得且未释放的资源;第四个为循环等待条件,系统中存在若干个循环等待的进程,即其中每一个进程分别等待它前一个进程所持有的资源。

防止死锁的机构只须确保上述四个条件之一不出现,则系统就不会发生死锁。

在实验中假定系统中任一资源在每一时刻只能则由一个进程使用,任何进程不能抢占它进程正在使用的资源,当进程得不到资源时必须等待。

因此只要资源分配策略能保证进程不出现循环等待,则系统就不会发生死锁。

本实验要求学生编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用适当的算法,有效地防止和避免死锁的发生。

二、实验类型设计型。

三、预习内容预习课本资源分配有关内容,包括死锁发生条件及防止避免死锁的方法。

四、实验要求与提示本实验中共有两个实验题。

第一题:用银行家算法实现资源分配。

要求:(1) 假定系统中有五个进程{P0, P1, P2, P3, P4}和三类资源{A, B, C},各种资源的数量分别为10、5、7,在T0时刻的资源分配情况如图所示。

利用银行家算法设计系统,进程可动态地申请资源和释放资源,系统按各进程的申请动态地分配资源。

(2) 设计用银行家算法和随机分配算法,实现资源分配的两个资源分配程序,应具有显示或打印各进程依次要求申请的资源数以及依次分配资源的情况。

(3) 确定一组各进程依次申请资源数的序列,在相同的情况下分别运行上述两种资源分配程序,观察运行结果。

[提示]:(1) 银行家算法,顾名思义是来源于银行的借贷业务,一定数量的本金要应付多个客户的借贷周转,为了防止银行因资金无法周转而倒闭,对每一笔贷款,必须考察其是否能限期归还。

在操作系统中研究资源分配策略时也有类似的问题,系统中有限的资源要供多个进程使用,必须保证得到资源的进程能在有限的时间内归还资源,以供其它进程使用资源。

如果资源分配不得当,就会发生进程循环等待资源,各进程都无法继续执行下去的死锁现象。

银行家算法分配资源的原则是:系统掌握每个进程对资源的最大需求量,当进程要求申请资源时,系统就测试该进程尚需资源的最大量,如果系统中现存的资源数大于或等于该进程尚需的最大量时,则就满足进程的当前申请。

这样可以保证至少有一个进程可能得到全部资源而执行到结束,然后归还它所占用的全部资源供其它进程使用。

银行家算法破坏了产生死锁的第四个条件,即不可能产生循环等待,从而可以避免死锁的发生。

(2) 把各进程需要和已占用资源的情况记录在进程控制块中,假定进程控制块PCB的格式如表1。

其中“状态”有就绪态、等待态和完成态。

当进程处于等待态时,表示系统不能满足该进程当前的资源申请。

“资源需求总量”表示进程在整个执行过程中总共要申请的资源量。

“已占资源量”表示进程目前已经得到但还未归还的资源量。

因此,进程在以后还需要的最大资源量等于资源需求总量减去已占有资源量。

显然,每个进程的资源需求总量不能超过系统拥有的资源总数。

表1 PCB格式(3) 为了观察死锁现象的发生,了解用银行算法进行资源分配可以避免死锁,故在模拟程序中采用两种资源分配算法:银行算法和随机算法。

随机算法的分配原则是:当进程申请资源时,如果系统中现存资源数能满足进程的当前资源申请图1 资源分配模拟程序总流程量,就把资源分配给该进程,否则就置进程为等待态。

用随机算法分配资源可能会产生死锁。

资源分配模拟程序总流程见图1。

随机分配算法流程见图2。

图2 随机分配算法模拟流程第二题:用按序分配策略实现资源分配。

要求:(1) 设计一个3个进程共享10个资源的系统,进程可动态地申请资源和释放资源,系统按各进程的申请动态地分配资源。

(2) 设计用按序分配算法实现资源分配的资源分配程序,应具有显示或打印各进程依次要求申请的资源号以及依次分配资源地情况。

(3) 确定两组各进程依次要求申请的资源号,要求其中的一组中各进程按序地申请资源,另一组中各进程申请资源不受序号限制,分别运行上述设计的资源分配程序,观察运行结果。

[提示]:(1) 防止进程发生循环等待的另一种资源分配策略是按序分配算法,其基本思想如下:把系统中所有的资源排一个顺序,例如系统共有m个资源,用r i表示第i个资源,那么这m 个资源是:r1, r2, r3……, r m规定任何进程不得在占用资源r i(1<i≤m)后再申请r j(j<i≤m),或者说,如果里程需要资源r j,那么它必须在申请r i之前申请(j<i)。

可以证明,按这种策略分配资源时破坏了循环等待条件,故能防止发生死锁(证明略)。

(2) 把各进程申请资源的情况记录在进程控制块PCB中,现假定进程控制块PCB的格式如下:其中“状态”可以为就绪态、等待态和完成态。

当进程处于等待态时,表示系统不能满足该进程的当前资源申请,此时,PCB中的“当前等待资源号”反映了该进程等待的资源。

当系统为进程分配了一个资源后,则把分配的资源号填入“上次申请资源号”一栏中。

(3) 假定系统中拥有的资源数m=10,而系统中申请资源的进程数N=3。

按序分配算法程序流程见图3。

图3 按序分配算法模拟流程五、思考题(1)死锁发生的条件?(2)避免死锁的方法有哪些?(3)你的算法采用什么思想预防或避免死锁的发生?(4)效率如何?六、实验报告(1) 实验题目。

相关文档
最新文档