文档库 最新最全的文档下载
当前位置:文档库 › 操作系统实验指导九(独占设备的分配和回收模拟)

操作系统实验指导九(独占设备的分配和回收模拟)

实验九独占设备的分配和回收模拟

(综合性编程实验 4学时)

(本次作业要交,交作业时间:第15周上机课前)

一. 目的要求

通过模拟独占设备的分配和回收,了解操作系统对设备资源组织管理和分配、回收过程,掌握设备管理的思想。

二.实验任务

编程模拟满足设备独立性的独占设备的分配和回收。

三.实验环境、设备

硬件:586以上的PC系列机,主频大于166M,内存大于16MB,硬盘空闲空间大于500MB。

软件:选择一个自己熟悉的计算机操作系统(如 DOS、 Windows98/2000/XP、UNIX、linux等,根据各学校的条件与环境而定)和程序设计语言(如 Turbo C、 C语言、PASCAL语言等)。

编程语言由各位同学自己选择确定,不做统一规定。

四.实验指导

(一)数据结构及算法

操作系统设置“设备分配表”,用来记录计算机系统所配置的独占设备类型、台数以及分配情况等。为了实现设备分配的独立性,一般设备分配表可以由“设备类表”和“设备表”两部分组成。

设备类表记录系统中的各类设备,每类设备占用一个登记栏,登记该类设备的总台数、当前有几台设备空闲以及该类设备在设备表中的起始地址。每一台设备在“设备表”中占用一个登记项,同类的若干台设备连续登记在设备表中。设备表中登记每一台设备的绝对号、设备的好坏情况、设备是否分配、设备被哪一个作业占用和设备相对号。

在设备表中,用“1”表示设备好,用“0”表示设备坏;用“1”表示设备已分配,用“0”表示设备末分配。

设备类表的数据结构定义如下:

#define n 4

struct

{char type[4];/*设备类名*/

int count;/*拥有设备台数*/

int remain;/*某类设备现存可用的台数*/

int address;/*该类设备在设备表中的起始地址*/

}equiptype[n]/*设备类表定义,假定系统有 n个设备类型*/

设备表的数据结构定义如下:

#define m 10

struct

{Int number;/*设备绝对号*/

int status;/*设备好环状态,“o”表示设备坏;用“ l”表示设备好*/

int remain;/*设备是否已分配,用“l”介表示已分配,用“o”表示末分配*/

char jobname[4];/*占有设备的作业名*/

int inumber;/*设备相对号*/

}equipment[m]/*设备表定义,假定系统有m个设备*/

当作业申请某类设备时,系统先查“设备类表”,如果该设备的现存台数可以满足申请要求,则从“设各类表”中得到该类设备的设备表起始地址,然后找到“设备表”中该类设备的起始地址,依次查询该类设备的每一个登记项,找出“好的且末分配”的设备分配给该作业.分配后要修改设备类表中的现存台数,把分配给该作业的设备状态改为“已分配”,且填上占用该设备的作业的作业名和程序中定义的相对号,最后,把设备的绝对号与相对号的对应关系通知用户.

当作业运行完回收设备时,首先要查设备表,比较每一项,找到占用作业名与运行完作业的作业名的一栏,将这一栏的“已/未分配”置为“未分配”.然后将

设备表中对应设备类的“现存台数”增1.

实验中,首先要建立“设备类表”和“设备表”,假设系统的模拟设备如下表:

分配设备要求输入作业名、设备类名和相对号,回收设备要求输入作业名和设备类名。

(3)测试(运行时屏幕显示,红色字表示从键盘输入)

0一退出,l一分配,2一回收,3一显示

选择功能项(0一3):3

输出设备类表:

设备类型设备总量空闲好设备

input 2 2

printer 3 3

disk 4 4

tape 1 1

输出设备表:

绝对号好/坏已/未分配占用作业名相对号

0 1 0 0

1 1 0 0

2 1 0 0

3 1 0 0

4 1 0 0

5 1 0 0

6 1 0 0

7 1 0 0

8 1 0 0

9 1 0 0

0一退出,l一分配,2一回收,3一显示

选择功能项(0-3):l

输人作业名、作业所需设备类和设备相对号J1 ddd 2

无该类设备,设备分配失败

0一退出,l一分配,2一回收,3一显示

选择功能项(0-3):l

输人作业名、作业所需设各类和设备相对号J1 input 1

分配成功

0-退出,l一分配,2一回收,3一显示

选择功能项(0-3):l

输入作业名、作业所需设备类和设备相对号J2 input 3

分配成功

0一退出,l一分配,2一回收,3一显示

选择功能项(0-3):l

输人作业名、作业所需设各类和设备相对号J1 input 2

该类设备不足,分配失败

0一退出,l一分配,2一回收,3一显示

选择功能项(0-3):l

输入作业名、作业所需设备类和设备相对号J1 Printer l

分配成功

0一退出,l一分配,2一回收,3一显示

选择功能项(0一3):1

输入作业名、作业所需设备类和设备相对号J1 Printer 2 分配成功

0一退出,l一分配,2一回收,3一显示

选择功能项(0-3):1

输入作业名、作业所需设备类和设备相对号J4 disk 1

分配成功

0一退出, l一分配,2一回收,3一显示

选择功能项(0一3):3

输出设备类表:

设备类型设备总量空闲好设备

input 2 0

printer 3 1

disk 4 3

tape 1 1

输出设备表:

绝对号好/坏已/未分配占用作业名相对号

0 1 1 J1 1

1 1 1 J

2 3

2 1 1 J1 1

3 1 1 J1 2

4 1 0 0

5 1 1 J4 1

6 1 0 0

7 1 0 0

8 1 0 0

9 1 0 0

0一退出,l一分配,2一回收,3一显示

选择功能项(0一3):2

输入作业名和作业归还的设备类J1 disk

该作业没有使用该类设备

0一退出,l一分配,2一回收,3一显示

选择功能项(0一3):2

输入作业名和作业归还的设备类J1 ddf

无该类设备,设备回收失败

0一退出,l一分配,2一回收,3一显示

选择功能项(0-3):2

输人作业名和作业归还的设备类J1 printer

回收成功

0一退出,l一分配,2一回收,3一显示

选择功能项(0-3):2

输人作业名和作业归还的设备类J1 input

回收成功

0一退出,回一分配,2一回收,3一显示

选择功能项(0-3):2

输人作业名和作业归还的设备类J4 disk

回收成功

0一退出,l一分配,2一回收,3一显示

选择功能项(0-3):3

输出设备类表:

设备类型设备总量空闲好设备

input 2 1

printer 3 2

disk 4 4

tape 1 1

输出设备表:

绝对号好/坏已/未分配占用作业名相对号

0 1 0 J1 1

1 1 1 J

2 3

2 1 0 J1 1

3 1 1 J1 2

4 1 0 0

5 1 0 J4 1

6 1 0 0

7 1 0 0

8 1 0 0

9 1 0 0

0一退出,1一分配,2一回收,3一显示

选择功能项(0一3):0

五.实验源代码

#include

#include

#include

#define false 0

#define true 1

#define n 4

#define m 10

struct

{ char type[10]; /*设备类名*/ int count; /*拥有设备台数*/

int remain; /*现存的可用设备台数*/

int address; /*该类设备在设备表中的起始地址*/

}

equiptype[n];

/*设备类表定义,假定系统有n个设备类型*/

struct

{

int number; /*设备绝对号*/

int status; /*设备好坏状态*/

int remain; /*设备是否已分配*/

char jobname[4]; /*占有设备的作业名*/

int lnumber; /*设备相对号*/ }

equipment[m]; /*设备表定义,假定系统有m个设备*/

allocate(char *J,char *type,int cc)

{

int i,t,j; /*查询该类设

备*/

i=0;

while(i

i++;

if(i>=n) /*没有找到该类设备*/

{

printf("无该类设备,设备分配失败!");

return(false);

}

if(equiptype[i].remain<1) /*所需设备现存可用台数不足*/

{

printf("该类设备不足,分配失败!");

return(false);

}

t=equiptype[i].address; /* 取出该类设备在设备表中的起始地址*/

while(!(equipment[t].status==1 && equipment[t].remain==0))

t++; /*填写作业名、相对号,

状态改为已分配*/

equiptype[i].remain--;

equipment[t].remain=1;

strcpy(equipment[t].jobname,J);

equipment[t].lnumber=cc;

}

/*设备分配函数结束*/ reclaim(char *J,char *type)

{

int i,t,j,k,nn;

i=0;

while(i

i++;

if(i>=n) /*没有找到该类设备*/

{

printf("无该类设备,设备回收失败!");

return(false);

}

t=equiptype[i].address; /*取出该类

设备在设备表中的起始地址*/

j=equiptype[i].count; /*取出该类设备的数量*/

k=0;

nn=t+j;

for(;t

if(strcmp(equipment[t].jobname,J)==0&&equipment[t].remain==1)

{

equipment[t].remain=0;

k++;

}

equiptype[i].remain= equiptype[i].remain+k;

if(k==0)

printf("The jop haven't use this kind of equitmenttype!/n");

}

/*设备回收函数结束*/ void main( )

{

char J[4];

int i,mm,a;

char type[10];

printf("设备类初始化:(请输入相应设备的数量,当前空闲设备数量,设备表起始地址)\n ");

for(i=0;i<4;i++) /*设备类表初始化:*/

{

printf("请输入相应设备名称:");

scanf("%s",&equiptype[i].type);

printf("请输入相应设备的数量:");

scanf("%d",&equiptype[i].count);

printf("请输入当前空闲设备数量:");

scanf("%d",&equiptype[i].remain);

printf("请输入设备表起始地址:");

scanf("%d",&equiptype[i].address);

}

for(i=0;i<10;i++) /*设备表初始化:*/

{

equipment[i].number=i;

equipment[i].status=1;

equipment[i].remain=0;

}

while(1)

{

printf("\n0-退出,1-分配,2-回收,3-显示");

printf("\n选择功能项(0-3):");

scanf("%d",&a);

switch(a)

{

case 0 : /*a=0程序结束*/

exit(0);

case 1 : /*a=1分配设备*/

printf("输入作业名、作业所需设备类和设备相对号\n");

scanf("%s%s%d",J,type,&mm);

allocate(J,type,mm); /*分配设备*/

break;

case 2: /*a=2回收设备*/

printf("输入作业名和作业归还的设备类\n");

scanf("%s%s",J,type); /*输入要回收的作业名及对应的设备类*/

reclaim(J,type); /*回收设备*/

break;

case 3: /*a=3 输出设备类表和设备表的内容*/

printf("输出设备类表!\n"); /*输出设备类表内容*/

printf(" 设备类型设备总量空闲好设备\n");

for(i=0;i

printf("%9s%16d%22d%14d\n",equiptype[i].type,equiptype[i].count,equipt ype[i].remain,equiptype[i].address);

printf("输出设备表:\n"); /*输出设备表内容*/

printf("绝对号好/坏已/未分配占用作业名相对号\n");

for(i=0;i

printf("%3d%11d%15d%15s%9d\n",equipment[i].number,equipment[i].stat us,equipment[i].remain,equipment[i].jobname,equipment[i].lnumber);

}

}

}

操作系统课程设计之独占设备的分配

操作系统课程设计报告 院(系): 专业: 学生姓名: 班级:学号: 题目:独占设备的分配与回收 起迄日期: 设计地点:实验中心 指导教师: 2011—2012年度第 2 学期 完成日期: 2012 年 7 月 10 日 一、课程设计目的 在多到程序环境下,系统中的设备供所有进程共享。为防止进程对系统资源的无序竞争,

特规定系统设备不允许用户自行使用,必须由系统统一分配。每当进程项系统提出I/O请求时,只要是可能和安全带,设备分配程序编按照一定的策略,吧设备分配给请求用户。在有的系统中,为了确保在CPU与设备之间能进行通信,还应分配相应的控制器和通道。为了实现设备分配,必须在系统中设置相应的数据结构。 掌握独占设备的分配流程,会使用安全性算法检查设备分配是否安全 二、课程设计内容与要求 1)合理设计SDT、DCT、COCT、CHCT的数据结构 2)独占设备、控制器与通道的数目可在界面进行设置 3)进程申请使用独占设备时至少要求包括申请时间与使用时间 4)可读取样例数据(要求存放在外部文件中)进行独占设备、控制器与通道数目的初 始化,进行进程申请设备的初始化 5)点击开始运行后,系统自动根据初始设定的数据进行设备分配与回收,所有状态信 息需动态地显示出来:设备、控制器、通道数目,阻塞队列情况等 6)运行中可动态增加申请设备的进程,可随时暂停,查看当前状态 7)使用可视化界面进行演示 三、系统分析与设计 1、系统分析 (1)信息:此系统中包括了SDT、DCT、COCT、CHCT表,其中SDT包括了设备的类型,设备标识符;DCT包括设备类型、设备标识符、设备状态、该设备指向的控制器;C OCT包括控制器标识符、控制器状态、与控制器相连的通道;CHCT包括通道标识符、通道状态、与通道相连的控制器。 (2)行为:某进程在某时间申请某设备,系统通过查看申请设备的状态和控制器、通道来判断该进程能否申请成功、是否阻塞等并动态的显示出进程申请的时间和使用时间等信息。 (3)表示:系统包括3个界面:主界面、申请进程界面和添加设备界面。主界面包含了初始化按钮、开始按钮、添加设备、申请新进程、暂停按钮。其中添加设备和申请新进程按钮分别于添加设备界面和申请进程界面接口。申请进程界面需要输入新进程名,申请设备的类型、标识符和进程开始时间和执行时间;添加设备界面需要输入设备的类型、标识符、控制器和通道。 2、系统设计: 2.1、模块设计: 次程序包括3个包,分别为table包、map包、jframe包。table包中有SDT、DCT、C OCT、CHCT表的结构;map包包括了分别对应SDT、DCT、COCT、CHCT的表的映射的写入和读的方法;jframe包包括界面和主要函数(MainF类、Mythread类、increase类、inc reaseP类、Fileread类)。MainF类能调用Mythread类、Fileread类,申请进程界面调用incr easeP类,添加设备界面调用increase类

《操作系统原理》信管专业实验指导书资料

《操作系统原理》实验指导书 班级:_______________ 学号:_______________ 姓名:_______________ 山东建筑大学管理工程学院 信息管理与信息系统教研室

目录 引言 (1) 实验题目一 (2) 实验题目二 (4) 实验题目三 (6) 实验题目四 (8) 实验题目五 (10) 实验题目六 (12)

引言 操作系统是信息管理与信息系统专业一门重要的专业理论课程,了解和掌握操作系统的基本概念、功能和实现原理,对认识整个计算机系统的工作原理十分重要。 操作系统实验是操作系统课程的一个重要组成部分,通过试验环节的锻炼使同学们不仅能够对以前的所学过的基础知识加以巩固,同时能够通过上机实验,对操作系统的抽象理论知识加以理解,最终达到融会贯通的目的,因此,实验环节是同学们理解、掌握操作系统基本理论的一个重要环节。 本实验指导书,根据教材中的重点内容设定了相应的实验题目,由于实验课程的学时有限,我们规定了必做题目和选做题目,其中必做题目必须在规定的上机学时中完成,必须有相应的预习报告和实验报告。选做题目是针对有能力或感兴趣的同学利用课余时间或上机学时的剩余时间完成。

实验题目一:模拟进程创建、终止、阻塞、唤醒原语 一、题目类型:必做题目。 二、实验目的:通过设计并调试创建、终止、阻塞、唤醒原语功能,有助于对操作系统中进 程控制功能的理解,掌握操作系统模块的设计方法和工作原理。 三、实验环境: 1、硬件:PC 机及其兼容机。 2、软件:Windows OS ,Turbo C 或C++、VC++、https://www.wendangku.net/doc/db12000757.html, 、Java 等。 四、实验内容: 1、设计创建、终止、阻塞、唤醒原语功能函数。 2、设计主函数,采用菜单结构(参见后面给出的流程图)。 3、设计“显示队列”函数,目的能将就绪、阻塞队列中的进程信息显示在屏幕上,以供 随时查看各队列中进程的变化情况。 五、实验要求: 1、进程PCB 中应包含以下内容: 2、系统总体结构: 其中: 进程名用P1,P2标识。 优先级及运行时间:为实验题目二做准备。 状态为:就绪、运行、阻塞,三种基本状态。 指针:指向下一个PCB 。

《实用操作系统》实验报告五linux设备管理

《实用操作系统》实验报告 实验报告: 5 实验项目名称:设备管理 班级:学号:姓名: 地点:时间:2013 年11 月13 日 一、实验内容 1、添加硬盘,创建二个主分区、一个扩展分区,二个逻辑分区 注意:ide、scsi 提示:分区、格式化、挂载(fdisk,mkfs,mount) 2、查看常见的设备文件有哪些?(ls /dev ) 常见的设备文件:/dev/hd* IDE接口的硬盘(IDE接口的设备) /dev/sd* SCSI/USB设备/dev/cua* 串口设备/dev/lp* 并口设备/dev/tty* 终端设备/dev/consol 控制台设备/dev/eth* 以太网设备/dev/cdrom IDE光驱/dev/fd* 软驱/dev/audio 音频设备/dev/scd SCSI的光驱/dev/ppp PPP设备/dev/isdn* ISDN设备 3、挂载光盘,查看光盘内容创建挂载点要求:以本人姓名缩写为目录mkdir / 目录/设备挂载mount 空格源设备空格挂载点 4、显示管理System-config-display 5、声卡管理System-config-soundcard 6、打印机管理System-config-printer 7、网卡管理System-config-network 二、实验步骤及结果 1.添加硬盘,创建分区; 在启动虚拟机前,在工具栏中点击“虚拟机”,找到“设置”选项,在左面的硬件中找到硬盘,进行硬盘设备添加,这里有IDE和SCSI两种硬盘类型可供选择添加。完成硬盘添加后即可启动虚拟机进入linux系统。在这我添加了容量相同的硬盘设备类型各一;

操作系统实验六_设备管理

操作系统课程报告实验六设备管理 学号 姓名 班级 教师 华侨大学电子工程系

实验目的 1、理解设备管理的概念和任务。 2、掌握独占设备的分配、回收等主要算法的原理并编程实现。 实验内容与基本要求 1、在Windows系统中,编写程序实现对独占设备的分配和回收的模拟, 该程序中包括:建立设备类表和设备表、分配设备和回收设备的函数。实验报告内容 1、独占设备的分配、回收等主要算法的原理。 为了提高操作系统的可适应性和可扩展性,现代操作系统中都毫无例外地实现了设备独立性,又叫做设备无关性。设备独立性的含义是:应用程序独立于具体使用的物理设备。为了实现独占设备的分配,系统设置数据表格的方式也不相同,在实验中只要设计合理即可。这里仅仅是一种方案,采用设备类表和设备表。 (1)数据结构 操作系统设置“设备分配表”,用来记录计算机系统所配置的独占设备类型、台数以及分配情况。设备分配表可由“设备类表”和“设备表”两部分组成,如下图: (2)设备分配 当进程申请某类设备时,系统先查“设备类表”如果该类设备的现存台数可以满足申请要求,则从该类设备的“设备表”始址开始依次查该类设备在设备表中的登记项,找出“未分配”的设备分配给进程。分配后要修改设备类表中的现存台数,把分配给进程的设备标志改为“已分配”且填上占用设备的进程名。然后,

把设备的绝对号与相对号的对应关系通知用户,以便用户在分配到的设备上装上存储介质。 (3)设备回收 当进程执行结束撤离时应归还所占设备,系统根据进程名查设备表,找出进程占用设备的登记栏,把标志修改为“未分配”,清除进程名。同时把回收的设备台数加到设备类表中的现存台数中。

操作系统原理-进程调度实验报告

一、实验目的 通过对进程调度算法的设计,深入理解进程调度的原理。 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。 进程调度分配处理机,是控制协调进程对CPU的竞争,即按一定的调度算法从就绪队列中选中一个进程,把CPU的使用权交给被选中的进程。 进程通过定义一个进程控制块的数据结构(PCB)来表示;每个进程需要赋予进程ID、进程到达时间、进程需要运行的总时间的属性;在RR中,以1为时间片单位;运行时,输入若干个进程序列,按照时间片输出其执行序列。 二、实验环境 VC++6.0 三、实验内容 实现短进程优先调度算法(SPF)和时间片轮转调度算法(RR) [提示]: (1) 先来先服务(FCFS)调度算法 原理:每次调度是从就绪队列中,选择一个最先进入就绪队列的进程,把处理器分配给该进程,使之得到执行。该进程一旦占有了处理器,它就一直运行下去,直到该进程完成或因发生事件而阻塞,才退出处理器。 将用户作业和就绪进程按提交顺序或变为就绪状态的先后排成队列,并按照先来先服务的方式进行调度处理,是一种最普遍和最简单的方法。它优先考虑在系统中等待时间最长的作业,而不管要求运行时间的长短。 按照就绪进程进入就绪队列的先后次序进行调度,简单易实现,利于长进程,CPU繁忙型作业,不利于短进程,排队时间相对过长。 (2) 时间片轮转调度算法RR

原理:时间片轮转法主要用于进程调度。采用此算法的系统,其程序就绪队列往往按进程到达的时间来排序。进程调度按一定时间片(q)轮番运行各个进程. 进程按到达时间在就绪队列中排队,调度程序每次把CPU分配给就绪队列首进程使用一个时间片,运行完一个时间片释放CPU,排到就绪队列末尾参加下一轮调度,CPU分配给就绪队列的首进程。 固定时间片轮转法: 1 所有就绪进程按 FCFS 规则排队。 2 处理机总是分配给就绪队列的队首进程。 3 如果运行的进程用完时间片,则系统就把该进程送回就绪队列的队尾,重新排队。 4 因等待某事件而阻塞的进程送到阻塞队列。 5 系统把被唤醒的进程送到就绪队列的队尾。 可变时间片轮转法: 1 进程状态的转换方法同固定时间片轮转法。 2 响应时间固定,时间片的长短依据进程数量的多少由T = N × ( q + t )给出的关系调整。 3 根据进程优先级的高低进一步调整时间片,优先级越高的进程,分配的时间片越长。 多就绪队列轮转法: (3) 算法类型 (4)模拟程序可由两部分组成,先来先服务(FCFS)调度算法,时间片轮转。流程图如下:

操作系统原理实验-系统内存使用统计5

上海电力学院 计算机操作系统原理 实验报告 题目:动态链接库的建立与调用 院系:计算机科学与技术学院 专业年级:信息安全2010级 学生姓名:李鑫学号:20103277 同组姓名:无 2012年11 月28 日上海电力学院

实验报告 课程名称计算机操作系统原理实验项目线程的同步 姓名李鑫学号20103277 班级2010251班专业信息安全 同组人姓名无指导教师姓名徐曼实验日期2012/11/28 实验目的和要求: (l)了解Windows内存管理机制,理解页式存储管理技术。 (2)熟悉Windows内存管理基本数据结构。 (3)掌握Windows内存管理基本API的使用。 实验原理与内容 使用Windows系统提供的函数和数据结构显示系统存储空间的使用情况,当内存和虚拟存储空间变化时,观察系统显示变化情况。 实验平台与要求 能正确使用系统函数GlobalMemoryStatus()和数据结构MEMORYSTATUS了解系统内存和虚拟空间使用情况,会使用VirtualAlloc()函数和VirtualFree()函数分配和释放虚拟存储空间。 操作系统:Windows 2000或Windows XP 实验平台:Visual Studio C++ 6.0 实验步骤与记录 1、启动安装好的Visual C++ 6.0。 2、选择File->New,新建Win32 Console Application程序, 由于内存分配、释放及系统存储 空间使用情况均是Microsoft Windows操作系统的系统调用,因此选择An application that support MFC。单击确定按钮,完成本次创建。 3、创建一个支持MFC的工程,单击完成。

操作系统原理实验指导

操作系统实验指导 操作系统是计算机的最重要的系统软件,它在计算机中具有核心地位,其作用是对计算机系统资源进行统一的调度和管理,提供各种强有力的系统服务,为用户创造灵活而又方便的使用环境。一个精心设计的操作系统能极大地扩充计算机系统的功能,充分地发挥系统中各种资源的使用效率,提高系统工作的可靠性。 操作系统原理是计算机科学与技术专业的一门主要专业课程,它涉及计算机系统中各种软、硬资源管理的实现原理与方法,内容非常丰富,综合性非常强,并且还具有很强的实践性。只有把理论与实践紧密地结合起来,才能取得较好地学习效果。 培养计算机专业学生的系统程序设计能力,也是本课程的重要环节。系统程序要求结构清晰、合理、可读性好,有准确而简明的注释。通过实验可以培养学生正规系统程序设计能力。 本实验包括下列六个方面: 实验一几种操作系统的界面 实验二进程调度 实验三存储器管理 实验四存储器管理 实验五磁盘驱动调度 实验六文件管理系统 上述每个实验约需要10个学时。可根据实际情况选用。最好学生自己独立完成,如有困难,可参考一些示例,弄清每个实验的思想和实现方法,上机调试通过,不能完全照搬示例。 实验一几种操作系统的界面 1、目的与要求 目的:通过本实验,学生应熟悉1~2种操作系统的界面。在熟练使用的基础上,能了解各种命令和调用在系统中的大致工作过程,也就是通过操作系统的外部特性,逐步深入到操作系统的内在实质内容中去。 要求:能熟练地在1~2种操作系统环境下工作。学会使用各种命令,熟悉系统提供的各种功能。主动而有效地使用计算机。 熟悉系统实用程序的调用方法和各种系统调用模块的功能和用法。 2、示例 用1~2种操作系统提供的各种手段,建立、修改、编辑、编译和运行程序,最后撤消一个简单程序。要尽可能多地使用系统提供的各种命令和功能。 操作系统可为如下两种序列: (1)Windows 98或Windows 2000或Windows XP。 (2)Linux或Unix。 下面简要介绍一下Unix操作系统。 Unix是一个分时操作系统,面向用户的界面shell是一种命令程序设计语言,这种语言向用户提供了从低到高,从简单到复杂的三个层次的使用方式。它们是简单命令、组合命令和shell过程。 简单命令:Unix命令一律使用小写字母。 例如:ls -l 显示文件目录(长格式) rm 删除一个文件 cat 合并和传送文件、 cp 复制文件 mv 文件改名 cc 编译C语言源程序 组合命令:shell简单命令可以用管道算符|组合构成功能更强的命令。

操作系统实验七设备管理实验(广西师大)

操作系统课程实验 年级2012级 专业计算机科学与技术(应用型)姓名 学号 指导教师黄玲 日期2013年12月26日

实验七、设备管理实验 一、关键问题 1、实验目的 观察Linux下U盘的访问;理解设备虚拟分配技术。 2、实验环境 Ubuntu8.0或者以上,Eclipse集成开发环境 3、实验内容 3.1观察Linux下的U盘访问 从键盘获得符号串,写入磁盘文件,然后读取该文件。 3.2设备管理模拟实验要求:设计一个SPOOLing输入模拟系统。提示:输入井设计成结构体数组,每块存放一个输入文件内容。三个用户进程与一个后台输入进程并发执行,后台输入进程接受用户键盘输入的文件到输入井,每个用户进程从输入井获取输入数据。 老师所给的例子为为利用内存SPOOLing输入模拟系统,而问题的关键就是如何参考spoolout()设计spoolin()以及修改用户进程usepro()和输入#进程spoolsever()。 二、设计修改思路 spoolout()进程:键入要输入的用户id,如果用户输入文件未完成则键入文件内容,将文件内容mybuf发到输入井。 spoolsever()输入#进程:登记输入请求块,将缓冲区mybuf的数据送入输入井well。若成功送入,返回TRUE,否则返回FALSE。 usepro()用户进程:遍历输入请求块如找到该用户的输入请求,将输入请求块的数据送入用户缓冲区userbuf,并在屏幕输出userbuf。 三、实现修改的关键代码 #include #define WELLSIZE500//输入井的大小 #define FALSE0 #define TRUE1 //进程控制块 struct { int id;//进程标识数 char status;//进程状态,'e'为执行态,'c'为完成态。 int bufflag;//用户缓冲区userbuf空闲标志:FALSE为无数据,TRUE为有数据。 int filec;//本进程需要输出的文件数(用户指定) }pcb[4];//pcb[0]为SPOOLing进程,pcb[1]、pcb[2]、pcb[3]为3个用户进程

实验五(独占设备的分配和回收模拟)

实验五独占设备的分配和回收模拟 一. 目的要求 通过模拟独占设备的分配和回收,了解操作系统对设备资源组织管理和分配、回收过程,掌握设备管理的思想。 二.实验任务 编程模拟满足设备独立性的独占设备的分配和回收。 三.实验环境、设备 vc++ 6.0 pc机 四.实验指导 (一)数据结构及算法 操作系统设置“设备分配表”,用来记录计算机系统所配置的独占设备类型、台数以及分配情况等。为了实现设备分配的独立性,一般设备分配表可以由“设备类表”和“设备表”两部分组成。 设备类表记录系统中的各类设备,每类设备占用一个登记栏,登记该类设备的总台数、当前有几台设备空闲以及该类设备在设备表中的起始地址。每一台设备在“设备表”中占用一个登记项,同类的若干台设备连续登记在设备表中。设备表中登记每一台设备的绝对号(物理设备名)、设备的好坏情况、设备是否分配、设备被哪一个作业占用和设备相对号(逻辑设备名)。

在设备表中,用“1”表示设备好,用“0”表示设备坏;用“1”表示设备已分配,用“0”表示设备末分配。 设备类表的数据结构定义如下: #define n 4 struct {char type[4];/*设备类名*/ int count;/*拥有设备台数*/ int remain;/*某类设备现存可用的台数*/ int address;/*该类设备在设备表中的起始地址*/ }equiptype[n]/*设备类表定义,假定系统有n个设备类型*/ 设备表的数据结构定义如下: #define m 10 struct {Int number;/*设备绝对号*/ int status;/*设备好环状态,“o”表示设备坏;用“ l”表示设备好*/ int remain;/*设备是否已分配,用“ l”介表示已分配,用“o”表示末分配*/ char jobname[4];/*占有设备的作业名*/ int inumber;/*设备相对号*/ }equipment[m]/*设备表定义,假定系统有m个设备*/ 当作业申请某类设备时,系统先查“设备类表”,如果该设备的现存台数可以满足申请要求,则从“设各类表”中得到该类设备的设备表起始地址,然后找到“设备表”中该类设备的起始地址,依次查询该类设备的每一个登记项,找出“好的且末分配”的设备分配给该作业.分配后要修改设备类表中的现存台数,把分配给该作业的设备状态改为“已分配”,且填上占用该设备的作业的作业名和程序中定义的相对号,最后,把设备的绝对号与相对号的对应关系通知用户. 当作业运行完回收设备时,首先要查设备表,比较每一项,找到占用作业名与运行完作业的作业名的一栏,将这一栏的“已/未分配”置为“未分配”.然后将设备表中对应设备类的“现存台数”增1. 实验中,首先要建立“设备类表”和“设备表”,假设系统的模拟设备如下表:

实验指导(2015完全版)

操作系统上机实验指导书 (第一版) 闫大顺李晟编著 吴家培主审 计算机科学与工程学院 2014.8

操作系统实验指导 本课程是为《计算机操作系统》课所开的实验。计算机操作系统课程是一门实践性很强的技术课程,本课程实验的目的在于培养学生的实践能力,促进理论与实践的结合。要求学生通过上机编程,熟悉对操作系统原理,并熟练使用程序接口,并了解如何模拟操作系统原理的实现,从而加深对操作系统原理的领会,加深对操作系统实现方法的理解,与此同时使学生在程序设计方面也能够得到很大程度的提高。 实验的目的是使学生理论联系实际,提高学生系统理解与开发能力。这里所列的实验分为必做和选做。具体实验题的选择,不仅要考虑课程内容,而且要考虑学生目前的编程能力,要由浅入深。教师可通过运行示例或动画,帮助学生理解实验要求。学生应选择自己熟悉的语言与开发环境去完成实验。根据以往的教学经验,Delphi、C++ Builder,JBuilder由于提供了许多可重用的构件,易于学习、使用,VC++学习、使用困难较多。实验要求尽量在windows操作系统下,也可以在Linux下完成,由于多数没有专门学习Linux,在其平台下做试验比较困难。实验的硬件要求是能够支持VC++、Delphi、C++ Builder,JBuilder的微机即可。每个学生都独立在一台计算机上完成自己的实验内容,杜绝学生的抄袭。 实验报告的要求 1. 每位同学准备实验报告本,上机前作好充分的准备工作,预习本次实验的内容,事先熟悉与实验有关的软硬件环境。 2. 实验时遵守实验室的规章制度,爱护实验设备,对于实验设备出现的问题,要及时向指导老师汇报。 3. 提交实验文件格式:[班级][学号]_[实验题号].[扩展名] 例:计051班学号为03的学生第四个实验的文件名为:j05103_4.c 4. 最终的实验报告按照实验名称、实验目的、实验内容,实验过程(程序设计、实现与调试)、实验总结五部分书写,按时上交。实验总结是对于实验过程中出现的问题或疑惑的分析与思考。认真按照要求填写到实验报告纸上。

操作系统实验 设备管理汇总

操作系统实验 名称实验六设备管理 姓名 专业 学号 日期 2015年12月01日指导老师

一、实验目的 1.理解设备管理的概念和任务。 2.掌握独占设备的分配、回收等主要算法的原理并编程实现。 二、实验内容与要求 1.在Windows系统中,编写程序实现对独占设备的分配和回收的模拟,该程序中包括:建立设备类表和设备表、分配设备和回收设备的函数。 三、实验原理 1.独占设备的分配、回收等主要算法的原理。 为了提高操作系统的可适应性和可扩展性,现代操作系统中都毫无例外地实现了设备独立性,又叫做设备无关性。设备独立性的含义是:应用程序独立于具体使用的物理设备。 为了实现独占设备的分配,系统设置数据表格的方式也不相同,在实验中只要设计合理即可。这里仅仅是一种方案,采用设备类表和设备表。 (1)数据结构 操作系统设置“设备分配表”,用来记录计算机系统所配置的独占设备类型、台数以及分配情况。设备分配表可由“设备类表”和“设备表”两部分组成,如下 设备类表设备表 控制器表通道表 设备队列队首指针。凡因请求本设备而未得到满足的进程,其PCB都应按照一定的策略排成一个队列,称该队列为设备请求队列或简称设备队列。其队首指针指向队首PCB。在有的系统中还设置了队尾指针。 设备状态。当设备自身正处于使用状态时,应将设备的忙/闲标志置“1”。若与该设备相连接的控制器或通道正忙,也不能启动该设备,此时则应将设备的等待标志置“1”。

与设备连接的控制器表指针。该指针指向该设备所连接的控制器的控制表。在设备到主机之间具有多条通路的情况下,一个设备将与多个控制器相连接。此时,在DCT中还应设置多个控制器表指针。 (2)设备分配 1)当进程申请某类设备时,系统先查“设备类表”。 2)如果该类设备的现存台数可以满足申请要求,则从该类设备的“设备表”始址开始依次查该类设备在设备表中的登记项,找出“未分配”的设备分配给进程。 3)分配后要修改设备类表中的现存台数,把分配给进程的设备标志改为“已分配”且填上占用设备的进程名。 4)然后,把设备的绝对号与相对号的对应关系通知用户,以便用户在分配到的设备上装上存储介质。 (3)设备回收 当进程执行结束撤离时应归还所占设备,系统根据进程名查设备表,找出进程占用设备的登记栏,把标志修改为“未分配”,清除进程名。同时把回收的设备台数加到设备类表中的现存台数中。 设备分配程序的改进 增加设备的独立性:为了获得设备的独立性,进程应使用逻辑设备名I/O。这样,系统首先从SDT中找出第一个该类设备的DCT。若该设备忙,又查找第二个该类设备的DCT,仅当所有该类设备都忙时,才把进程挂在该类设备的等待队列上,而只要有一个该类设备可用,系统便进一歩计算分配该设备的安全性。 四、程序流程图

操作系统原理实验四

实验4 进程控制 1、实验目的 (1)通过对WindowsXP进行编程,来熟悉和了解系统。 (2)通过分析程序,来了解进程的创建、终止。 2、实验工具 (1)一台WindowsXP操作系统的计算机。 (2)计算机装有Microsoft Visual Studio C++6.0专业版或企业版。 3、预备知识 (3)·CreateProcess()调用:创建一个进程。 (4)·ExitProcess()调用:终止一个进程。 4、实验编程 (1)编程一利用CreateProcess()函数创建一个子进程并且装入画图程序(mspaint.exe)。阅读该程序,完成实验任务。源程序如下: # include < stdio.h > # include < windows.h > int main(VOID) ﹛STARTUPINFO si; PROCESS INFORMA TION pi; ZeroMemory(&si,sizeof(si)); Si.cb=sizeof(si); ZeroMemory(&pi,sizeof(pi)); if(!CreateProcess(NULL, “c: \ WINDOWS\system32\ mspaint.exe”, NULL, NULL, FALSE, 0, NULL, NULL, &si,&pi)) ﹛fprintf(stderr,”Creat Process Failed”); return—1; ﹜ WaitForSingleObject(pi.hProcess,INFINITE); Printf(“child Complete”); CloseHandle(pi.hProcess); CloseHandle(pi hThread); ﹜

实验10 操作系统设备管理

实验10 操作系统设备管理 一、按课本第139页【实例分析4-7】内容熟悉设备管理器界面。(若课本没带,打开我的电脑-右键-管理-设备管理-查看相应设备。)记录你使用的电脑的处理器、磁盘存储器等的型号分别是什么。二、学习如何在Microsoft Windows XP 中如何使用设备管理器管 理设备。 使用设备管理器管理设备 设备管理器提供一个图形视图,可显示计算机上安装的硬件以及与硬件关联的设备驱动程序和资源。在设备管理器上,可以集中更改配置硬件的方式以及更改硬件与计算机微处理器交互的方式。 使用设备管理器管理设备及其驱动程序需要拥有下列权限,系统管理员被授予了所有这些权限:?加载/卸载驱动程序权限。 ?向system32\drivers 目录复制文件所需的权限。 ?向注册表写入设置所需的权限。 设备管理器具有下列功能: ?确定计算机上的硬件是否工作正常。 ?更改硬件配置设置。 ?标识为每个设备加载的设备驱动程序,并获取每个设备驱动程序的有关信息。 ?更改设备的高级设置和属性。 ?安装更新的设备驱动程序。 ?禁用、启用和卸载设备。 ?重新安装驱动程序的前一版本。 ?找出设备冲突并手动配置资源设置。 ?打印计算机上所安装设备的概要信息。 通常,设备管理器用于检查计算机硬件的状态以及更新计算机上的设备驱动程序。如果您是高级用户并且通晓计算机硬件知识,则可以使用设备管理器的诊断功能来消除设备冲突和更改资源设置。 要访问设备管理器,请使用下列任一方法: ?单击开始,单击运行,然后键入devmgmt.msc。 ?右键单击我的电脑,单击管理,然后单击设备管理器。 ?右键单击我的电脑,单击属性,单击硬件选项卡,然后单击设备管理器。

操作系统概论第5章 设备管理 习题及答案

操作系统概论第5章设备管理 一、单项选择题 1.磁盘是可共享的设备,因此每一时刻()作业启动它。 A.可以有任意多个 B.能限定几个 C.至少能有一个 D.至多能有一个 2.启动磁盘后,对磁盘读/写信息的最小单位是()。 A.逻辑记录 B.物理块 C.数据项 D.字符 3.用户程序中用()来提出使用设备的要求可以提高设备分配的灵活性。 A.绝对号 B.相对号 C.设备类绝对号 D.设备类相对号 4.对移动臂磁盘来说,在执行信息传输时把移动臂移到指定柱面所花费的时间称()时间。 A.寻找 B.延迟 C.传送

D.读/写 5.在磁盘执行信息传输操作所需花费的时间中,()时间是与信息所在磁盘上的物理位置无关的。 A.传送 B.延迟 C.寻找 D.旋转 6.对磁盘进行移臂调度的目的是缩短()时间。 A.启动 B.传送 C.延迟 D.寻找 7.对磁盘进行旋转调度的目的是缩短()时间。 A.启动 B.传送 C.延迟 D.寻找 8.假定在磁盘格式化时把每个盘面划分成大小相等的10个扇区,磁盘的转速为20 毫秒/圈,则传送一块信息所需的时间为()毫秒。 A.2 B.1 C.20

D.10 9.对磁盘进行移臂调度时,若采用()调度算法则必须考虑移动臂的移动方向。 A.先来先服务 B.最短寻找时间优先 C.电梯 D.扫描 10.外围设备与主存储器之间的信息传输操作是由通道执行通道程序来完成的,通道程序是由若干()组成的。 A.通道命令字 B.通道地址字 C.通道状态字 D.通道控制字 11.通道把通道程序的执行情况记录在()中。 A.CAW B.CCW C.CSW D.PSW 12.通道完成一次输人输出操作后,以()方式请求中央处理器进行干预。 A.条件码 B.I/O中断 C.转移指令 D.外部中断

操作系统原理实验报告(终版)

操作系统原理实验报告(终版)

————————————————————————————————作者:————————————————————————————————日期:

[键入文字] XX学校 实验报告 课程名称: 学院: 专业班: 姓名: 学号: 指导教师: 2011 年3 月

目录 实验1 进程管理 (3) 一、实验目的 (3) 二、实验内容 (3) 三、实验要求 (3) 四、程序说明和程序流程图 (4) 五、程序代码 (5) 六、程序运行结果及分析 (7) 七.指导教师评议 (8) 实验2 进程通信 (9) 一、实验目的 (9) 二、实验内容 (9) 三、实验要求 (9) 四、程序说明和程序流程图 (9) 五、程序代码 (11) 七.指导教师评议 (14) 实验3 存储管理 (15) 一、实验目的 (15) 二、实验内容 (15) 三、实验要求 (15) 四、程序说明和程序流程图 (16) 六、程序运行结果及分析 (23)

七.指导教师评议 (23) 实验4 文件系统 (24) 一、实验目的 (24) 二、实验内容 (24) 三、实验要求 (24) 四、程序说明和程序流程图 (24) 五、程序代码 (26) 六、程序运行结果及分析 (26) 七.指导教师评议 (27)

实验1 进程管理 一、实验目的 1. 弄清进程和程序的区别,加深对进程概念的理解。 2. 了解并发进程的执行过程,进一步认识并发执行的实质。 3. 掌握解决进程互斥使用资源的方法。 二、实验内容 1. 管道通信 使用系统调用pipe( )建立一个管道,然后使用系统调用fork( )创建2个子进程p1和p2。这2个子进程分别向管道中写入字符串:“Child process p1 is sending message!”和“Child process p2 is sending message!”,而父进程则从管道中读出来自两个子进程的信息,并显示在屏幕上。 2. 软中断通信 使用系统调用fork( )创建2个子进程p1和p2,在父进程中使用系统调用signal( )捕捉来自键盘上的软中断信号SIGINT(即按Ctrl-C),当捕捉到软中断信号SIGINT后,父进程使用系统调用kill( )分别向2个子进程发出软中断信号SIGUSR1和SIGUSR2,子进程捕捉到信号后分别输出信息“Child process p1 is killed by parent!”和“Child process p2 is killed by parent!”后终止。而父进程等待2个子进程终止后,输出信息“Parent process is killed!”后终止。 三、实验要求 1. 根据实验内容编写C程序。 2. 上机调试程序。 3. 记录并分析程序运行结果。

JAVAEE课程设计 之实验室设备管理系统

软件学院 课程设计报告书 课程名称 Java高级框架应用开发 设计题目实验室设备管理系统 专业班级软件工程10-6班 学号1020010627 姓名萧翎 指导教师郭鹏飞 2013 年 1 月

目录 1 设计时间.............................................................. 错误!未定义书签。 2 设计目的.............................................................. 错误!未定义书签。3设计任务............................................................... 错误!未定义书签。 4 设计内容.............................................................. 错误!未定义书签。 4.1需求分析............................................................ 错误!未定义书签。 4.1.1总体目标 ...................................................... 错误!未定义书签。 4.1.2具体目标 ...................................................... 错误!未定义书签。 4.1.3系统数据建模 .............................................. 错误!未定义书签。 4.1.4系统功能建模 .............................................. 错误!未定义书签。 4.1.5数据字典 ...................................................... 错误!未定义书签。 4.2总体设计............................................................ 错误!未定义书签。 4.3详细设计........................................................... 错误!未定义书签。 4.4运行与测试 ...................................................... 错误!未定义书签。 5 总结与展望.......................................................... 错误!未定义书签。附:系统程序主要代码 ......................................... 错误!未定义书签。参考文献.................................................................. 错误!未定义书签。成绩评定.................................................................. 错误!未定义书签。

操作系统原理实验五

实验五线程的同步 1、实验目的 (1)进一步掌握Windows系统环境下线程的创建与撤销。 (2)熟悉Windows系统提供的线程同步API。 (3)使用Windows系统提供的线程同步API解决实际问题。 2、实验准备知识:相关API函数介绍 ①等待对象 等待对象(wait functions)函数包括等待一个对象(WaitForSingleObject ())和等待多个对象(WaitForMultipleObject())两个API函数。 1)等待一个对象 WaitForSingleObject()用于等待一个对象。它等待的对象可以为以下对象 之一。 ·Change ontification:变化通知。 ·Console input: 控制台输入。 ·Event:事件。 ·Job:作业。 ·Mutex:互斥信号量。 ·Process:进程。 ·Semaphore:计数信号量。 ·Thread:线程。 ·Waitable timer:定时器。 原型: DWORD WaitForSingleObject( HANDLE hHandle, // 对象句柄 DWORD dwMilliseconds // 等待时间 ); 参数说明: (1)hHandle:等待对象的对象句柄。该对象句柄必须为SYNCHRONIZE访问。 (2)dwMilliseconds:等待时间,单位为ms。若该值为0,函数在测试对象的状态后立即返回,若为INFINITE,函数一直等待下去,直到接收到 一个信号将其唤醒,如表2-1所示。 返回值: 如果成功返回,其返回值说明是何种事件导致函数返回。

Static HANDLE hHandlel = NULL; DWORD dRes; dRes = WaitForSingleObject(hHandlel,10); //等待对象的句柄为hHandlel,等待时间为10ms 2)等待对个对象 WaitForMultiple()bject()在指定时间内等待多个对象,它等待的对象与 WaitForSingleObject()相同。 原型: DWORD WaitForMultipleObjects( DWORD nCount, //句柄数组中的句柄数 CONST HANDLE * lpHandles, //指向对象句柄数组的指针 BOOL fWaitAll, //等待类型 DWORD dwMilliseconds //等待时间 ); 参数说明: (1)nCount:由指针 * lpHandles指定的句柄数组中的句柄数,最大数是MAXIMUM WAIT OBJECTS。 (2)* lpHandles:指向对象句柄数组的指针。 (3)fWaitAll:等待类型。若为TRUE,当由lpHandles数组指定的所有对象被唤醒时函数返回;若为FALSE,当由lpHandles数组指定的某一个 对象被唤醒时函数返回,且由返回值说明是由于哪个对象引起的函数 返回。 (4)dwMilliseconds:等待时间,单位为ms。若该值为0,函数测试对象的状态后立即返回;若为INFINITE,函数一直等待下去,直到接收到 一个信号将其唤醒。 返回值:、 如果成功返回,其返回值说明是何种事件导致函数返回。 各参数的描述如表2-2所示。

操作系统原理课程设计

操作系统原理课程设计 ——银行家算法模拟 指导老师:周敏唐洪英杨宏雨 杨承玉傅由甲黄贤英 院系:计算机学院计算机科学与技术班级:0237-6 学号:2002370609 姓名:刘洪彬 同组者:杨志 时间:2005/1/10---2005/1/14

银行家算法模拟 一、设计目的 本课程设计是学生学习完《计算机操作系统》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。 二、设计要求 银行家算法是避免死锁的一种重要方法,本实验要求用高级语言编写和调试一个简单的银行家算法程序。加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。 从课程设计的目的出发,通过设计工作的各个环节,达到以下教学要求:两人一组,每组从所给题目中任选一个(如自拟题目,需经教师同意),每个学生必须独立完成课程设计,不能相互抄袭,同组者文档不能相同; 设计完成后,将所完成的工作交由老师检查; 要求写出一份详细的设计报告。 三、设计内容 编制银行家算法通用程序,并检测所给状态的系统安全性。 1)银行家算法中的数据结构 假设有n个进程m类资源,则有如下数据结构: 可利用资源向量Available。这是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态地改变。Available[j]=K,则表示系统中现有Rj 类资源K个。 最大需求矩阵Max。这是一个n*m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i,j]=K,则表示进程i需要Rj类资源的最大数目为K。 分配矩阵Allocation。这也是一个n*m的矩阵,它定义了系统中每一类资源当前已分配给没一进程的资源数。如果Allocation[i,j]=K,则表示进程i 当前已分得Rj类资源的数目为K。 需求矩阵Need。这也是一个n*m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need[i,j]=K,则表示进程i还需要Rj类资源K个,方能完成其任务。

操作系统实验六设备管理

操作系统课程报告 实验六设备管理 学号 姓名 班级 教师 华侨大学电子工程系

实验目的 1、理解设备管理的概念和任务。 2、掌握独占设备的分配、回收等主要算法的原理并编程实现。 实验内容与基本要求 1、在Windows系统中,编写程序实现对独占设备的分配和回收的模拟,该程序中包括: 建立设备类表和设备表、分配设备和回收设备的函数。 实验报告内容 1、独占设备的分配、回收等主要算法的原理。 为了提高操作系统的可适应性和可扩展性,现代操作系统中都毫无例外地实现了设备独立性,又叫做设备无关性。设备独立性的含义是:应用程序独立于具体使用的物理设备。为了实现独占设备的分配,系统设置数据表格的方式也不相同,在实验中只要设计合理即可。这里仅仅是一种方案,采用设备类表和设备表。 (1)数据结构 操作系统设置“设备分配表”,用来记录计算机系统所配置的独占设备类型、台数以及分配情况。设备分配表可由“设备类表”和“设备表”两部分组成,如下图:(2)设备分配 当进程申请某类设备时,系统先查“设备类表”如果该类设备的现存台数可以满足申请要求,则从该类设备的“设备表”始址开始依次查该类设备在设备表中的登记项,找出“未

分配”的设备分配给进程。分配后要修改设备类表中的现存台数,把分配给进程的设备标志改为“已分配”且填上占用设备的进程名。然后,把设备的绝对号与相对号的对应关系通知用户,以便用户在分配到的设备上装上存储介质。 (3)设备回收 当进程执行结束撤离时应归还所占设备,系统根据进程名查设备表,找出进程占用设备的登记栏,把标志修改为“未分配”,清除进程名。同时把回收的设备台数加到设备类表中的现存台数中。 2、程序流程图。 主程序流程图: 设备分配: 设备回收: 3、程序及注释。 #include #include #include #define false 0 #define true 1

相关文档
相关文档 最新文档