问卷系统课程设计

2022-07-18

第一篇:问卷系统课程设计

机械课程设计调查问卷

关于《机械设计》课程设计的调查问卷

同学们:为促进教学水平的提高,更好地为教学需要服务,搞好《机械设计》

课程的建设,特制作此调查问卷,请大家认真填写。多谢。

课程设计起止时间:2002--2003学年第二学期第19--20周

1、 你所在的班级生源性质是()?

A高中本科B技校本科C高职高专

2、 你曾经参加过其它课程或其它类似的课程设计吗?

A参加过B没有参加过

3、 你认为每人一份任务书、数据表和检查表合理吗?

A合理B不合理

4、你的数据表题目号是()?

5、你认为你的题目难度大吗?

A大B正好C不够

6、哪部分难度大?

A初期计算B画草图CCAD绘图D说明书

7、你认为每张草图必须经指导教师签字的要求麻烦吗?

A不麻烦,因为可以保证质量B麻烦,质量自己保证

8、计算、绘图、编写说明书等过程中,你认为有()%的同学存在抄袭现象? 主要集中在()过程中?

A初期计算B画草图CCAD绘图D说明书

9、你认为装配图用CAD绘图、零件图用手画,是否既锻炼了传统技能又学会了现代化手段?

A是B不是

10、 设计中你所需要的资料齐全吗?

A齐全B短缺

11、 你认为要较好地完成这项设计任务,需要多长时间?

A2周B3周C4周

12、 你认为设计辛苦吗?收获大吗?

A辛苦B不辛苦C收获大D收获不大

13、 两位指导教师在场答辩是否比一位指导教师在场答辩时成绩更公正?

A是B不是

14、 你有什么好的意见或建议,请写下来。

第二篇:课程设计系统报告

GIS课程系统设计文档

学院名称: 专业名称撰写人学号:111104006

开发工具:Visual c#.net++ArcGIS Engine

1)系统建设目标

本课程设计是在一个学期《GIS设计与实现》的学习以后的一个综合实验,很好地融合了理论与实践。该系统建设本着实用性,标准性,简洁性和友好性为原则,目标是利用AE开发实现地图各种基本的功能,熟练掌握二次开发的基本流程。

2)系统建设内容

系统建设的内容包括系统的编写目标,系统需求分析,系统配置要求,系统的详细设计,系统编程实现,系统的测试维护。

3)系统功能设计

系统实现了地图操作的基本功能,包括:(1)地图输入:支持地图输入;支持用户选择文件输入;(2)地图显示:显示地图,支持缩放、漫游、全图功能; (3)地图管理:图层信息显示;图层关闭操作;图层添加操作等(4)查询:支持属性查询和空间查询(如点查询、圆查询、矩形查(5)空间分析:实时获取点坐标;量测距离;量测面积(6)专题图制作(7)地图输出:输出栅格图(8)提供网络分析和地图要素的符号化。

4)系统数据库设计

本系统采用的是ArcGIS自带的地理数据库,既能满足实验要求,有很好的和gis兼容,使用起来更加高效方便。数据库设计要较好的解决数据冗余、数据不一致性和数据联系弱等缺陷,本数据库采用面向对象的数据库技术。分别从外部级,概念级和内部级构建数据库的体系结构,充分展现了数据库的三级结构和两级映像,达到了数据库物理独立性和逻辑独立性的要求。数据库的主要功能有数据库的定义,数据库的操纵,数据库的保护,数据库的维护以及数据字典。

5)系统软硬件配置

操作系统:Windows7

数据库:地图数据库 File Geodatabase

开发语言:VS C#.NET

开发环境: .net Framework 4.0

开发平台: Windowsphone VS2010

GIS平台:ArcGIS10.0ArcGIS Engine10.0

6)关键技术实现(关键技术解决思路、关键的函数、程序说明等)

7)实习的体会与建议

第三篇:操作系统课程设计

湖北民族学院信息工程学院11级计算机专业操作系统课程设计

(操作系统课程设计)

连续动态分区内存

管理模拟实现

学生姓名: 韩 慧 学生学号: 031140312 班 级: 031140--3

031140

1、0

2、0

3、04班制

二〇一三年十二月

1 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

目录

《操作系统》课程设计....................................................... 1 引言......................................................................3 课程设计目的和内容 ...................................................... 3 需求分析.........................................................................3 概要设计...................................................................3 开发环境........................................................................ 4 系统分析设计..................................................................... 4 有关了解内存管理的相关理论.................................................. 4 内存管理概念........................................................................4 内存管理的必要性..............................................................4 内存的物理组织.............................................................4 什么是虚拟内存.................................................................5 连续动态分区内存管理方式................................................... 5 单一连续分配(单个分区)................................................... 5

固定分区存储管理...............................................................5 可变分区存储管理(动态分区).............................................. 5 可重定位分区存储管理........................................................5 问题描述和分析....................................................................6 程序流程图........................................................................6 数据结构体分析..................................................................8 主要程序代码分析...............................................................9 分析并实现四种内存分配算法 ................................................. 11 最先适应算.....................................................................11 下次适应分配算法..........................................................13 最优适应算法...............................................................16 最坏适应算法......................................................... ......18 回收内存算法................................................................20 调试与操作说明.................................................................22

初始界面.......................................................................22 模拟内存分配...............................................................23

已分配分区说明表面............................................................24 空闲区说明表界面.............................................................24 回收内存界面.....................................................................25 重新申请内存界面..........................................................26. 总结与体会...................................................................... 28

2 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

参考文献......................................................................... 28

引言

操作系统是最重要的系统软件,同时也是最活跃的学科之一。我们通过操作系统可以理解计算机系统的资源如何组织,操作系统如何有效地管理这些系统资源,用户如何通过操作系统与计算机系统打交道。

存储器是计算机系统的重要组成部分,近年来,存储器容量虽然一直在不断扩大,但仍不能满足现代软件发展的需要,因此,存储器仍然是一种宝贵而又紧俏的资源。如何对它加以有效的管理,不仅直接影响到存储器的利用率,而且还对系统性能有重大影响。而动态分区分配属于连续分配的一种方式,它至今仍在内存分配方式中占有一席之地。

课程设计目的和内容:

理解内存管理的相关理论,掌握连续动态分区内存管理的理论;通过对实际问题的编程实现,获得实际应用和编程能力。

编写程序实现连续动态分区内存管理方式,该程序管理一块虚拟内存,实现内存分配和回收功能。 分析并实现四种内存分配算法,即最先适应算法,下次最先适应算法,最优适应算法,最坏适应算法。内存分配算法和回收算法的实现。

需求分析

动态分区分配是根据进程的实际需要,动态地为之分配内存空间。在实现动态分区分配时,将涉及到分区分配中所用的数据结构、分区分配算法和分区的分配和回收操作这样三个问题。常用的数据结构有动态分区表和动态分区链。在对数据结构有一定掌握程度的情况下设计合理的数据结构来描述存储空间,实现分区存储管理的内存分配功能,应该选择最合适的适应算法(首次适应算法,最佳适应算法,最后适应算法,最坏适应算法),在动态分区存储管理方式中主要实现内存分配和内存回收算法,在这些存储管理中间必然会有碎片的产生,当碎片产生时,进行碎片的拼接等相关的内容

概要设计

本程序采用机构化模块化的设计方法,共分为四大模块。 ⑴最先适应算法实现

从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法目的在于减少查找时间。为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到高进行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高地址空间保留大的空闲区。 ⑵下次适应分配算法实现

3 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

该算法是最先适应算法的变种。在分配内存空间时,不再每次从表头(链首)开始查找,而是从上次找到空闲区的下一个空闲开始查找,直到找到第一个能满足要求的的空闲区为止,并从中划出一块与请求大小相等的内存空间分配给作业。该算法能使内存中的空闲区分布得较均匀。 ⑶最优适应算法实现

它从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表(空闲区链)中的空闲分区要按从小到大进行排序,自表头开始查找到第一个满足要求的自由分区分配。 ⑷最坏算法实现

最坏适应分配算法要扫描整个空闲分区或链表,总是挑选一个最大的空闲分区分割给作业使用。该算法要求将所有的空闲分区按其容量从大到小的顺序形成一空闲分区链,查找时只要看第一个分区能否满足作业要求。

开发环境:

win7 下 VC++6.0 系统分析设计:

相关算法原理,算法流程图,涉及的数据结构内容都相应包含在各章节中

有关了解内存管理的相关理论

内存管理概念:

内存管理,是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。内存不是预先划分好的,而是在系统运行的过程中建立分区.当作业装入主存时,根据作业所需要的主存容量查看是否有足够的主存空间,若有则按需要分割一个分区给该作业;否则令该作业等待.分区长度不固定分区个数不固定。这种存储管理的方法克服了固定分区严重浪费主存的问题,提高了主存资源的利用率。

内存管理的必要性:

内存管理对于编写出高效率的 Windows 程序是非常重要的,这是因为Windows 是多任务系统,它的内存管理和单任务的 DOS 相比有很大的差异。DOS是单任务操作系统,应用程序分配到内存后,如果它不主动释放,系统是不会对它作任何改变的;但 Windows 却不然,它在同一时刻可能有多个应用程序共享内存,有时为了使某个任务更好地执行,Windows 系统可能会对其它任务分配的内存进行移动,甚至删除。因此,我们在 Windows 应用程序中使用内存时,要遵循Windows 内存管理的一些约定,以尽量提高 Windows 内存的利用率。

4 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

1.3 内存的物理组织:

物理地址:

把内存分成若干个大小相等的存储单元,每个存储单元占 8 位,称作字节(byte)。每个单元给一个编号,这个编号称为物理地址(内存地址、绝对地址、实地址)。

二、物理地址空间: 物理地址的集合称为物理地址空间(主存地址空间),它是一个一维空间。

什么是虚拟内存:

虚拟内存是内存管理技术的一个极其实用的创新。它是一段程序(由操作系统调度),持续监控着所有物理内存中的代码段、数据段,并保证他们在运行中的效率以及可靠性,对于每个用户层(user-level)的进程分配一段虚拟内存空间。当进程建立时,不需要在物理内存件之间搬移数据,数据储存于磁盘内的虚拟内存空间,也不需要为该进程去配置主内存空间,只有当该进程被被调用的时候才会被加载到主内存。

连续动态分区内存管理方式的实现

在早期的操作系统中,主存分配广泛采用连续分配方式。 连续分配方式,是指为一个用户程序分配一个连续的内存空间,该连续内存空间指的的是物理内存。下面介绍连续分配的四种方式。

单一连续分配(单个分区)

最简单的存储管理方式,用于多道程序设计技术之前。 内存分为系统区和用户区,系统区由操作系统使用。用户区作为一个连续的分区分配给一个作业。 分区存储管理是满足多道程序设计的最简单的一种存储管理方法,它允许多 4个用户程序同时存在系统内存中,即共享内存空间。 按分区划分方式可分为固定分区和可变分区。

固定分区存储管理

把内存的用户区预先划分成多个分区,每个分区大小可以相同,也可以不同。(分区的划分由计算机的操作员或者由操作系统给出,并给出主存分配表) 分区个数固定,分区的大小固定。 一个分区中可装入一个作业,作业执行过程中不会改变存放区域。 早期的 IBM 的 OS/MFT(具有固定任务数的多道程序系统)采用了这种固定分区的方法。

可变分区存储管理(动态分区)

内存不是预先划分好的,而是在系统运行的过程中建立分区.当作业装入主存时,根据作业所需要的主存容量查看是否有足够的主存空间,若有则按需要分割一个分区给该作业;否则令该作业等待。 分区长度不固定分区个数不固定。 这种存储管理的方法克服了固定分区严重浪费主存的问题,提高了主存资源的利用率。 IBM操作系统OS/MVT采用可变分区存储管理。

5 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

可重定位分区存储管理

解决碎片问题的一种简单方法是采用可重定位分区分配.。 其中心思想是,把不同程序,且在内存中地址不连续的想法让他们连续。

例:内存中现有 3 个空闲区,现有一作业到达,要求获得 30k 内存空间,没有分区满足容量要求,若想把作业装入,可将内存中所有作业进行移动,这样把原来分散的空闲区汇集成一个大的空闲区。 将内存中的作业进行移动使它们连接在一起把原来分散的多个小分区拼接成一个大的空闲区.这个过程称为”紧凑”或”移动”。 需解决的问题:每次”紧凑”后程序或数据装入的物理地址变化采用动态重定位。

问题描述和分析

系统应利用某种分配算法,从空闲分区链表中找到所需大小的分区,如果空闲分区大小大于请求分区大小,则从该分区中按改请求的大小划分出一块内存空间大小划分出一块内存空间分配出去,余下的部分仍留在空闲链表中。然后,将分配区的首址返回给调用者。

当进程运行完毕师范内存时,系统根据回收区的首址,从空闲区中找到相应的插入点,此时可能出现以下四种情况之一:

⑴该空闲区的上下两相邻分区都是空闲区:将三个空闲区合并为一个空闲区。新空闲区的起始地址为上空闲区的起始地址,大小为三个空闲区之和。空闲区合并后,取消可用表或自由链中下空闲区的表目项或链指针,修改上空闲区的对应项。

⑵该空闲区的上相邻区是空闲区:将释放区与上空闲区合并为一个空闲区,其起始地址为上空闲区的起始地址,大小为上空闲区与释放区之和。合并后,修改上空闲区对应的可用表的表目项或自由链指针。

⑶该空闲区的下相邻区是空闲区:将释放区与下空闲区合并,并将释放区的起始地址作为合并区的起始地址。合并区的长度为释放区与下空闲区之和。同理,合并后修改可用表或自由链中相应的表目项或链指针。

⑷两相邻区都不是空闲区:释放区作为一个新空闲可用区插入可用表或自由链。

程序流程图

内存分配流程图,如图

6 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

从头开始查表检索完否?NY返回分区大小>所需大小N继续检索下一个表项Y分区大小-所需大小<=不可再分割大小N从该分区中划出所需大小的新分区Y将该分区从链中移出将该分区分配给请求者修改有关数据结构返回

内存回收流程图,如图

7 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

开始判断空闲区上下内存情况上为空下为空上下都为空上下都不为空将上面的空闲区合并,并回收将下面的空闲区合并,并回收将上下的空闲区合并,并回收直接将其回收结束 数据结构体分析

⑴进程属性结构体 typedef struct readyque { char name[10]; int size; }readyque,*readyqueue; ⑵空闲链表结构体 typedef struct idlyspace { int from; int size; idlyspace * next; }idlyspace,*idly; ⑶已分配链表结构体 typedef struct busyspace { int from; readyque r;

8 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

busyspace * next; }busyspace,*busy

主要程序代码分析

⑴主函数//代码请添加适当的注释。 int main() { Is=(idly)malloc(sizeof(idlyspace)); Is->from=0; Is->size=256; Is->next=NULL; Is2=Is; Bs=(busy)malloc(sizeof(busyspace)); Bs->next=NULL; int t,t1; printf(" .......................欢迎来到动态分区存储管理系统.................. "); printf("...........................请选择要执行的算法:........................... "); printf("......................... 1.最先适应算法

............................... "); printf("......................... 2.下次适应算法 ............................ "); printf("..........................3.最优适应算法

............................... "); printf("......................... 4.最坏适应算法 ................................ "); printf("........................................................................ "); printf("请输入您的选择:"); scanf("%d",&t); int i; while(i!=5) {

printf("........................................................................ ");

printf(".........................操作菜单如下:(请选择).......................n");

printf("..........................1.输入进程分配空间 ...........................n");

printf("......................... 2.进程撤销回收空间 ........................... ");

printf("......................... 3.输出所有空闲分区

.......................... ");

printf("..........................4.输出所有已分配分区.......................... ");

printf(".......................... 5.退

出 .......................... ");

printf("........................................................................ ");

scanf("%d",&i);

switch(i)

{

case 1:

switch(t)

{

case 1:

t1=FF();

9 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

break;

case 2:

t1=NF();

break;

case 3:

t1=BF();

break;

case 4:

t1=WF();

break;

default:

printf("选择算法错误 ");

return 1;

}

if(t1)

printf("分配空间成功 ");

else

printf("分配空间失败 ");

break;

case 2:

t1=recover();

if(t1)

printf("回收成功 ");

else

printf("回收失败 ");

break;

case 3:

Isprint();

break;

case 4:

Bsprint();

break;

} } return 0; }

第三章 :分析并实现四种内存分配算法

最先适应算法

空闲区按地址从小到大的次序排列。

分配:当进程申请大小为 SIZE 的内存时,系统顺序查找空闲区表(链),直到找到容量满足要求(≥SIZE)的空闲区为止。从该空闲区中划出大小为 SIZE的分区分配给进程,余下的部分仍作为一个空闲区,但要修改其首址和大小。

10 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

优点:这种算法是尽可能地利用低地址部分的空闲区,而尽量地保证高地址 6部分的大空闲区,有利于大作业的装入。

缺点:主存低地址和高地址分区利用不均衡。在低地址部分集中了许多非常小的空闲区碎片降低了主存的利用率。 最先适应算法 int FF() { int t=0; readyque D; printf“"请输入进程名:”"); scanf“"%”",D.name);

printf“"输入进程申请空间大小:”"); scanf“"%”",&D.size);

idly l=Is; int mt=256; busy b=Bs; idly min=NULL; while(l)

//寻找空闲表中大小满足申请进程所需大小并且起址最小的空闲结点

{

if(D.size<=l->size)

{

if(l->from

{ mt=l->from; min=l; t=1;

}

}

l=l->next; } if(mt!=256)

{

busy j;

j=(busy)malloc(sizeof(busyspace));

//如果找到则为进程分配空间

11 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

j->from=min->from;

for(int i=0;i<10;i++)

{

j->r.name[i]=D.name[i];

}

j->r.size=D.size;

while(b->next)

{ if(b->next->fromfrom)

b=b->next; else

break;

}

j->next=b->next;

b->next=j;

min->from=min->from+D.size;

min->size=min->size-D.size; } return t; }

下次适应分配算法

最先适应算法的变种。

总是从空闲区上次扫描结束处顺序查找空闲区表(链),直到找到第一个满足容量要求的空闲区为止,分割一部分给作业,剩余部分仍作为空闲区。 下次适应分配算法 int NF() { int t=0; readyque D; printf“"请输入进程名:”"); scanf“"%”",D.name);

12 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

printf“"输入进程申请空间大小:”"); scanf“"%”",&D.size);

int mt=256; idly l=Is2; idly min=NULL; busy b=Bs; while(l) //寻找空闲表中大小满足申请进程所需大小并且起址最小的空闲结点

{

if(D.size<=l->size)

{

if(l->from

{ mt=l->from; min=l; t=1;

}

}

l=l->next; } if(mt!=256)

{

busy j;

j=(busy)malloc(sizeof(busyspace));

j->from=min->from;

for(int i=0;i<10;i++)

{

j->r.name[i]=D.name[i];

}

j->r.size=D.size;

while(b->next)

{ if(b->next->fromfrom)

b=b->next; else

break;

//如果找到则为进程分配空间

13 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

}

//将申请空间进程插入到已分配链表中

j->next=b->next;

b->next=j;

//修改相应空闲节点的起址和大小

min->from=min->from+D.size;

min->size=min->size-D.size;

Is2=min->next;

结点

t=1;

return t; }

l=Is;//l指向空闲表的头

while(l!=Is2)

{

if(D.size<=l->size)

{

if(l->from

{ mt=l->from; min=l; t=1;

}

}

l=l->next; } if(mt!=256) {

busy j;

j=(busy)malloc(sizeof(busyspace));

j->from=min->from;

for(int i=0;i<10;i++)

{

//ls2指向修改结点的下一个

//循环查找

14 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

j->r.name[i]=D.name[i];

}

j->r.size=D.size;

while(b->next)

{ if(b->next->fromfrom)

b=b->next; else

break;

}

j->next=b->next;

b->next=j;

min->from=min->from+D.size;

min->size=min->size-D.size;

Is2=min->next;

t=1;

return t; } return t; }

最优适应算法

空闲区按容量递增的次序排列。

分配:当进程申请存储空间,系统顺序查找空闲区表(链),直到找到第一个满足容量要求的空闲区为止。 采用最优适应算法选中的空闲区是满足容量要求的最小空闲区。 优点:选中的空闲区是满足容量要求的最小空闲区,而不致于毁掉较大的空闲区。

缺点:空闲区的大小一般与申请分区大小不相等,因此将其一分为二,留下来的空闲区一般情况下是很小的,以致无法使用。随着时间的推移,系统中的小空闲区会越来越多,从而造成存储空间的浪费。 最优适应算法 int BF() { int t=0;

15 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

readyque D; printf“"请输入进程名:”"); scanf“"%”",D.name);

printf“"输入进程申请空间大小:”"); scanf“"%”",&D.size);

idly l=Is; idly min=NULL; int mt=256; busy b=Bs; while(l) //在空闲链中寻找第一个大于所输入的进程大小的空闲块

{

if(D.size<=l->size)

{

if(l->size

{

mt=l->size; min=l; t=1;

}

}

l=l->next; } if(mt!=256)

{

busy j;

j=(busy)malloc(sizeof(busyspace)); 空间

j->from=min->from;

//申请分配用于存放进程的内存

//找到第一个满足要求的空闲块

//将第一个满足要求的空闲块(min)的首地址赋给j

for(int i=0;i<10;i++)

{

j->r.name[i]=D.name[i]; 16 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

}

j->r.size=D.size;

while(b->next)

//按从小到大的顺序查找新进程在已分配区中的位置

{ if(b->next->fromfrom)

b=b->next; else

break;

}

j->next=b->next;

b->next=j;

min->from=min->from+D.size;

min->size=min->size-D.size;

} return t; }

最坏适应算法

为了克服最佳适应算法把空闲区切割得太小的缺点,人们提出了一种最坏适应算法,即每次分配时,总是将最大的空闲区切去一部分分配给请求者,剩余的部分仍是一个较大的空闲区。避免了空闲区越分越小的问题。 要求空闲区按容量递减的顺序排列。

分配:进程申请存储区时,检查空闲区表(链)的第一个空闲区的大小是否满足要求,若不满足则令进程等待;若满足则从该空闲区中分配一部分存储区给用户,剩下的部分仍作为空闲区。 最坏适应算法 int WF() { int t=0; readyque D; printf“"请输入进程名:”"); scanf“"%”",D.name);

printf“"输入进程申请空间大小:”");

//将所输入的进程插入进程链

//改变该空闲块的起始地址 //改变该空闲块的剩余大小 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

scanf“"%”",&D.size);

//输入进程申请的空间大小

idly l=Is;//l指向空闲链表ls头

idly min=NULL; int mt=0; busy b=Bs;

//b指向已分配链表Bs头

//找到空闲分区中大小满足进程的请求且尺寸最大的结点

while(l) {

if(D.size<=l->size) //判断进程所申请的大小是否小于空闲区的各结点大小

{

if(l->size>mt)

{ mt=l->size; min=l;//min指向空闲区中尺寸最大的结点

t=1;

}

}

l=l->next; } if(mt!=0) 点

{

busy j;

j=(busy)malloc(sizeof(busyspace));

j->from=min->from;

for(int i=0;i<10;i++)

{

j->r.name[i]=D.name[i];

}

j->r.size=D.size;

//判断是否找到了空闲区的满足结

//l指向空闲链表下一个结点

18 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

while(b->next) 置

//寻找插入到已分配链表中的位

{ if(b->next->fromfrom)

b=b->next; else

break;

}

//把此进程结点j插入到已分配链表中

j->next=b->next;

b->next=j;

//修改空闲链表的相应结点的参数

min->from=min->from+D.size;

min->size=min->size-D.size; } return t; }

可变分区的回收

当某个进程释放某存储区时,系统首先检查释放区是否与系统中的空闲区相邻若相邻则把释放区合并到相邻的空闲区去,否则把释放区作为一个空闲区插入到空闲表的适当位置。

释放区与空闲区相邻的四种情况。

(1) 释放区与前空闲区相邻:把释放区与前空闲区合并到一个空闲区。其首址仍为前空闲区首址,大小为释放区大小与空闲区大小之和。

(2) 释放区与后空闲区相邻:则把释放区合并到后空闲区,其首地址为释放区首地址,大小为二者之和。

(3) 释放区与前后两空闲区相邻:这三个区合为一个空闲区,首地址为前空闲区首址,大小为这三个空闲区之和,并取消后空闲区表目。

(4) 释放区不与任何空闲区相邻:将释放区作为一个空闲区,将其大小和首址插入到空闲区表的适当位置。

19 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

回收内存算法

int recover() { readyque D; printf“"请输入想要回收的进程名”");

scanf“"%”",D.name);

busy b=Bs; idly l=Is; while(b->next) 链表中

{

bool yo=1;

for(int i=0;i<10;i++)

{

if(b->next->r.name[i]==D.name[i]) yo=yo*1;

else yo=0;

}

//如果在已分配链表中则释放该结点所占空间

if(yo)

{

int t=b->next->from;

int ts=b->next->r.size;

//查找输入的进程名是否在已分配湖北民族学院信息工程学院11级计算机专业操作系统课程设计

while(l)

{ if(l->from>t+ts) 不邻接

{ idly tl; tl=(idly)malloc(sizeof(idlyspace)); tl->from=t; tl->size=ts; tl->next=l; Is=tl; break; } if(l->from==t+ts)

l->from=t;

l->size=l->size+ts;

busy tb=b->next;

b->next=b->next->next;

free(tb);

return 1; }

if(l->from+l->size

idly tl;

tl=(idly)malloc(sizeof(idlyspace));

tl->from=t;

tl->size=ts;

tl->next=l->next;

l->next=tl;

break; }

else if(l->from+l->size==t)

//所回收进程与空闲结点上邻接 {

//所回收进程与空闲结点上下都不邻接

//所回收进程与空闲结点下邻接 {

//所回收进程与空闲结点上下都 21 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

l->size=l->size+ts;

if(l->from+l->size==l->next->from) 接

{

l->size=l->size+l->next->size;

idly tm=l->next;

l->next=l->next->next;

freI);

}

br

l=l->next;

}

//从已分配链表中释放所回收进程

busy tb=b->next;

b->next=b->next->next;

free(tb);

return 1;

}

b=b->next; } printf("没找到这”进程 "); return 0; }

//所回收进程与空闲结点上下都邻调试与操作说明

初始界面

程序初始界面,有四个块选择,选择要执行的算法,调试以最坏算法为例,如图

22 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

选择最坏适应算法,如图

模拟内存分配

给进程a分配内存20,如图

23 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

已分配分区说明表界面

同理,给进程b分配内存30,给进程c分配内存40,给进程d分配50,给进程e分配60,如图

空闲分区说明表界面

24 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

查看空闲分区,如图

回收内存界面

回收进程b和d所占内存,如图

已分配分区说明表和空闲分区说明表 如图

25 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

重新申请内存界面

再为新进程i分配内存30,如图

26 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

根据最坏适应算法结合图所示可知,该算法将会从空闲分区表中选择一块最大的内存空间分配给进程i,从图也可看出该模拟算法实现了最坏适应算法

27 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

总结与体会

本次做的课题是动态分区分配算法实现,此次课程设计成功实现了内存分配和内存回收,内存分配中包含了四种算法,分别是首次适应算法,循环首次适应算法,最佳适应算法和最坏适应算法。经编码调试,表明该程序模块是有效可行的。

通过这门课程的学习让我充分了解了内存管理的机制实现,从而更深一步的的对计算机

有了很多了解,这对于以后我们的研究和学习计算机系统起到了很重要的作用。

对于本次论文制作,自己的编程能力有所提高,对操作系统内存分配,存储空间的回收都有全新的认识。

在这次操作系统课程设计中,我使用了c++编写系统软件,对os中可变分区存储管理有了深刻的理解,但是过程中遇到了很多困难,一边做一边学,对c++有了比较多的理解。

实验中遇到很多问题,浪费了很多时间,总而言之是自己学习还不够好,不扎实,希望在以后学习中加以改善,学到更多知识。

参考文献

【1】 汤子瀛,哲凤屏,汤小丹.计算机操作系统.西安:西安电子科技大学出版社,2001.。

28 湖北民族学院信息工程学院11级计算机专业操作系统课程设计

【2】 任爱华.操作系统实用教程.北京:清华大学出版社,2001。

29

第四篇:信息系统课程设计要求

基于ASP的学生学籍管理系统

设计内容:学生信息管理系统分为两个模块即客户端和服务器端,客户端可以实现的是用户进入浏览页后通过注册用户名和密码,然后登录查看学生的简单信息,可以选课,可以查成绩,还可以通过学号查询一些其他学生的信息。服务器端是管理员登录后进入管理员页可以对学生信息,成绩,课程,班级进行查找、添加、修改和删除。使管理更加便捷更加系统化。

设计要求:完整按照管理信息系统的设计方法(生命周期法)的步骤,系统规划,系统分析,系统设计,系统实施及系统维护的步骤将系统开发的整个过程写课程设计报告。

基于ASP的公司员工管理系统

设计内容:公司员工管理系统分为两个模块即客户端和服务器端,客户端可以实现的是用户进入浏览页后通过注册用户名和密码,然后登录查看员工的简单信息,可以选课,可以查成绩,还可以通过学号查询一些其他学生的信息。服务器端是管理员登录后进入管理员页可以对学生信息,成绩,课程,班级进行查找、添加、修改和删除。使管理更加便捷更加系统化。

设计要求:完整按照管理信息系统的设计方法(生命周期法)的步骤,系统规划,系统分析,系统设计,系统实施及系统维护的步骤将系统开发的整个过程写课程设计报告。

第五篇:机械系统设计课程总结

2011—2012学年第1学期

《机械系统设计》结课综合设计(论文)

专业班级 机械设计制造及其自动化 08-4 姓 名 123456789 学 号 08041406 开课系室 机电工程学院 机电工程系 结课日期 2011年 11月30日

机械系统设计课程总结

总体概述:本门课程名叫机械系统设计,不同于我们以前所学的机械设计。上学期我们所学的机械设计是以机械零件为研究对象进行具体的设计;而在本门课程中的研究对象是整个机械系统,包括原动机、传动系统、执行系统、控制系统以及辅助系统,进行的是整机设计。

下面就根据本课程所学的内容,对机械系统设计过程做一个较为详细的介绍:

一:方案设计

在接到一个设计任务后,首先要明确设计任务是什么,并对其进行功能方面的分析,针对要实现的功能设计出合理的方案,大体步骤如下:

1、 设计任务抽象化——一般用黑箱原理来表示。

2、 确定工艺原理——设法确定黑箱所要求的能实现作业对象转化的工艺原理。

3、 确定技术过程——按照选定的工艺原理确定转化所需的程序及其顺序。

4、 引进技术系统并确定系统边界——根据技术过程的要求确定机械系统的具体任务,并把这些任务分配给各个子系统。

5、 确定功能结构——进行功能分解。

6、 确定设计方案——分以下三步:寻找实现分功能的方法和载体;构建形态学矩阵;确定基本结构布局。 二:总体设计

1、初步总体设计——根据设计方案绘制总体布置草图,进行初步计算和运动分析,并进行初步技术经济分析。注意改进薄弱环节,必要时应对方案中的关键技术系统进行试验研究。

2总体设计——对初步总体设计做进一步完善,形成技术文件和图纸。1)设计任务书、技术任务书;2)机构运动简图和系统简图;3)总装配图及关键部件装配图;4)电、光、气、液控制图;5)总体设计报告书及技术说明书。

在此过程中,主要涉及步骤有:执行系统的布置、传动系统的设置、操纵件的布置、总体主要参数的确定等。

三:原动机的选择

动力机的选取的依据是工作载荷的类型,常用的原动机主要类型有:电动机、液压马达、气压马达、以及内燃机。

电动机作动力有以下优点:驱动效率高,与工作机连接简便,种类和型号较多,可以满足不同类型机械的工作要求。此外,电动机还具有良好的调速性能,起动、制动、反向和调速的控制简单,可实现远距离测量和控制,便于集中管理和实现生产过程自动化。其不足之处就是要用电源,这对野外工作的机械及移动式机械如钻机来讲,使用受到限制,因为可能有时无电源。

液压马达作动力机时有以下优点:可以获得很大的机械力或转矩。与电动机相比,功率/重量比大,因而运动件惯性相对小,快速响应灵敏度高。液马达还可以通过改变流量来调节执行机构的速度,改变运动速度方便,易实现无级调速。其局限性为:要有高压油供给系统,液压元件加工、装配要求高,易漏油并影响工作效率和工作机械的运动精度。

气动马达作动力机时有以下优点:与液压马达相比,工作介质为空气,易获得、无污染。维护简单,成本低,对易燃、易爆、多尘和振动环境适应性好。其不足之处在于:由于空气可压缩,因而气动马达工作稳定性差,噪音大,输出扭矩不大,只适用于小型和轻型机械。

内燃机作动力时有以下优点:自持能力高(只要备足燃料和油料,可独立工作),功率范围宽。其缺点是:对燃料(柴油或汽油)的要求高,内燃机排气污染。噪音都较大,而且结构复杂,对零部件的加工精度要求较高。不能带负载启动。

在进行机械系统设计时,如何选择动力机的类型,主要从以下三个方向考虑:

1、工作机的负载特性和要求:包括工作机的载荷特性、工作制度、结构布置和工作环境等。

2、动力机本身的机械特性:包括动力机的功率、转矩、转速等特性,以及对工作环境的适应性,要使动力机的机械特性和工作机械的负载特性相匹配。

3、进行经济性比较:包括能源的供应和消耗,动力机的制造、运行和维修成本的对比等。

除上面所说的三个方面外,有些动力机的选择还要考虑对环境的污染,包括空气污染和噪声污染等。例如,室内工作的机械就尽量不要用内燃机作动力机。 四:传动系统设计

传动系统的作用是联接动力机与工作机,即把动力机的运动和动力传给执行机构或执行构件。在实际应用中,常用的传动系统有:带传动、链传动、齿轮传动、液力传动、气力传动。

传动系统通常包括以下几个组成部分:变速装置,起停和换向装置,制动装置及安全保护装置。

变速装置是传动系统中最重要的组成部分,它的作用是改变动力机的输出转速和转矩,以满足执行机构的要求;常见的变速装置有以下几种:变速齿轮变速机构、滑移齿轮变速机构、离合器变速机构、啮合器变速机构。

起停和换向装置的作用是控制执行机构的起动、停车以及改变运动方向,那么对起停和换向装置的基本要求是:起停和换向方便省力,操作安全可靠,结构简单,能传递足够的动力。

常用的起停和换向装置有两类:一类是通过按钮或操纵杆直接控制电动机实现起停和换向,另一类是用离合器实现起停和换向。选择方案时应考虑执行机构所要求的起停和换向的频繁程度、动力机的类型与功率大小。

制动装置:动构件具有惯性,所以制动停车时不能立即停止,而是逐渐减速后才能停止运动。为节省停车时间,对于起停频繁或运动构件惯性大、速度高的系统,要设置制动装置。制动装置还可用于机械一旦发生事故时紧急停车,或使运动构件可靠地停在某个位置上。机械系统对制动装置的基本要求是:工作可靠、操纵方便、制动平稳、时间短,结构简单、尺寸小、磨损小、散热良好。

常用的制动器有摩擦式或非摩擦式两大类:带式制动器、外抱块式制动器、张蹄式制动器、磁粉制动器 安全保护装置:

有些机械在工作过程中载荷经常变化,并且变化幅度较大,因此可能过载,如这时本身无保护装置的话,应在传动链中设置安全保护装置,以免传动机构破坏。本身具有保护作用的传动链有带传动、摩擦离合器等,而传动链中的安全保护装置常见的有安全离合器或安全销等。当传动链所传递的转矩超过规定值时,安全保护装置中联接件会折断、分离或打滑来停止或限制转矩的传递。常用的有如下几种:

销钉安全联轴器、钢珠安全离合器、摩擦式安全离合器等。 另外,从系统的变速形式(是否连续)来看,变速部分可分为有级变速传动和无级变速传动:

有级变速传动系统常有变速齿轮传动、链传动或变速带传动组成。在一定的变速范围内,其输出轴只能得到有限级数的转速。在有级变速传动中最基本的变速装置是二轴变速运动,即在两根轴之间用一个变速组进行传动,二轴变速传动可实现二至四级变速。若要求的变速级数多于四级时,可以采用两个或两个以上变速组串联而成的多轴传动装置。 无级变速传动系统:

主要用于下列场合:

(1) 要求转速在工作中连续变化; (2) 探求机械的最佳工作状态; (3) 带负载启动的机械要求在低速启动;

(4) 需要协调机械系统中几个执行机构之间的运转速度。 无级变速的类型主要有:电力的(直流变速、交流变速)、流体的(液力的耦合器、变矩器、液压变速)和机械的(利用摩擦传动机构实现)。 五:执行系统的选择

执行系统是用来完成机器预定功能的组成部分。一部机器可以只有一个执行部分,也可以有多个执行部分。

常见的可用于执行系统的机构有:连杆机构、凸轮机构、棘轮机构、槽轮机构等,在选用时要根据预定功能的运动形式选择合理的机构来完成预定的运动。 六:控制系统的构建

机械系统在工作过程中,各执行机构应根据生产要求,以一定的顺序和规律运动,而各执行机构的开始、结束及其顺序一般由控制系统保证。

机械控制系统的主要任务有:

1)使各执行机构按一定的顺序和规律运动。 2)改变各运动构件的运动方向和速度大小。 3)使各运动构件间有协调的动作,完成给定的作业环节要求。 4)对产品进行检测、分类以及防止事故,对工作中出现的不正常现象及时报警并消除。 控制系统的要求: 1)稳定性要求

系统的稳定性是系统的固有特性,系统稳定与否取决于系统本身的结构与参数,与输入无关。若控制系统在任何足够小的初始偏差作用下,其响应过程随着时间的推移逐渐衰减为0,则称该系统具有渐近稳定性。反之,在初始条件影响下,若控制系统的响应过程随时间的推移而发散,输入无法控制输出,则这样的系统为不稳定系统。任何一个系统能进行正常工作的首要条件是系统必须是稳定的。 2)响应特性要求

系统的响应特性包括动态特性和稳态特性。

① 动态特性:过渡过程中系统的动态性能常用系统的阻尼特性和响应速度来表征。

② 稳态特性:闭环控制系统的稳态性能用稳态误差表示和度量,它是当t时,即过渡过程结束时,系统的实际输出y(t)与参考输入所调整的期望值yr(t)之间的差值。 控制系统的组成:

无论多么复杂的控制系统,都是由一些基本环节或元件组成的。

1)给定环节:给出与反馈信号同样形式和因次的控制信号,以确定被控对象“目标值”的环节。给定环节给出的信号可以是电量、非电量,也可以是数字量或模拟量。

2)测量环节:用于测量被控变量,并将被控变量转变为便于传送的另一物理量(一般为电量)的环节,常用的有电位计可将机械转角→电压信号,测速发电机将转速电压信号,光栅测量装置将直线位移→数字信号。

3)比较环节:比较环节是将输入信号X(s)与测量环节发出的有关被控变量Y(s)的反馈信号B(s)进行比较的环节。

4)校正及放大环节:通常偏差信号很小,为了实现控制,要将偏差信号作必要的校正,然后进行功率放大以便推动执行环节,常用的放大类型有电流放大,电气—液压放大等。

5)执行环节:执行环节用来接收放大信号的控制信号,驱动被控对象按照预期规律运动的环节。执行环节一般是能将外部能量传递给被控对象的有源功率放大装置,工作中要进行能量转换,如把电能通过电机转换成机械能,驱动被控对象作机械运动。 七:其他辅助系统的配备

1、操纵系统:是把人和机械联系起来,使机械按照人的指令工作的机构和元件所构成的总体。 操纵系统的作用和要求

操纵系统的作用是完成信号转换,也就是把人施加于机械的信号,经过转换传递到执行系统,以实现机械的起动、停止、转向、变速、变力及制动等目的。

操纵系统虽然不直接参与机械做功,对机械的精度、强度、刚度和寿命没有直接影响,但机械系统性能的好坏,功能完成情况及操作者工作强度等,都与操纵系统有直接的关系。因此,对操纵系统的设计有下列主要要求:

1)操纵轻便省力。尽可能地减小操纵力,这样不但可以减轻操作者的劳动强度,符合人机工学的要求,以提高劳动生产力;同时还可提高操纵系统灵敏度,达到对机械系统的灵活操纵。

2)操纵行程适当。操纵的行程应尽量在保证人体不动的情况下,上、下肢能舒适达到的范围。

3)操纵件定位可靠。操纵件应能长时间可靠地保持在某一操作状态的位置,不能因其它操纵力的作用而改变其操作状态。

4)操纵系统的反馈准确迅速。操纵系统应具有良好的反馈性,使操纵信号准确迅速地反馈给操作者,以便操作者及时判断操作的效果,并作出新的操纵决策。

5)操纵系统应具有可调性。操纵系统应能进行必要的调节,以保证系统的元件磨损后,经过调节仍能达到操纵的效果。

6)操纵方便和舒适。为达到这一要求,不仅要求操纵力和操纵行程的大小舒适,而且操纵件的形状、尺寸、布置位置、运动方向和各操纵件的标记、操纵顺序等都要符合人体状况和动作习惯。

7)操纵安全可靠。操纵系统应保证实现预定的操作功能,防止错误的操纵或操纵失效。

2、机械基础的设计

机械工作时的全部载荷都由它下面的地层承受。受机械载荷影响的那一部分地层称为地基,机械向地基传递载荷的中间结构体即为基础。 机械基础应满足下列基本要求

1)强度方面的要求:避免在载荷作用下产生破坏和开裂; 2)刚度方面的要求:避免在载荷作用下产生过大的变形或倾斜; 3)振动方面的要求:避免过大的振动,以免影响机械本身的正常工作及邻近机械、设备等的正常使用;

4)经济性要求:机械基础在满足上述要求的情况下,应有良好的经济性。

机械基础设计的一般规定:

1)基础设计时应取得机械基础的基本资料;

2)机械基础宜与建筑物的基础、上部结构以及混凝土地面分开; 3)当管道与机械连接而产生较大振动时,管道与建筑物连接处应采取隔振措施;

4)当基础的振动对邻近的人员、精密设备、仪器仪表、工厂生产及建筑物产生有害影响时,应采取隔振措施; 5)基础不得产生有害的不均匀沉降;

6)重要的或对沉降有严格要求的机械,应在其基础上设置永久的沉降观测点,并应在设计图中注明要求。在基础施工、机械安装及运行过程中定期观测沉降情况,并作记录。

以上各个环节是整个机械系统设计的基本组成部分,各个环节的内容只是一些基本概念和要求,而在实际的设计过程中,每个环节的设计都有更加细致的过程,设计时需充分而全面的考虑可各方面的因素,在满足各个环节本身的要求的基础上,还要考虑原动机、传动系统、执行系统、控制系统以及辅助系统各个系统作为整个机械系统的组成部分之间的相互联系,以保证在组成整个系统后依然能较好的完成预定的功能要求。

上一篇:我看中国的龙文化下一篇:我很重要读书笔记