操作系统一个小型操作系统的设计与实现课程设计_第1页
操作系统一个小型操作系统的设计与实现课程设计_第2页
操作系统一个小型操作系统的设计与实现课程设计_第3页
操作系统一个小型操作系统的设计与实现课程设计_第4页
操作系统一个小型操作系统的设计与实现课程设计_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

南通大学计算机科学与技术学院专业:学生姓名:操作系统模拟算法课程设计报告将本学期三次的实验集成实现:A.处理机管理;B.存储器管理;开始的图形界面先来先服务时间片轮转首次适应法最佳适应法先进先出LRU1)先来先服务FCFS始初始化初始化进程控制块,让进程控制块按进程到达先后顺序让进程排队调度数组中首个进程,并让数组中的下一位移到首位计算并打印进程的完成时刻、周转时间、带权周转时间其中:周转时间=完成时间-到达时间带权周转时间=周转时间/服务时间更改计时器的当前时间,即下一刻进程的开始时间当前时间=前一进程的完成时间+其服务时间N数组为空Y先来先服务算法流程输入进程总数输入各进程信息输出为就绪状态的进程指针所指的进程是Y跳过已结束N更改正在运行的进程的已运行时间输出此时为就绪状态的进程的信息如果存在下一个进程的话Y向下一进程NB理(可变式分区管理)始由链头找到第一个空闲区否延链查找下一个空闲区作业等待就回分区大小=分区大指针内容为(后向指针)+xkb;修改上向指针为(前向指登记已分配表返回分配给进程的内存首地址中摘除:修改下一地址=该空闲区后向地址,修改上一2)最佳适应法前一个空闲区的后向指针指向p的后一个前向指针指向p的一个分区大小更改为前一个分区的后向指针指向p的后一个空闲分区的前向指针指p的后一个分区大小更改为加上p的大小前一个空闲区的后向指针指向个空闲分区的前向指针指向p个空闲分区大小更改为加上p的大小再加上p的后一个空闲合并后的这个空闲的并修改其状态位为空闲始TF释放分区与上空闲分区相邻T摘除链表中上下分区。合并这三个分修改为三个分区的释放分区与下空闲分区相邻F区。合并释放分区分区,将上空闲区长度修改为这二分区的长度。释放分区与下空闲分区相邻T区。合并释放分区分区,将释放分区中长度修改为这将合并的或释放的分区按长度升序重新插入到自由链表中。查主存分块表Y有空闲块NJpHEADNJ的修改标Y输出“将J页复写入交换区”输出“装入L页”修改主存分块表与页表FIFO淘汰算法流程分配一块查主存分块表Y有空闲块分配一块N找到栈底元素:J=p[M-1]NJ的修改标Y输出“将J页送到入交换区”输出“装入L页”调整堆栈,使HEAD所指元素及修改主存分块表与页表LRU淘汰算法流程器管理与缺页调度相关的程序。1)先来先服务FCFS(一)任务(二)要求(三)原理(四)数据结构ttaskstruct{floatcometimefloatrun_begin_time;oatruntimefloatrun_end_time;iority(五)实现方法(六)运行界面测试数据:ABC00093(一)任务,判断要求运行时间与已运行时间(二)要求(三)原理时间片轮转算法中,系统将所有的就程序按先来先服务的原则排成一个队列,进程的执行,并将它送往就绪队列的末尾;然后,进程,同时也让它执行一个时间片。(四)数据结构temp->state='R';temp->allocation=0;num+=temp->need_time;//初始时进程均不占用cpu(五)实现方法处理器调度总就是选择标志单元指示的进程运行。执行:来模拟进程的一次运行,表示进程已经运行过一个单位的时间。当一个进程被选中运行时,必须设置该进程可以运行的时间片值,以及恢复进程的现场,让它处理器运行,直到出现等待事件或运行满一个时间片进程运行一次后,应把该进程的进程控制块中的指针值送到标志单元,以再运行。若该进程的要求运行时间=已运行时间,则表示它已经执行结束,应指导它的状态修改成“结束”且退出队列。此时,应把该进程的进程控制块中的指针(六)运行界面测试数据:121ABCB储器管理(可变式分区管理)(一)任务存的分配与回收,并可以查瞧与显示当前内存现(二)要求(三)原理空间并分配给进程,把分配后余下的空间仍然留在链满足要求,则分配失败。该算法倾向于优先使用低地(四)数据结构){emoryNextFreeMemoryAllocTablenewFreeMemory建立全局管理表用于内与回收FreeMemoryPtrforCycleFitAllocTable循环首次适应定义的指针,此指找的起始地址;oryInitFreeMemorytempAdd{dIDpAddSizeMEMOdStatefalseddNextNULL}emory{FreeMemorytempAllocTable管理表反映内存状态utMEMOendlmptempNexttempStartAdd就是否已分配:"<<temp->State<<endl;(五)实现方法程中建立分区,使分区大小正好适合作业的闲空间,若有,则按需求量分割一部分给作业;若邻C邻接;(六)运行界面:(一)任务最佳适应算法实现内存的分配与回收,并可以查瞧与显示当前内存现(二)要求(三)原理法扫描整个未分配表或链表,从空闲区中挑选一个能满足用户进程要此算法保证不会分割一个更大的区域,使得装入大作业时,通常把空闲区按长度递增顺序排列,查找时总就是从,直至找到满足要求的分区为止,这时,最佳适应分配算法应算法。此算法的主存利用率好,所找出的分区如果最好满足要求(四)数据结构intconstMEMOMEMOMEMO的值就是不能被更新的){};{//查找满足此条件的x1<=TrySize<=x2的分区,然后将其放置在x2中,并将x2拆分成两个分区{//当要退出工作时,就要回收//此退出的工作由执行函数调用{}(五)实现方法(六)运行界面346125(一)任务(二)要求(三)原理程序总就是按线性顺序来访问物理空间这一假设,总就是淘汰最先调入主存长的页不再使用(四)数据结构voidFIFO(){intfifo[100]={0};intfifoPage0]={0};inti,j;cout<<"***********************先进先出算法**************************"<<endl;for(i=1;i<=length;i++){if(fifo[i]==fifoPage[j]){fifoPage[j]=fifo[i];}}if(flag==1){}{}}(五)实现方法l(六)运行界面测试数据:长度:9;长度:3;(一)任务(二)要求(三)原理最近最少使用页面替换算法淘汰的页面就是在最近一段时间内最久未被访问的那一页,它就是基于程序局部性原理来考虑的,认为那些刚被使用过的页面可能还有立即被使用,而那些在较长时间内未被使用的页面可能不会立即使用。在分页虚拟存储系统中,当硬件发出缺页中断后转操作系统处理缺页中断。如果主存(四)数据结构RU{intlru[100]={0};inti,j;cout<<"***********************最近最少使用LRU算法***********************"<<endl;for(i=1;i<=length;i++){if(lru[i]==lruPage[j]){}for(intvv=j;vv>0;vv--){}}}if(flag==1){}{}}(五)实现方法(六)运行界面测试数据:页表长度:9;页框长度:3;页面请求数列:2,3,5,1,5,5,4,4,3对于图形界面设计有了一定的思路与瞧法,同时我对编程的过程中发现会用到大量的指针,用指针来但最后应该记得释放资源。从这次实验中我发现我对程调度算法,及实现过程。在编写程序时查,对进程自身信息的设计与管理以及调度的算法调度算法有了更好的深入理解。对进程管理中的概念有了更深刻的印象。c分析与修改,虽然出现了不少问题,但收获颇多!intfcfsoutput();/*调度结果输出*/intfcfsinput();//进程参数的初始化//建立链表来存放进程数据{//进程名称//所需要的时间//目前的状态R为运行,E为运行完毕};//链表的尾结点{intpriority;}tasks[MAX];/*进程名称*//*进程编号*//*到达时间*//*开始运行时间*//*运行时间*//*运行结束时间*//*优先级*//*运行次序*//*调度标志*/intcounter;/*实际进程个数*/intfcfs()/*先来先服务算法*/{inti;{}}{inti,j;//初始化进程数for(i=1;i<3;i++){for(j=0;j<3-i;j++){{}}}//初始化每个进程估计运行的时间//初始化每个进程的名字cout<<"************************先来先服务算法************************"<<endl<<endl;{}}intfcfsoutput()/*调度结果输出*/{inti;cout<<"作业名到达时间运行时间开始时间停止时间运行次序周转时间"<<endl;{eet}""cout";}/**/intrr(){nodetailNULL;cout<<"*********************时间片轮转调度算法*********************"<<endl<<endl;for(inti=0;i<n;i++){//初始状态每个进程均为运行态//初始时进程均不占用cpum{}{}}whilep=tail){}{{}{{}}hileqtail{}}}/**/intconstMEMOMEMOMEMO的值就是不能被更新的){};FreeMemory*PtrforCycleFit=AllocTable;//为循环首次适应定义的指针,此指针用于指向当前查找的起始地址;//初始化内存函数{mpAddIDtempAdd->Next=NULL;//初始化下一个进程也为空}//反馈内存现态{cout<<"系统总内存:"<<MEMO<<endl;cout<<"进程ID:"<<temp->ID<<""<<"大小:"<<temp->Size<<""<<"起始地}//输出内存的各个变量//分区排序r{{{{{te{}}}}{{{换{}}}}}}/*内存分配*/{//查找一个可用第一个满足分配请求的分区,如果满足将其写入内存分配表//否则分配失败,返回{{{}se{}}}{//查找满足此条件的x1<=TrySize<=x2的分区,然后将其放置在x2中,并将x2拆分成两个分区{{{}se{}}}{{cout<<"您没有指定算法,系统将默认为首次适应算法!!!"<<endl;}}/*EndMemoryAlloc内存分配区操作定义完成*/{ftempIDid{//考虑第一条记录的特殊情况{}else//只有第一分区为空,则清除相关表项的数据{}}//特殊情况第一条{dbeginID{iftempNext一条{ifLastStatetempNextState/回收区与插入点的前、后两个分区邻接优先级为1{{{Last=NULL;}{}}//最后一条{{}{}}}//end找到该ID表项此类情况处理完毕}//当进程开始时,就应该为之分配内存{}//当要退出工作时,就要回收//此退出的工作由执行函数调用{}/**/voidFIFO(){intfifo[100]={0};intfifoPage0]={0};inti,j;cout<<"***********************先进先出算法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论