arcgis空间分析操作

2025-02-01|版权声明|我要投稿

arcgis空间分析操作(共5篇)

arcgis空间分析操作 篇1

启动ArcMap 点击+号加载shp文件,或在file下加载shp文件:

载入的shp文件CHNPRO31.shp

右键点击选open Attribute Table

打开的属性数据:

点选opention

点击Add field

如果选择做是长整数

如果选包含小数

字段选text 准备编辑数据,在excel上按地名编码procode等排好再复制

作以上这个动作之前须启动编辑器Editor(四个黑点的笔):

点start Editing之后开始粘贴数据

粘贴数据后退出编辑:

再右击shp文件输出数据:

输出文件重新起名后点击ok

用以下OpenGeoda画图:

以下作分位数图:4分位-9分位 用以下Geoda095i软件做空间权重矩阵和空间统计分析(参看geoda中文版手册)

输出文件要起文件名字:

选4个邻居(这个随便,也有选8个),还有距离远近门槛值,具体参见geoda使用说明

选择的权重文件的ID变量,这里是PROCODE,还可考虑什么ID?

点create,Done,空间权重被制作

点regress后作空间回归,加载空间权重,才可作空间滞后和空间误差模型

因变量GDP,自变量出口、投资、消费 补充:ArcMap裁减地图数据: 在启动编辑器,启动编辑才可裁减!

数据中西藏没了:

arcgis空间分析操作 篇2

关键词:GIS,煤层厚度,突出预测,空间分析

煤层的空间形态特征不仅影响着煤矿开采设计和施工,同时在煤与瓦斯突出矿井,煤层厚度的变化也是煤与瓦斯突出的重要影响指标之一。在对煤层空间分析处理时,传统方法主要采用人工方式,通过对钻孔资料的对比、内插获得煤层顶底板等高线、煤层厚度等高线等。人工处理方式难度高、工作量大、精度低,不利于在煤矿应用。

随着GIS技术在煤矿的推广应用,越来越多的GIS软件被引进到煤矿日常应用中。GIS强大的空间分析功能使煤层空间分析变得方便、快捷。

1 数据处理

1.1 地表等高线

打通一矿井田位于九龙山背斜西翼,在此翼部又产生了平行于背斜轴线的次一级褶皱,由东南向西北,依次为两河口向斜、羊叉滩背斜、大木树向斜和鱼跳背斜,控制本井田的主要构造为鱼跳背斜、大木树向斜。地表地形较为复杂,总体为中部高、东西两部低,标高为550~900 m。

地表等高线主要是根据地表测量的高程点,采用插值的方式生成。利用ArcGIS提供的CAD数据互操作功能,可以将CAD文件中高程控制点数据复制到Shape文件中。并利用3D分析功能,使用地表高程点图层创建TIN数据集,得到地表高程TIN模型。最后使用表面分析功能,从TIN模型生成地表等高线,并使用ArcMap的标签标注功能,将高程值自动标注在等高线上。通过以上步骤,完成了地表高程点从CAD到GIS的数据转换,并重新生成了地表等高线。

1.2 煤层底板等高线

打通一矿开采的井田范围东以羊叉河为界,与渝阳煤矿隔河相望;西北、西南以6#煤层底板等高线标高±0向地面垂直投影为界;南以大木树向斜与石壕煤矿毗邻。煤层底板标高0~420 m。受鱼跳背斜控制,形成以鱼跳背斜轴为中心线的脊状。

煤层顶底板等高线采用钻孔资料通过插值获得。使用ArcGIS的数据编辑功能,参照钻孔的XY坐标,在图层中相应的位置创建钻孔点,并将钻孔处的煤层底板高程输入到钻孔属性中;利用3D分析功能,使用钻孔的煤层底板高程属性创建TIN数据集,得到煤层底板高程TIN模型;再利用表面分析功能,从煤层底板高程TIN模型得到煤层底板等高线。

1.3 煤层厚度等值线

打通一矿含煤地层为二叠系上统龙潭组,属海陆过渡沉积相,含煤10~12层,6,7,8#三层煤可采,其中6#层局部可采,7,8#层全可采。6#层煤厚0.8 m左右,7#层煤厚1.2~1.7 m,8#层煤厚2.5~3.0 m。8#层为主采煤层。煤层厚度的不均匀,严重影响着工作面的布置和机械化采煤。

以8#层为例,对煤层厚度数据进行处理,得出煤层厚度等值线(图1)。数据处理方法同煤层底板等高线。

2 数据应用

2.1 煤层埋深

煤层埋深的增加使地应力增加,从而使煤层和围岩的透气性降低;另外煤层埋深的增加也使瓦斯向地表运移的距离增大。因此,随着煤层埋深的增加,煤层的瓦斯压力、瓦斯含量和瓦斯涌出量都会相应增加。对于打通一矿8#煤层,根据实际测量结果,煤层埋深每增加100 m,瓦斯含量将增加3 m3/t,瓦斯压力将增加0.3 MPa。煤层埋深等值线图对瓦斯治理工作具有重要指导意义。

煤层埋深等于地表高程与煤层底板标高之差。可以使用ArcGIS工具箱中提供的光栅数据数学运算功能实现上述运算。即利用数据转换功能,将前面得到的地表高程TIN模型和煤层底板高程TIN模型分别转换为光栅数据;再利用光栅数学运算中的减法运算功能,用地表高程光栅减去煤层底板高程光栅,得到煤层埋深光栅图;最后使用表面分析功能,生成等值线图(图2)。

2.2 煤层厚度变化

一般煤厚变化大是造成瓦斯分布不均衡的重要原因。这是因为煤厚变化破坏了瓦斯在煤层中的均衡状态,从而促进了瓦斯的运移和变化;另外,煤厚变化处也往往是地应力发生变化和集中的地方,而地应力分布与瓦斯分布极为密切。因此,全面了解和掌握矿区内煤层厚度变化情况,有助于瓦斯灾害防治工作的开展。

ArcGIS提供的坡度分析功能可计算出煤层各处单位距离内的煤厚变化。使用表面分析中的坡度分析功能,对前面得到的煤层厚度TIN模型进行分析计算,输出的坡度单位设置为百分比,即得到煤层各处厚度变化率。

3 结语

利用ArcGIS数据处理时,应注意以下事项:

(1)ArcGIS的某些版本不支持中文CAD文件名和路径,CAD文件应采用英文字符命名,并存放在由英文字符组成的路径下。

(2)为了使处理过程中产生的各图层可以叠加显示,各图层文件应采用同一坐标体系。

(3)在ArcScene环境下可以得到更好的三维显示效果。

参考文献

[1]蔡晓明,张云生.地理信息系统在煤矿中的应用[J].昆明理工大学学报,2005,30(5A):159~161.

[2]宋文杰,崔洪庆,朱志敏.基于GIS的采空区煤层气聚集区分析[J].煤田地质与勘探,2005,33(4):45~47.

[3]刘湘南.GIS空间分析原理与方法[M].北京:科学出版社,2005.

[4]胡殿明,林柏泉.煤层瓦斯赋存规律及防治技术[M].徐州:中国矿业大学出版社,2006.

有限空间作业操作要点 篇3

有限空间作业操作要点

有限空间作业属于高风险作业,一旦防护不当或操作不当极易发生事故,因此在作业过程中应严格遵守操作规程,保障作业安全。

1、制定作业方案

企业开展作业前应对作业环境评估,分析存在的危险有害因素,提出消除、控制危害的措施,制定有限空间作业方案,并经本企业安全生产管理人员审核,负责人批准。

方案中要明确有限空间作业负责人、监护人员、作业人员及其安全职责,并且在作业前,应当将有限空间作业方案和现场作业可能存在的危险有害因素、防控措施告知作业人员。现场负责人应当监督作业人员按照方案进行作业准备。

2、作业审批

作业前,作业人员按照本企业制定的《有限空间作业审批制度》履行审批手续,审批文件应存档备案。

3、封闭作业区域并设置警示标志

作业前,应封闭作业区域,并在出入口周边显著位置设置安全警示标志。

4、安全隔离

应当采取可靠的隔断(隔离)措施,将可能危及作业安全的设施设备、存在有毒有害物质的空间与作业地点隔开。

5、清除及置换

当有限空间内残留有挥发有毒有害、易燃易爆气体的物质时,需要使用水、水蒸气、惰性气体或新鲜空气进行蒸煮、清洗、置换或吹扫。当使用前三类介质置换后,应进行充分通风,防止有限空间内缺氧。

6、通风和检测

有限空间作业应当严格遵守“先通风、再检测、后作业”的原则。在作业前,作业人员应先对有限空间进行充分通风。通风时应注意,通风设备应配置风管,并将其置于有限空间中下部(尤其是存在较空气重的有害气体时)进行充分通风,且严禁用纯氧进行通风。

通风后,使用泵吸式气体检测报警仪检测氧浓度、易燃易爆物质(可燃性气体、爆炸性粉尘)浓度、有毒有害气体浓度。有限空间作业环境气体浓度如不符合相关国家标准或者行业标准的规定要求,应重复通风检测程序,直至符合要求。

检测人员进行检测时,应当记录检测的时间、地点、气体种类、浓度等信息。检测记录经检测人员签字后存档。检测的时间不得早于作业开始前30分钟。

7、佩戴个人防护用品

进行作业时,人员应穿戴全身式安全带,使用安全绳。在做好隔离、通风、检测等安全措施的情况下,如果有限空间作业仍可能存在威胁作业人员生命健康的危险有害因素,作业人员应正确使用个人防护用品。使用送风式长管呼吸器时应先送气再佩戴面罩;使用正压式空气呼吸器时应先打开气瓶阀,再戴面罩,最后将送气管与面罩连接进行送气。

8、作业与监护

确认气体环境、安全防护措施等符合要求,作业人员方可进入有限空间。作业过程中:

(1)应采取通风措施,保持空气流通,并且对作业场所中的危险有害因素进行定时检测或连续监测。

(2)保持有限空间出入口畅通。(3)发现通风设备停止运转、有限空间内氧含量浓度低于或者有毒有害气体浓度高于国家标准或者行业标准规定的限值时(气体检测报警仪开始报警)、个体防护装备失效或作业人员出现身体不适时,应立即停止有限空间作业,清点作业人员,撤离作业现场。

(4)设置专职监护人员,监护人员不得离开作业现场,作业期间与作业人员持续保持有效的沟通。

(5)存在交叉作业时,采取避免互相伤害的措施。

有限空间作业主要危险有害因素和评估依据

有限空间作业危险有害因素较多,最主要的是三大类气体危害,分别是缺氧窒息、中毒和燃爆。其它较常见的危害有坠落、淹溺、机械伤害、触电、物体打击等。

(1)有毒有害气体

有限空间内常见的有毒有害气体有甲烷、硫化氢、一氧化碳等。如:由于微生物的发酵分解作用,下水道、化粪池、污水池等有限空间内会产生并积聚硫化氢。

(2)缺氧窒息

有限空间内缺氧主要有两方面原因造成:一类是生物的呼吸作用或物质的氧化作用造成氧气的消耗,另一类是二氧化碳、氮气、甲烷等单纯性窒息气体对有限空间内氧气的挤占,导致缺氧。(3)易燃易爆气体

有限空间内常见的易燃易爆气体有甲烷、氢气等,一旦达到爆炸极限,遇点火源可能发生爆炸。

应依据以下标准对有限空间内的危害进行评估:

①氧气含量应在19.5%-23.5%Vol之间,低于19.5%为缺氧环境,高于23.5%为富氧环境;

②可燃气体应小于10%LEL;

③硫化氢浓度应低于10mg/m3(7ppm); ④一氧化碳浓度应低于20mg/m3(17ppm);

⑤其他有毒有害气体浓度应低于《工作场所有害因素职业接触限值第1部分:化学有害因素》GBZ2.1的相关要求; ⑥其它危险有害因素执行相关标准。

工贸企业有限空间作业安全管理要点

为落实59号令等相关文件的要求,工贸企业应当加强本企业有限空间作业安全管理,具体应做好以下几个方面的工作:

(1)存在有限空间作业的企业应建立安全责任制度、审批制度、现场安全管理制度、安全培训教育制度、应急管理制度、安全操作规程。

(2)企业应当对本企业的有限空间进行辨识,确定有限空间的数量、位置以及危险有害因素等基本情况,建立有限空间管理台账,并及时更新。

(3)企业应当对从事有限空间作业的现场负责人、监护人员、作业人员、应急救援人员进行专项安全培训。

(4)企业应在有限空间作业场所显著位置设置安全警示标志,(5)企业应根据有限空间作业的特点,制定有限空间作业事故专项应急预案或现场处置方案。配备呼吸器、安全绳索、通讯设备等应急装备和器材。每年至少进行一次预案演练,提高应急处置能力。

小学空间几何学习的操作性策略 篇4

1、生活经验的再现

首先,学生的几何知识来自丰富的显示原型,与现实生活关系非常紧密。例如三角形稳定性和在生活中的应用;以及对称性质在实际生活中的应用。(画家、建筑师、飞机制造工程师)

其次,学生在实际生活中有许多几何图形,这是他们理解几何图形、发展其空间观念的宝贵资源。学生在学习几何知识时,首先是联系生活中熟悉的实际事物,也可以从生活中熟悉的实物中选材,通过观察、触摸、分类,找出这些实物的主要的外形特征,形成对一些立体图形的直观认识为进一步认识图形打下基础。联系生活中实际事物的过程使几何表象更加清楚,有利于建立相应的几何概念。

2、观察活动

观察是一种有目的、有顺序、持久的视觉活动,它在几何学习中起到极其重要的作用,学生通过观察积累丰富的几何事实,以理解现实的三维世界,形成良好的空间观念。

小学生的观察活动是多种多样的。例如辨认图形活动(正方体、圆柱体、球体);对实验的观察;对实物、模型的观察。

小学生的观察能力也是逐步发展的。一般来说,观察活动要和思考有机地结合起来。儿童在四五岁时,已经能正确认识简单的图形,进入小学后,视觉成为有目的、有意识的活动。视线已能在一个物体上持续观察一会儿,能沿着图形轮廓不断地积极活动。因此在老师的指导下,他们在观察图形的目的性、精确性和有序性方面都将进入高一级的水平。

3、操作活动

空间观念的形成,只靠观察是不够的,教师还必须引导学生进行操作实验活动,让他们去比一比、折一折、剪一剪、拼一拼、画一画。根据实验研究结果,视觉、听觉、触觉等多种分析器共同活动,空间观念便易于形成与巩固。在直观认识长方形时,通过动手对折正方形纸片,就认识到正方形“四边相等”这一特征。又如学生在学习三角形内角和时,通过撕角、拼角把三角形纸片上的三个内角拼成一个平角,证明了三角形的内角和是180度。又如,围者教室走一圈,初步理解周长的概念。实践证明,操作实践是发展学生几何认识的重要方法。

4、想象活动

学生通过想象、绘制和比较放在不同位置上的物体或实物模型,逐步形成各种表象,发展和形成初步的空间观念。想象往往是和观察实验等活动结合起来的,几何学习中的想象要有实际依据。通过想象,学生直接和有效地发展了关于图形方位的表象。

同时,想象能力也是重要的思维能力。学生在通过对图形想象的过程中,发展了形象思维的能力。学生通过想象,可以开展一些创新实践活动,对于发展学生的创新能力具有重要作用。对于“用长方形、正方形三角形或圆拼图案”这样一个操作性目标,学生会有不同的表现:第一能拼出最常见的图案。第二能拼出多个图形。第三能拼出有新意、美感、充分利用几何特征的图案。这其中表现了学生有不同的想象能力。

5、交流活动

几何语言是在探索和体验空间与图形的过程中逐步发展起来的,所以在教学中应尽力为学生提供操作和交流的机会,而不应简单地、机械地让学生模仿教师和书本上的语言。

6、几何推理

小学几何的推理主要是在图形的转化中得到发展的,而并不主要是符号的推理。在传统的小学几何教学中,人们往往只停留于静态地观察图形。目前,图形的变化成为重要的内容。如,学习长方形、正方形和平行四边形以后,学生可以利用自制的由四根小木条钉成的长方形框架进行演示,把宽边漫漫往里移,成了正方形,再往里移又成了长方形,从而使学生悟出正方形是长方形的特例。然后又把长方形的宽固定,用手拉住长方形木框的两对角,向相反方向拉动,无论怎么拉都是平行四边形,只有当对角是90度时,才是长方形,又得知长方形是平行四边形的特例,不同的地方在于角。这样,正方形、长方形、平行四边形的逻辑关系就十分清楚地被学生掌握了。几何中的分类,也是一种重要的思维活动。例如,学生对生活中常见物体的几何形体进行分类和归类。

7、创作活动

arcgis空间分析操作 篇5

【实验名称】

首次适应算法和循环首次适应算法

【实验目的】

理解在连续分区动态的存储管理方式下,如何实现主存空间的分配与回收。

【实验原理】

首次适应(first

fit,FF)算法

FF算法要求空闲分区链以地址递增的次序链接。在分配内存时,从链首开始顺序查找,直至找到一个大小能满足要求的空闲分区即可。然后再按照作业的大小,从该分区中划出一块内存空间,分配给请求者,余下的空闲分区仍留在空闲链中。若从链首直至链尾都不能找到一个能满足要求的分区,则表明系统中已经没有足够大的内存分配给该进程,内存分配失败,返回。

循环首次适应(next

fit,NF)算法

为避免低址部分留下许多很小的空闲分区,以及减少查找可用空闲分区的开销,循环首次适应算法在为进程分配内存空间时,不再是每次都从链首开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找,直至找到一个能满足要求的空闲分区,从中划出一块玉请求大小相等的内存空间分配给作业。

【实验内容】

实现主存空间的分配与回收:

1.采用可变式分区管理,使用首次适应算法实现主存空间的分配与回收;

2.采用可变式分区管理,使用循环首次适应算法实现主存空间的分配与回收。

数据结构和符号说明:

typedef

struct

PCB//进程控制块

{

char

ProgressName[10];

//进程名称

int

Startaddress;

//进程开始地址

int

ProgressSize;

//进程大小

int

ProgressState

=

0;

//进程状态

};

typedef

struct

FREE

//空闲区结构体

{

int

Free_num;

//空闲区名称

int

Startaddress;

//空闲区开始地址

int

Endaddress;

//空闲区结束地址

int

Free_Space;

//空闲区大小

};

算法流程图:

首次适应算法

循环首次适应算法

程序代码及截图:

#include

#include

#include

#include

#define

N

1024

typedef

struct

PCB//进程控制块

{

char

ProgressName[10];

//进程名称

int

Startaddress;

//进程开始地址

int

ProgressSize;

//进程大小

int

ProgressState

=

0;

//进程状态

};

typedef

struct

FREE

//空闲区结构体

{

int

Free_num;

//空闲区名称

int

Startaddress;

//空闲区开始地址

int

Endaddress;

//空闲区结束地址

int

Free_Space;

//空闲区大小

};

int

count

=

0;

//当前内存中进程个数

bool

ROM[N];//设置内存块

int

p

=

0;//循环首次使用需要标记当前的空闲区块

FREE

FREE[100];//设置空闲区数组为100个

int

FREE_counter

=

0;//空闲区的个数

PCB

num[20];

//作业队列

void

init()//初始化操作

{

for(int

i=0;

i

i++)

ROM[i]

=

0;

}

void

showProgress(PCB

&a)

{

printf(“----------------------------------------------------------------------\n“);

printf(“进程名\t\t开始地址\t\t大小\t\t结束地址\n“);//输出内存信息

printf(“----------------------------------------------------------------------\n“);

for(int

i=0;

i

i++)

for(int

j=i;

j

j++)

if(num[j].Startaddress>num[j+1].Startaddress)

{

a

=

num[j];

num[j]

=

num[j+1];

num[j+1]

=

a;

}

for(int

i=0;

i

i++)

if(num[i].ProgressState!=0)

printf(“%s\t\t%d\t\t\t%d\t\t%d\t\t\n“,num[i].ProgressName,num[i].Startaddress,num[i].ProgressSize,num[i].ProgressSize+num[i].Startaddress-1);

printf(“----------------------------------------------------------------------\n“);

}

void

showFree()//打印空闲区的情况

{

printf(“----------------------------------------------------------------------\n“);

printf(“

空闲区名\t|

开始地址\t|

大小

\t|

结束地址\n“);

printf(“----------------------------------------------------------------------\n“);

for

(int

i=1;

i<=

FREE_counter;

i++)

{

printf(“\t%1d\t%8d\t%11d\t

%d\n“,FREE[i].Free_num,FREE[i].Startaddress,FREE[i].Free_Space,FREE[i].Endaddress);

printf(“----------------------------------------------------------------------\n“);

}

}

void

find_FREE()

//寻找空闲区

{

int

i,j,p;

//计数值

FREE_counter

=

0;//预设空闲区数为0

for(i

=

0;

i

N;

i++)

if(ROM[i]

==

0)

{

p

=

i;

for(j

=

i;

j

N;

j++)

{

if(ROM[j]==0)//未找到空闲区,则将j赋值给i后继续循环

{

i

=

j;

continue;

}

if(ROM[j]==1)//找到空闲区

{

FREE_counter++;//空闲区个数+1;

FREE[FREE_counter].Free_num

=

FREE_counter;//设置空闲区编号

FREE[FREE_counter].Startaddress

=

p;

FREE[FREE_counter].Endaddress

=

j-1;

FREE[FREE_counter].Free_Space

=

j-p;

i=j+1;

break;

}

}

if(j

==

N

&&

ROM[j-1]

==

0)//对最后一个内存进行特殊操作

{

FREE_counter++;

FREE[

FREE_counter].Free_num

=

FREE_counter;//对空闲区进行处理

FREE[

FREE_counter].Startaddress

=

p;

FREE[

FREE_counter].Endaddress

=j-1;

FREE[

FREE_counter].Free_Space

=

j-p;

}

}

}

void

First_Fit(PCB

&a)//首次适应算法

{

int

i,j,k;

for(i=0;

i

i++)

if(ROM[i]==0)

{

for(j=i;

j<=(i+a.ProgressSize)&&j

j++)//查询第一个空闲区,并判断是否适合插入作业

if(ROM[j]==1)

{

i

=

j

+

1;

break;

}

if(j==i+a.ProgressSize+1)

{

a.Startaddress

=

i;//设置作业的开始地址

a.ProgressState

=

1;//标记作业在内存中

for(k=i;

k

k++)

ROM[k]=1;

printf(“进程%s插入成功,进程%s的初始地址为%d,结束地址为%d\n“,a.ProgressName,a.ProgressName,a.Startaddress,a.Startaddress+a.ProgressSize-1);

return;

}

}

if(i==N)//未查询到合适的区域

printf(“插入失败,无可用空间!\n“);

}

void

Next_Fit(PCB

&a)//循环首次适应算法来实现作业调度

{

int

i,j,k;

for(i=p;

i

i++)//从所标记的当前区域开始查询,查询到末内存

{

if(ROM[i]==0)

{

for(j=i;

j<=(i+a.ProgressSize)&&j

j++)

if(ROM[j]==1)

{

i

=

j+1;

break;

}

if(j==i+a.ProgressSize+1)//找到合适的空闲区

{

a.Startaddress=i;

a.ProgressState=1;

for(k=i;

k

k++)

ROM[k]=1;

printf(“插入成功,进程%s的初始地址为%d,结束地址为%d\n“,a.ProgressName,a.Startaddress,a.Startaddress+a.ProgressSize-1);

p=i+a.ProgressSize;

return;

}

}

}

for(i=0;

i

i++)//当未找到时,从第一个空闲区开始查询,结束条件为小于所标记的P

if(ROM[i]==0)

{

for(j=i;

j<=(i+a.ProgressSize)&&j

j++)

if(ROM[j]==1)

{

i=j+1;

break;

}

if(j==i+a.ProgressSize+1)//成功找到结束,并标记当前P为现在的作业的尾部

{

a.Startaddress=i;

a.ProgressState=1;

for(k=i;

kk++)

ROM[k]=1;

printf(“插入成功,进程%s的初始地址为%d\n“,a.ProgressName,a.Startaddress);

p=i+a.ProgressSize;

break;

}

}

if(i==p)//查询两部分都未找到合适的区域,输出插入失败语句

printf(“插入失败,无可用空间\n“);

}

void

Delete(PCB

&a)//删除作业,修改内存信息和初始化该作业信息

{

int

i;

for(i=a.Startaddress;

i

i++)

ROM[i]=0;

a.ProgressState=0;//状态标记为未使用

printf(“进程%s删除成功\n“,a.ProgressName);

}

int

main()

{

int

choose1,choose;

char

ProgressName[10];

PCB

a;

init();

printf(“\t主存空间的分配与回收\n“);

printf(“---------------------------------------\n“);

printf(“\t1、首次适应算法\n“);

printf(“\t2、循环首次适应算法\n“);

printf(“---------------------------------------\n“);

printf(“请选择分配算法:“);

scanf(“%d“,&choose1);

system(“cls“);

while(1)

{

w:system(“cls“);

printf(“当前分配算法:“);

if(choose1

==

1)

printf(“首次适应算法\n“);

else

printf(“循环首次适应算法\n“);

printf(“---------------------------------------\n“);

printf(“\t1、插入进程\n“);

printf(“\t2、删除进程\n“);

printf(“\t3、显示进程的信息\n“);

printf(“\t4、显示空闲区\n“);

printf(“---------------------------------------\n“);

printf(“请输入:“);

scanf(“%d“,&choose);

system(“cls“);

switch(choose)

{

case

1:

printf(“请输入进程名:“);

scanf(“%s“,&a.ProgressName);

printf(“请输入进程的大小:“);

scanf(“%d“,&a.ProgressSize);

for(int

i

=

0;

i

count;

i++)

if(strcmp(num[i].ProgressName,a.ProgressName)==0)

{

printf(“已存在同名进程,无法插入。\n“);

system(“pause“);

goto

w;

}

if(choose1==1)//首次适应算法

First_Fit(a);

else

Next_Fit(a);//循环首次适应算法

num[count++]=a;

break;

case

2:

if(count

==

0)

{

printf(“当前没有进程在内存中,无法删除!\n“);

system(“pause“);

goto

w;

}

printf(“输入删除的进程名字:“);

scanf(“%s“,&ProgressName);

for(int

i=0;

i

i++)

if(!strcmp(num[i].ProgressName,ProgressName))

Delete(num[i]);

else

printf(“没有找到对应进程,请重新输入。\n“);

break;

case

3:

showProgress(a);

break;

case

4:

find_FREE();

showFree();

break;

default:

printf(“\n无效的输入。\n“);

}

system(“pause“);

}

return

0;

}

主界面:

首次适应算法,初始空闲区:

插入进程:

插入3个进程:

空闲区信息:

删除进程2:

删除后空闲区状况:

再插入一个进程,可以看到其其初始地址为100:

循环首次适应算法,插入3个进程

删除进程2后:

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:iwenmi@163.com

上一篇:班主任月考总结下一篇:喜鹊作文400字

付费复制
期刊天下网10年专业运营,值得您的信赖

限时特价:7.98元/篇

原价:20元
微信支付
已付款请点这里联系客服
欢迎使用微信支付
扫一扫微信支付
微信支付:
支付成功
已获得文章复制权限
确定
常见问题