版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、操作系统(一个小型操作系统设计与实现)课程设计 南通大学计算机科学与技术学院 操作系统课程设计报告 专 业: 学生姓名: 学号: 时间: 操作系统模拟算法课程设计报告 设计要求 将本学期三次得实验集成实现: a.处理机管理; b.存储器管理; c.虚拟存储器得缺页调度。 设计流程图 主流程图 a、处理机调度 1)先来先服务 ffs n y 先来先服务算法流程 )时间片轮转法 开始得图形界面 处理机管理 存储器管理 缺页调度 先来先服务 时间片轮转 首次适应法 最佳适应法 先进先出 lru算法 开始 初始化进程控制块,让进程控制块按进程到达先后顺序让进程排队 调度数组中首个进程,并让数组中得下一
2、位移到首位 计算并打印进程得完成时刻、周转时间、带权周转时间 其中:周转时间 = 完成时间 - 到达时间 带权周转时间=周转时间/服务时间 更改计时器得当前时间,即下一刻进程得开始时间 当前时间=前一进程得完成时间+其服务时间 数组为空 结束 开始输入进程总数指针所指的进程是否结束输入各进程信息输出为就绪状态的进程的信息更改正在运行的进程的已运行时间跳过已结束的程序结束n指向下一个进程y如果存在下一个进程的话yn输出此时为就绪状态的进程的信息 时间片轮转算法流程图 b、存储器管理(可变式分区管理) 1)首次适应法 分配流程图 首次适应算法回收流程图 申请 xkb 内存 由链头找到第一个空闲区
3、分区大小xkb? 大于 分区大小=分区大小-xkb,修改下一个空闲区得后向指针内容为(后向指针)+xkb;修改上一个空闲区得前向指针为(前向指针)+xkb 将该空闲区从链中摘除:修改下一个空闲区得后向地址=该空闲区后向地址,修改上一个空闲区得前向指针为该空闲区得前向指针 等于 小于 延链查找下一个空闲区 到 链 尾了? 作业等待 返回 就否 登记已分配表 返回分配给进程得内存首地址 开始 2)最佳适应法 开始 输入完成进程得标号 在分配区表中查找 释放区 p 下邻分区空前一个空闲区得后向指针指向 p 得后一个分区,p 得后一个分区得前向指针指向 p 得前一个分区,且 p 得前一个分区大小更改为
4、加上 p 得大小,释放 p 释放区 p 上邻分区空 前一个分区得后向指针指向 p 得后一个空闲分区,p 得后一个空闲分区得前向指针指向 p 得前一个分区,且p 得后一个分区大小更改为加上 p 得大小 释放区 p 上下均邻空闲区 前一个空闲区得后向指针指向p 得后一个空闲分区,p 得后一个空闲分区得前向指针指向 p得前一个空闲分区,且 p 得前一个空闲分区大小更改为加上 p得大小再加上 p 得后一个空闲分区得大小,合并后得这个空闲区得后向指针指向 p 得下下个分区,如果 p 得下下个分区不为空,则其前向指针指向合并后得这个空闲区,释放 p 与 p 得下一个分区 释放区 p 上下均不邻空闲区 将
5、p 放在链首, 并修改其状态位为空闲 回收内存流程 c、虚拟存储器得缺页调度 )先进先出 fif 开始 fifo 得缺页中断处理 查主存分块表 有空闲块可用? 分配一块 j 得修改标志=1? j=phead 输出将 j 页复写入交换区 输出装入 l 页 调整 fifo 队列,将 l 插入队尾(head=(head+1)modm) n y n y 开始 释放分区与上空闲分区相邻 释放分区与下空闲分区相邻 结束 释放分区与下空闲分区相邻 t f t f t f 摘 除 链 表 中 上 分区。合并释放分区与上分区,将上空闲区长度修改为这二分区得长度。 摘除链表中上下分区。合并这三个分区,将上空闲区长
6、度修改为三个分区得长度。 摘 除 链 表 中 下 分区。合并释放分区与下分区,将释放分区中长度修改为这二分区得长度。 将合并得或释放得分区按长度升序重新插入到自由链表中。 2)r 修改主存分块表与页表 终止 fifo 淘汰算法流程 开始 lru 得缺页中断处理 查主存分块表 有空闲块可用? 分配一块 j 得修改标志=1? 找到栈底元素:j=pm-1 输出将 j 页送到入交换区 输出装入 l 页 调整堆栈,使 head 所指元素及以下得元素下移 phead=l 修改主存分块表与页表 终止 n y n y lru 淘汰算法流程 实现原理 主界面 设计一个框架分别去链接处理机管理、存储器管理与缺页调
7、度相关得程序。 、处理机调度 1 1 )先来先服务 f f fs (一)任务 先来先服务得调度算法实现处理机调度。 (二)要求 1.实现对cfs 算法得模拟实现 2.计算出该算法得平均作业周转时间、平均带权作业周转时间. (三)原理 按作业到达 cpu 时间先后顺序进行非剥夺式调度,先到达 cpu 得作业先被执行。 (四)数据结构 strct task_sruct char ame; 进程名称*/ in nmber; /进程编号 float _time; /到达时间/ flat run_bei_ime; /*开始运行时间/ flt ru_time; /运行时间*/ float nedtim;
8、*运行结束时间*/ nt iority; 优先级/ i rdr; /*运行次序* t run_flag; 调度标志 sksmax; ffs()先来先服务算法* 进程名 链接指针 到达时间 估计运行时间 进程状态 进程控制块结构 (五)实现方法 建立一个链表按照到达 cu 得时间从小到大排列,只需从第一个作业(头结点)依次调度到最后一个作业(尾结点)。 (六)运行界面 测试数据: 作业名 到达时间 运行时间 a 0 c 0 执行 fcfs 算法如下: 2 2 )时间片轮转法 (一)任务 只对进程得运行模拟,将其运行时间加一,判断要求运行时间与已运行时间就是否相等,若相等则表示进程结束,进程退出调
9、度,释放资源. (二)要求 1.实现对 r算法得模拟实现 2.显示执行完一个时间片得结果。 (三)原理 时间片轮转算法中,系统将所有得就程序按先来先服务得原则排成一个队列,每次调度时,把 cu 分配给队首进程,并令其执行一个时间片。当执行得时间片用完时,调度程序停止该进程得执行,并将它送往就绪队列得末尾;然后,再把处理机分配给就绪队列中新得队首进程,同时也让它执行一个时间片。 (四)数据结构 em-tate=r; /初始状态每个进程均为运行态 te-alocation0;/ uc 用占不均程进时始初 m+tmpneed_tme; /用 nu来限制循环得次数 (五)实现方法 处理器调度总就是选择
10、标志单元指示得进程运行。执行: 已运行时间1 来模拟进程得一次运行,表示进程已经运行过一个单位得时间。当一个进程被选中运行时,必须设置该进程可以运行得时间片值,以及恢复进程得现场,让它占有处理器运行,直到出现等待事件或运行满一个时间片 进程运行一次后,应把该进程得进程控制块中得指针值送到标志单元,以指示下一个轮到运行得进程。同时,应判断该进程得要求运行时间与已运行时间,若该进程得要求运行时间已运行时间,则表示它尚未执行结束,应待到下一轮时再运行。若该进程得要求运行时间=已运行时间,则表示它已经执行结束,应指导它得状态修改成结束且退出队列。此时,应把该进程得进程控制块中得指针值送到前面一个进程得
11、指针位置。 进程名 链接指针 到达时间 估计运行时间 进程状态 进程控制块结构 (六)运行界面 测试数据: 作业号 执行时间/s 1 b 2 c 1 执行时间片轮转算法 rr 如下: b、存储器管理(可变式分区管理) )首次适应法 (一)任务 通过采用首次适应算法实现内存得分配与回收,并可以查瞧与显示当前内存现状。 (二)要求 、实现对 ff 算法得模拟实现 2、输入要进行分配内存得进程 id 与相应所需内存大小,回收内存时输入已运行得进程 id. (三)原理 f算法要求空闲链已地址递增得次序连接.分配内存时,从链首开始顺序查找,直到找到第一个满足要求得空间并分配给进程,把分配后余下得空间仍然
12、留在链表中。若从链首至链尾都不满足要求,则分配失败.该算法倾向于优先使用低地址得空间。 (四)数据结构 int cos eo=5;/初始化常类型emo,用 mmo 表示内存大小(常类型得变量或对象得值就是不能被更新得) truct freemeor nt id;int strtadd;nt size; bool state;/定义 st 为布尔型变量,其值只有 真 (tue) 与假 (false) feemmoy* xt; ; frememory* loctalw freor;/建立全局管理表用于内与回收 reemory* ptrforcefitallocle;/为循环首次适应定义得指针,此指
13、针用于指向当前查找得起始地址; /初始化内存函数 od meorini(frememor mpadd) mpaddi0;/初始化当前进程为空 empadze=memo;/初始化可分配空间为内存大小 tempaddstartd=0;/初始化起始地址为 tpaddsatefalse; 初始化状态为未分配 tempaddnex=nll;/初始化下一个进程也为空 /反馈内存现态 void disemory() freemory empallctale;/全局管理表反映内存状态 cout系统总内存: moendl; for(;tep;tp=tep-next) cout进程 id:empid 大小:tmp
14、sie 起始地址:te-trtad 就是否已分配:tmstatndl; / 输出内存得各个变量 (五)实现方法 可变式分区管理就是指在处理作业过程中建立分区,使分区大小正好适合作业得需要,并且分区得个数就是可以调整得。当需要装入一个作业时,根据作业需要得贮存量,查瞧就是否有足够得空闲空间,若有,则按需求量分割一部分给作业;若无,则作业等待。随着作业得装入、完成,主存空间被分割成许多大大小小得分区.有得分区被分配作业占用,有得分区空闲。在空闲区表中,按空闲区首地址从低到高进行登记。 当一个作业执行完成时,作业所占用得分区应归还给系统。在归还时,要考虑相邻空间区合并问题。作业得释放区与空闲区得邻接
15、分以下种情况考虑: 、释放区下邻空闲区; b、释放区上邻空闲区; c、释放区上下都与空闲区邻接; 、释放区上邻空闲区不邻接。 (六)运行界面 系统总内存为56 时,分别为进程 1、2、3 分配大小为4、28、64 得内存。 执行首次适应算法分配内存如下: 若回收进程 2 得内存,执行结果如下: ) ) 最佳适应法 (一)任务 通过采用最佳适应算法实现内存得分配与回收,并可以查瞧与显示当前内存现 状。 (二)要求 1、实现对f 算法得模拟实现 2、输入要进行分配内存得进程 i与相应所需内存大小,回收内存时输入需要回收得内存块。 (三)原理 最佳适应算法扫描整个未分配表或链表,从空闲区中挑选一个能
16、满足用户进程要求得最小分区进行分配。此算法保证不会分割一个更大得区域,使得装入大作业得要求容易得到满足,同时,通常把空闲区按长度递增顺序排列,查找时总就是从最小得一个空闲区开始,直至找到满足要求得分区为止,这时,最佳适应分配算法等同于首次适应算法。此算法得主存利用率好,所找出得分区如果最好满足要求则就是最合适得. (四) 数据结构 nt onst memo=256;/初始化常类型 memo,用 mmo 表示内存大小(常类型得变量或对象得值就是不能被更新得) struc freememor in id;in ttadd;int siz; bool stae;/定义 state 为布尔型变量,其值
17、只有 真 (ue) 与假 (false) reeemoy* net; ; bool alloc_bestfit(int id,it ryiz) /查找满足此条件得 =tysie=2 得分区,然后将其放置在 x中,并将拆分成两个分区 srptiton(re);/使用快速排序算法,升序排序 or(;e;emptmpnt) *回收操作,回收过程中,要用到三个指针,上一个 last,当前 tep,下一个 tepnext 当 temp 指向表头或表尾时需要特殊考虑* /当要退出工作时,就要回收此退出得工作由执行函数调用 void ndjob(int d) ee_mry(d); (五)实现方法 空闲区设置
18、为双向链表,其双向链得分区格式为: 0(状态位) 分区大小(n+2) 向前指针 大小为 n 得已分配区或空闲区 (状态位) 分区大小(n+2) 向后指针 (六)运行界面 测试数据如下: 进程 2 3 4 5 6 所需内存 25 34 4 13 执行最佳适应算法为其分配内存如下: 若回收进程4,执行结果如下: c、虚拟存储器得缺页调度 1) 先进先出 fifo (一)任务 采用先进先出ifo 算法实现分页管理得缺页调度,并输出每次调入调出得页号与运行结果。 (二)要求 、实现对 fio 算法得模拟实现 2、输出每次执行得结果。 (三)原理 基于程序总就是按线性顺序来访问物理空间这一假设,总就是淘
19、汰最先调入主存得页面,即淘汰在主存中驻留时间最长得页面,认为驻留时间最长得页不再使用得可能性较大。 (四)数据结构 od if() ;hnel tni ;=00ofif i in pgengh; int foae000; ;j,i ni*法算出先进先* tuoc*nl; aength=3; ;9=htnel for(i1;i=engh;+) ;0=gaf tni fr(j1;j=pagelngth;j+) )eapfi=ioff(fi ;1=gal j=pagenth+1; ele i(fifoaej) fifopagej=fif; =paeenth+1; ;1=galf if(fla=1)
20、else ;ldeegapofif汰淘 tuc )+;hgnelega=j;1=j(rof ifopae=foae+; ffpgepagenth=ifi; (五)实现方法 当采用先进先出算法时,用一个数组构成先进先出队列,数组中各个元素为进程已在主存得页号,其队列头指针初始化为、假设分配给每个进程得内存块数固定.当队列满需淘汰时,淘汰最先进入主存得一页。若该页修改过,还有存入磁盘。然后要把当前访问得页装入该块,并修改页表与存储分块表得对应标志。 (六)运行界面 测试数据: 页表长度:; 页框长度:3; 页面请求数列:,,3,5,1,2,3,2 执行先进先出 fifo 算法结果如下: 2)lru
21、 (一)任务 采用先进先出u 算法实现分页管理得缺页调度,并输出每次调入调出得页号与运行结果. (二)要求 1、实现对 lu 算法得模拟实现 、输出每次执行得结果. (三)原理 最近最少使用页面替换算法淘汰得页面就是在最近一段时间内最久未被访问得那一页,它就是基于程序局部性原理来考虑得,认为那些刚被使用过得页面可能还有立即被使用,而那些在较长时间内未被使用得页面可能不会立即使用.在分页虚拟存储系统中,当硬件发出缺页中断后转操作系统处理缺页中断。如果主存中已无空闲块,可采用 lru 算法进行缺页处理. (四)数据结构 vid u() ;htgnel ti ;001ur ti ;htgneegap
22、 tn it lrupge00=0; int i,j; cout *最近最少使用 lru 算法*enl; ;3=htgelgap ;9htge for(=1;ilengt;+) ;galf ti )+j;tgneleap=j;1j(rof )jegpurl=(fi o(int cc=j;c0;cc) ;1-ccgaurl=eapl lrg1=lrui; ;galf ;1+htgnlega= )=egr(fi sl )-vv;0vv;=vv tn(rof lrpagevlrupvv-1; lrupge=lrui; j=pagelength+1; ;1=ga if(flag=) le ou 淘汰l
23、rupagpagelengthnl; or(j=agelng;j0;) ;egrl=jegapu ;iurl=1egaurl (五)实现方法 当采用 lu 算法时,用一个数组构成堆栈,堆栈中各个元素为进程已在主存得页号,为了进行页面置换,可设置一个栈指针,初始化为 0、假定分配给每个进程得内存块数固定不变.当队列满需淘汰时,操作系统选择栈底元素淘汰,其她元素向下移一个位置,将新调入页放栈指针指示得栈顶.当访问得页在栈中时,还应调整页从当前位置到栈顶。 (六)运行界面 测试数据: 页表长度:9; 页框长度:; 页面请求数列:,5,1,5,5,4,4,3 执行最近最少使用 lru 算法结果如下:
24、总结与体会 通过本次课程设计让我对于图形界面设计有了一定得思路与瞧法,同时我对先来先服务、时间片轮转、首次适应算法、最佳适应算法、先进先出与最近最少使用算法有了更详尽得认识.在编程得过程中发现会用到大量得指针,用指针来操作大量得数据比较方便,但最后应该记得释放资源。从这次实验中我发现我对于 c+掌握也有所不足,程序经过了多次修改才得以完善,在以后应该注重编程方面得训练。 此外我还更深入得理解了各个进程调度算法,及实现过程。在编写程序时查询了很多资料,间接提高了我得搜索能力.在此次课程设计过程中,对进程得相关知识有了一定得加深。特别就是对进程得进程控制块得存在与价值有了更进一步得认识。在编写程序
25、得过程之中,对进程自身信息得设计与管理以及调度得算法都有助于对书本知识得理解与掌握.特别就是设计先来先服务调度算法与时间片轮转调度算法得时候,对进程得调度算法有了更好得深入理解.对进程管理中得等待队列,就绪队列,时间片等概念有了更深刻得印象。 在设计此模拟操作系统得课设中,也加深了对 c知识得把握.解决了一些以往在编程中遇到了困难。通过此次得课程设计,不仅提高了对操作系统得认知,也在同时提高了编程得能力,加强了实践。另外,我觉得此次课程设计虽然主要问题就是在编程上,但就是经过不断得去调试,还就是成功得调试了出来。但就是这几个程序用了多天得时间进行分析与修改,虽然出现了不少问题,但收获颇多! 源
26、代码: #incudeiste #ncludcstring includ sddef using aepce std; in fcfoput(); /*调度结果输出 i fcfsinpt(); /进程参数得初始化 void ksh(); defin max 1 truct nd /建立链表来存放进程数据 char name5; /进程名称 in ned_time; /所需要得时间 nt allocaton; /占用 cp得情况 chr tae; /目前得状态 r 为运行,为运行完毕 nd et; /链表得尾结点 ; strct task_srut chr nam; /进程名称/ in nmer
27、; /*进程编号/ fla e_tim; /到达时间/ foat ru_egitim; 开始运行时间* loat runie; /*运行时间/ flo ru_nd_tim; /*运行结束时间/ in proity; *优先级/ nt oder; /运行次序/ nt ru_flag; 志标度调 tska; int coutr; /*实际进程个数/ nt fcfs()/*先来先服务算法/ fcsnpu(); float imetmp=0; i i; t numbr_shul; timetep=asks0、e_time; r(i0;icunter;i+) s、runegi_time=tmeemp;
28、tss、rnend_time=ksi、run_beg_timetasks、rutm; taksi、rn_fla1; tim_mp=tasks、rn_end_ime; mber_sce=i; tasknumber_schedu、orderi+1; cfsoutput(); rern 0; it fcfsipt() ; cut_ksat it ,j; /初始化进程数 cunter=3; /初始化每个到达系统得时间为 5、8 taks0、etim=rad()9; tak、e_tie=rand()%9; taks、e_imerad(); fo(=1;3;) )+j;ij;0j(o )emit_e、+j
29、sksaem_、jssat(fi ;sksat=tt ;1jssat=sksat tasks+1=t; /初始化每个进程估计运行得时间 tasks0、runtime=28; task1、run_time9; tasks2、run_tie; /初始化每个进程得名字 ;aman、skt tass、nam=b; ;c=ea、2sst cout*先来先服务算法*endlendl; for(;icounter;+) tsi、n_bein_e=0; aks、ru_end_ie=0; tassi、oder=0; tasksi、ruflag0; return ; int fcfsoutut() 调度结果输出
30、in i; float urnroundtime0,1,w=0; ou作业名 到达时间 运行时间 开始时间 停止时间 运行次序 周转时间end; fo(i=0;cnr;i+) f1=task、runendtme-taksi、e_time; turnrond_tim=f1; w+=(f1/tasi、rn_time); ot asksi、ame tasksi、e_timet tassi、rn_timet tas、unbegintit tasi、ru_nd_tiettaks、ordert1tendl; cout平均周转时间:turnoundiecoteredl; cot平均带权周转时间:w/coun
31、tered; cout ; rurn 0; /*-*/ int r() nt n=,nm=; node head=nll; nod al=ull; cou*时间片轮转调度算法*enedl; or(in i=0;;i+) node temp=new node; ;)a,ema-pmet(ypcrts)0=i(f if(i=1)srpy(mpa,b); if(=)trpy(tenam,c); tepneetimerand()%+; tem-sater; 初始状态每个进程均为运行态 tempalloato=0; /初始时进程均不占用 c nm=te-need_tme; /用 num 来限制循环得次数
32、 if(!hed) tailhea=emp; else ail-nextemp; tail=tmp; tailnext=ad; node *; p=had; outedl初始时刻:endl; cot进程t剩余时间t占用 cp时间nl; hle(p!=ail) c pnaet peed_timettpalctnsedl; =et; ot tailnaet taied_tt tp-locaosendl; nde *q; nt label=1; t m=1; whe(labl=1=um) ;lneuoc abel=; hil(!need_ie) p=nxt; if(need_ime) pned_ti
33、e-; ;+oitalp )0=mt_dn-(i ;e=etats- ;1=lbl ;txn=p cot执行m秒后:end; q=he; ou进程剩余时间t占用 cp时间edl; hle(q!=tl) ct qnamt q-ed_timetlocationendl; ;xen=q ot tilaet l-need_timetqalocationsendl; +; coutndl ; retn 0; *-*/ int onst mem=56;/初始化常类型em,用 memo 表示内存大小(常类型得变量或对象得值就是不能被更新得) trct feeeoy in d;it staad;i ie; b
34、ool sate;/定义 stt 为布尔型变量,其值只有 真 (tu) 与假 (fl) fremor* next; ; reeemory alloctable=new feeemor;/建立全局管理表用于内存分配与回收 fremmo* ptrforcycleft=alcte;/为循环首次适应定义得指针,此指针用于指向当前查找得起始地址; /初始化内存函数 id memoryit(frememory* temdd) tmaddid=;/初始化当前进程为空 empad-sze=me;/初始化可分配空间为内存大小 tempdd-srtadd0;/初始化起始地址为 tmpaddstfalse;/ 初始
35、化状态为未分配 tempadd-next=nul;/初始化下一个进程也为空 /反馈内存现态 vd ispmmory() ememo temp=alotable;/全局管理表反映内存状态 cout系统总内存: memoendl; for(;temp;temptempnext) cot进程 id:tepi 大小:tesie 起始地址:tmsttad 就是否已分配:tmsateenl; / 输出内存得各个变量 /分区排序 id sotpaion(ool ordr)/在此使用得就是快速排序算法 fmmry tep1alltal; feeemy tmp2llcable; reememo* last=te
36、1; freemeor* asttmp2; i(tep2next) tem2=temp2ext; wih(rde) ase 1:/升序部分 fo(;tm1;emp1m1nxt) for(;tem2;temptemp) if(emp1size tep-size)!emp1stte!empstat)/找到符合条件得,则交换 last1-ext=tep2; ltnx=mp1; freeemory* m=tmpext; tm2-et=eme; tep-netempnext; lst2=tem2; last1tep1; break; cas 0:降序部分 fr(;temp;ep1tep1nxt) for
37、(;temp2;emp2=tep2nx) i(temp1sze tempsiz)!emtat!mp2-stae)/找到符合条件得,则交换 ast1ex=tmp2; lst2-nex=temp1; frmmoy* temp=mp-nex; tep-nx=emp1-next; tm1-net=tempt; last2=em; asttemp1; /*内存分配/ bool llc_rstfi(in d, i tysie)/ 定义布尔型函数 allofitfi() /查找一个可用第一个满足分配请求得分区,如果满足将其写入内存分配表 /否则分配失败,返回 remeory* temp=llcal; o(;
38、tep;emp=ep-next) if(tryztempze !tp-stte)/第一个满足条件得分区已找到 if(tryize=empize)/刚好与申请得大小一致 emi=id; /保持不变 temp-next,siz,strtadd 都不用变 temp-sate=true; /值为真表示已分配 else/比所找到得要小,则需要将其拆分 feemo ewi=new feemoy; newitem-next=tempet; newitem-id=0; newitem-sie=tempsizetrysize; ewite-startadtempstrad+tyiz; newitemate=fa
39、e; empdd; emsztze; tempstate=u; tmp-ewim; retur u; /end fr reurn alse; bool aloc_estft(int id,nt trysiz) /查找满足此条件得 1trysiz=x2 得分区,然后将其放置在 x中,并将 x拆分成两个分区 sraton(tu);/使用快速排序算法,升序排序 frememoy temallotable; i(empnext) tmp=tmp-nxt; for(;tep;tem=tempet) i(tysi=psize !tmpstte)/第一个满足条件得分区已找到 if(trysize=tmize
40、)/刚好与申请得大小一致 temd=; /保持不变empnext,si,tadd 都不用变 tempstate=tue; 值为真表示已分配 ele/比所找到得要小,则需要将其拆分 fremmoy* netem=new feemor; newtemnextmex; newitem-id=; newitemsze=tmp-ize-tryize; nwite-tartad=te-statadd+tys; ewiemtt=fale; tmp-i=d; temp-size=tysze; temstattru; tempnxt=ewite; reurn true; /e or eun lse; bool llo_eor(t i, in agoithm,int rysize)/对算法进行选择 sitc(algorithm) ce 1 : reur alo_irstfit(,trysize); bre; cse 2: return lo_bsft(d,tysize); brea; efut: cout您没有指定算法,系统将默认为首次适应算法!!ndl; e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业生产管理与效率提升(标准版)
- 公共交通运营统计分析制度
- 公共交通车辆购置管理制度
- 南充市营山县2025年下半年公开考核招聘事业单位工作人员备考题库及一套完整答案详解
- 2026年重庆大学电气工程学院量子智能传感器团队劳务派遣工程技术人员招聘备考题库完整答案详解
- 养老院投诉处理与改进制度
- 2026年遵义市市直事业单位公开选调备考题库及一套答案详解
- 2026年聊城幼儿师范学校第二批公开招聘工作人员9人备考题库及1套完整答案详解
- 2026年梧州市长洲区荣祥投资有限公司招聘备考题库及参考答案详解
- 2026年韶关市大宝山资源综合利用有限公司招聘备考题库参考答案详解
- 蓝丝带的故事
- 上海市中医住院医师规范化培训细则(年7月12日)
- 样板加油站打造方案
- 浙江省杭州市西湖区2023-2024学年六年级上学期期末科学试卷
- 水站运维服务投标方案(技术标)
- 西安大地种苗有限公司种子加工储备中心建设项目(固废环保设施)竣工环境保护验收监测报告
- 不锈钢管道安装施工工艺
- GB/T 6003.1-2022试验筛技术要求和检验第1部分:金属丝编织网试验筛
- GB/T 96.1-2002大垫圈A级
- 印章证照外借申请登记表
- 2022年天津市津南创腾经济开发有限公司招聘笔试试题及答案解析
评论
0/150
提交评论