操作系统课程设计

发布 2022-10-05 12:06:28 阅读 6667

安徽农业大学经济技术学院。

操作系统》课程设计。

专业: 计算机科学与技术

年级: 08级(1)班

学号: 08538005

学生姓名: 李明明

指导老师: 邵陆寿 成绩。

课程设计要求。

一、 课程设计的目的

操作系统是计算机系统的核心系统软件,它负责控制和管理整个系统的资源并组织用户协调使用这些资源,使计算机高效的工作。《操作系统课程设计》是《操作系统》理论课的必要补充,是复习和检验所学课程的重要手段,本课程设计的目的是综合应用我们所学知识,通过实验环节,加深对操作系统基本原理和工作过程的理解,提高独立分析问题、解决问题的能力,增强自身的动手能力。

二、 课程设计的要求。

1.分析设计内容,给出解决方案(要说明设计实现的原理,采用的数据结构)。

2.画出程序的基本结构框图和流程图。

3.对程序的每一部分要有详细的设计分析说明。

4.源**格式要规范。

5.设计合适的测试用例,对得到的运行结果要有分析。

6.设计中遇到的问题,设计的心得体会。

7.按期提交完整的程序**、可执行程序和课程设计报告。

银行家算法描述。

1. 课程设计题目描述

银行家算法是一种最有代表性的避免死锁的算法。

要解释银行家算法,必须先解释操作系统安全状态和不安全状态。

安全状态:如果存在一个由系统中所有进程构成的安全序列p1,…,pn,则系统处于安全状态。安全状态一定是没有死锁发生。

不安全状态:不存在一个安全序列。不安全状态不一定导致死锁。

那么什么是安全序列呢?

安全序列:一个进程序列是安全的,如果对于每一个进程pi(1≤i≤n),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程pj (j < i )当前占有资源量之和。

2. 银行家算法:

我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。

若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。

银行家算法原理。

1. 银行家算法的思路。

先对用户提出的请求进行合法性检查,即检查请求的是不大于需要的,是否不大于可利用的。若请求合法,则进行试分配。

2. 银行家算法中用到的主要数据结构。

可利用资源向量 int **ailablea

需求总量矩阵 int maxa

资源占有矩阵 int processes[p].a

需求矩阵 int need_a= maxa- processes[p].a

申请各类资源数量 int request p[a]进程p申请a资源的数量。

3. 银行家算法bank()

进程p发出请求申请k个a资源,request p[a]=k

1)检查申请量是否不大于需求量:request p[a]<=need_a,若条件不符重新输入,不允许申请大于需求量。

2)检查申请量是否小于系统中的可利用资源数量:request p[aj]<=**ailablea,若条件不符就申请失败,阻塞该进程,跳转到重新申请资源。

3)若以上两个条件都满足,则系统试探着将资源分配给申请的进程,并修改下面数据结构中的数值:

**ailablea= **ailablea- request p[a];

processes[p].a processes[p].a =+request p[a];

need_a= need_a- request p[a];

4)试分配后,执行安全性检查,调用safe()函数检查此次资源分配后系统是否处于安全状态。若安全,才正式将资源分配给进程;否则本次试探分配作废,恢复原来的资源分配状态,让该进程等待。

源程序结构分析及**实现。

1. 银行家算法流程图。

图1 主要流程图。

1) 新加作业。

2) 为作业申请资源。

2. **实现:

#include<>

#include<>

#include <>

#include<>

#include<>

#include<>

const int max_p=20;//控制作业的个数

const int maxa=10; /定义a类资源的数量

const int maxb=5; /定义b类资源的数量。

const int maxc=7; /定义c类资源的数量。

typedef struct node

/新加作业

void add()

char name[20]; 控制作业的数量。

int flag=0;

int t;

int need_a,need_b,need_c;//定义需要a ,b,以及c类资源的数量

int i;

cout

cin>>name;

for(i=0;iif(!strcmp(processes[i].name,name))/判断新加作业是否与已有作业同名。

flag=1;

break;

if(flag)

else else

/为作业申请资源

void bid()

char name[20];

int i,p;

int a,b,c;

int flag;

cout

cin>>name;

p=-1;

for(i=0;iif(!strcmp(processes[i].name,name))

操作系统课程设计

课程设计 河北大学工商学院。装。订。线。操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专 操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专业计算机类 学号 姓名。指导教师。年 6 月 24 日。设备管理 2 2.1设计任务2 2.2设计要求...

操作系统课程设计

银行家算法模拟。系别 班级 组员 银行家算法模拟。1.课程设计目的。通过本次课程设计,加深对最经典的避免死锁的银行家算法的理解,掌握死锁形成必要条件 安全状态等概念的理解,通过用c语言编程模拟该算法,并在windows平台上实现,更好地掌握操作系统的原理及实现方法。2.任务及要求。设n为系统进程的个...

操作系统课程设计

学生实习实训报告。实习类型 操作系统课程设计 学号 0901110005 学生姓名 田兴杰 指导教师 曹春梅 专业班级 信息安全技术0901班 院 部 电子信息系 2011年 1 月 7日。实习实训成绩评定表。目录。目录3 摘要4关键字4 1.1虚拟机简介5 1.1.1 一般意义的虚拟机5 1.1....