第一篇:操作系统课程设计--基于Windows进程互斥实现机制
学生姓名:
班 学 号:193121 指导教师:袁国斌
中国地质大学计算机学院 2013年 12 月 4 日 操作系统课程实验报告 实习题目:基于Windows进程互斥实现机制
【需求规格说明】
基于Microsoft Visual Studio环境的多线程编程验证互斥的原理,理解多线程编程中关键元素的定义与使用,通过使用Semaphore,mutex等控制元素,实现对生产者消费者模型的真实模拟。函数的功能与实现自己定义。
【算法设计】
(1)设计思想:
通过输入生产者消费者数量信息,以及缓冲区大小、循环次数来实现对生产者消费者模型的真实模拟。当缓冲区Buffer为空时,等待生产者生产,消费者停止消费;当缓冲区Buffer为满时,等待消费者消费,生产者停止生产。
(2)设计表示:
用Buffer_Size 定义缓冲区大小 用变量Thread[]数组来存储线程
使用函数调用ProducerPrintf()来输出生产的情况 使用函数调用ConsumerPrintf()来输出正在消费的情况 通过如下同步对象实现互斥:
设一个互斥量Mutex,实现生产者在查询和保留缓冲区的下一个空位置时进行互斥。
设置Semaphore信号量数组表示相应产品已经生产,实现生产者与消费者之间的同步。同时,用表示空缓冲区树木的信号量semephore指示是否存在空位置,实现类似的同步,以便开始下一个产品的生产。 设置临界区对象数组Critical实现每个缓冲区上消费者之间的互斥
(3)详细设计表示:
主要过程:
1.主函数
2.输入并读取消费者生产者数量信息 3.输入缓冲区大小及循环操作次数
4.创建生产线程和消费线程完成线程相关同步对象的初始化 5.创建线程,模拟生产者和消费者 6.等待所有线程结束 7.程序结束
消费者线程:
1.有无消费请求?有,则继续,无,则结束 2.进入临界区(请求同一产品的消费者之间互斥)3.消费产品,并判断是否应该释放产品所占缓冲区 4.退出临界区 5.结束消费者线程
生产者线程:
1.存在空缓冲区?有,则继续;无,则阻塞退出 2.进入临界区(请求同一产品的生产者之间互斥)3.在缓冲区中为本线程产品分配空间 4.退出临界区
5.写入产品到分配的缓冲区空间中 6.结束生产者线程
【调试报告】、【附录】
#include
int NUM=0;//定义缓冲区中产品数量的变量 int P_NUM=1;//生产次数计数
int C_NUM=1;//消费次数计数 int times=0;//循环次数
int Buffer_Size=0;//定义缓冲区大小的变量
HANDLE Mutex;//互斥信号量
HANDLE FullSemaphore;//当缓冲区满是使生产者等待 HANDLE EmptySemaphore;//当缓冲区空时使消费者等待 HANDLE Thread[N];//存储线程的数组
DWORD WINAPI producer(LPVOID);DWORD WINAPI consumer(LPVOID);DWORD Producer_ID[N/2];DWORD Consumer_ID[N/2];
void ProducerPrintf();//输出生产的情况 void ConsumerPrintf();//输出正在消费的情况
void main(){ int i=1;int P_thread=0,C_thread=0;//定义线程变量
int choice=0;printf(“t*****************************************n”);printf(“t*t欢迎进入P-C进程调度系统 *n”);printf(“t*t
1、进入模拟调度 *n”);printf(“t*t 0、退出本系统 *n”);printf(“t*****************************************n”);printf(“tt请选择:”);
//创建生产线程和消费线程 for(i=0;i
//创建信号量
Mutex=CreateMutex(NULL,FALSE,NULL);FullSemaphore=CreateSemaphore(NULL,Buffer_Size-1,Buffer_Size-1,NULL);EmptySemaphore=CreateSemaphore(NULL,0,Buffer_Size,NULL);WaitForMultipleObjects(P_thread+C_thread,Thread,TRUE,INFINITE);//while(P_NUM printf(“tt4、请输入循环操作次数:”);break;} DWORD WINAPI producer(LPVOID lpParameter){ } DWORD WINAPI consumer(LPVOID lpParameter){ } void ProducerPrintf(){ int i=0;{ if(P_NUM<=times)NUM++;printf(“n生产者正在生产n”); for(i=1;i<=NUM;i++) if(P_NUM==P_NUM-NUM+i)printf(“(%d)”,P_NUM-NUM+i);printf(“%d ”,P_NUM-NUM+i);else printf(“ <-n”);while(C_NUM } return 0;WaitForSingleObject(EmptySemaphore,INFINITE);WaitForSingleObject(Mutex,INFINITE);ConsumerPrintf();Sleep(500);ReleaseMutex(Mutex);ReleaseSemaphore(FullSemaphore,1,NULL);while(P_NUM } return 0;WaitForSingleObject(FullSemaphore,INFINITE);WaitForSingleObject(Mutex,INFINITE);ProducerPrintf();Sleep(500);//设置延迟时间 ReleaseMutex(Mutex);//释放互斥信号量 ReleaseSemaphore(EmptySemaphore,1,NULL);//释放信号量 } } P_NUM++;} void ConsumerPrintf(){ } int i=0;{ NUM--;printf(“n消费者正在消费n”);for(i=0;i<=NUM;i++) if(C_NUM==C_NUM+i)printf(“<-(%d)”,C_NUM+i);printf(“%d ”,C_NUM+i);else if(C_NUM<=times)printf(“n”);printf(“n消费完毕!n”);if(C_NUM==times)C_NUM++;} 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 WINDOWS操作系统 【Windows XP】 概述 Windows xp是微软公司发布的一款视窗操作系统。它发行于2001年8月25日,原来的名称是Whistler。微软最初发行了两个版本,家庭版(Home)和专业版(Professional)。家庭版的消费对象是家庭用户,专业版则在家庭版的基础上添加了新的为面向商业的设计的网络认证、双处理器等特性。且家庭版只支持1个处理器,专业版则支持2个。字母XP表示英文单词的“体验”(experience)。 Windows XP是基于Windows 2000代码的产品,同时拥有一个新的用户图形界面(叫做月神Luna),它包括了一些细微的修改,其中一些看起来是从Linux的桌面环境(desktop environmen)诸如KDE中获得的灵感。带有用户图形的登陆界面就是一个例子。此外,Windows XP还引入了一个“基于人物”的用户界面,使得工具条可以访问任务的具体细节。 它包括了简化了的Windows 2000的用户安全特性,并整合了防火墙,以用来确保长期以来以着困扰微软的安全问题。 版本 Windows XP Home Edition Windows XP Home Edition是家庭版,虽然微软推荐家用计算机使用Home版,但其实Home版的性能和安全性并不比Professional版 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 好多少(性能好像稍微差一些)。而且有些软件是需要Professional版支持的。Home版本主要是为了跟Professional区分,添加了少量娱乐功能,去掉了某些家庭很少使用的功能(比如IIS等)降低售价,允许厂家以低廉的价格装配给用户。 Windows XP Professional Windows XP Professional在系统可靠性与性能表现方面提出了最新标准。该操作系统的设计思想主要体现为,满足由各种规模的商务企业和希望充分发掘计算体验的广大用户所提出的相关需求。 Windows XP 64-Bit Edition Microsoft 已经开始开发它的第一个64位客户操作系统--Windows XP 64-Bit Edition,来满足电影特效制作、3D动画、工程和科学应用这样的特殊用户对大量内存和高浮点运算性能的需求。 其他版本 在2002年11月,微软发布了两个为特殊硬件使用的新版本XP: Windows XP Media Center Edition 为专门个人电脑使用的Windows XP Media Center Edition(媒体中心版本)。现在,这些个人电脑包括HP Media Center电脑,以及Alienware Navigator系列。这些电脑拥有遥控器,拥有开启Windows XP Media Center上的媒体的功能。Windows XP Media Center版本必须捆绑在这些计算机上,并不单独销售。在香港, 如果购买了单独出售的Windows XP Media Cente就会被视为使用翻版软件。 Windows XP Media Center Edition 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 为平板可旋转式的笔记本电脑(Tablet PC,微软的概念)设计的Windows XP Tablet PC Edition,带有支持触屏手写的特性。同样它必须捆绑在这些平板笔记本电脑上,并不单独销售。 Windows XP Media Center与Windows XP Tablet PC Edition都是Windows XP Professional的超集(Superset)。 低价的入门版 为了压制东南亚区高盗版率所带来的威胁,微软将在东南亚地区国家如马来西亚,印尼,泰国发布了相关语言的入门版的Windows XP,即Windows XP Starter Edition。该版本将以非常低的价格来吸引一些买不起高价的Windows XP(专业版与家庭版)的家庭用户或一些学校,政府机构。不过入门版的Windows XP有功能上限制,如只支持最高256MB内存,只能同时运行3个程序,最高800x600解析度等等。 64位版 微软在2003年3月28日发布了64位的Windows XP。 64位的Windows XP称Windows XP 64-Bit Edition。其实就是64位版本的Windows XP Professional。根据不同的微处理器架构,它分为两个不同版本: IA-64版的Windows XP 针对英特尔(Intel)的IA-64架构的安腾2(Itanium2)纯64位微处理器的Windows XP 64-Bit Edition Version 2003 for Itanium-based Systems。它是拥有64位寻址能力的强大的操作系统,主要面向顶级的高端IA-64架构的工作站,用在高端的科学运算,石油探测工艺,立体绘 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 图,复杂的动画制作等等,是一种用在高效能运算(High Performance Computing)的强大的操作系统。估计它可能会改名为Windows XP Professional Itanium-based Edition。支持双处理器;最低支持1GB的内存,最高支持16GB的内存。 x86-64版的Windows XP 针对超微(AMD)的x86-64架构的Opteron与Athlon 64所属的64位扩展微处理器的Windows XP 64-Bit Edition for 64-Bit Extended Systems。由于英特尔也发布了x86-64架构的EM64T技术的Xeon与Pentium 4的64位扩展微处理器,故微软将该版本的的Windows XP 64-Bit Edition改为Windows XP Professional x64 Edition,它支持AMD与Intel的x86-64架构。可以使用在一般x86-64架构的工作站,桌面电脑以及笔记本电脑,用途与32位Windows XP Professional一样,但具有64位寻址能力。支持双处理器;最低支持256MB的内存,最高支持16GB的内存。 微软提供Windows XP Professional x64 Edition的预览版免费下载,试用期为一年,下载者的电脑必须配备有AMD的Opteron/Athlon64或Intel的Xeon(EM64T)/Pentium 4(EM64T)才能安装使用Windows XP Professional x64 Edition。 补丁 Windows XP Service Pack 1(2002.8) Microsoft 始终坚持不懈地改进其软件产品。作为这种努力的一部分,我们开发已知问题的更新和修补程序,并向客户发布。我们会 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 经常性地将很多修补程序放入一个软件包内向您提供,以便您能安装在自己的计算机上。这些软件包称为 Service Pack(服务软件包)。 Windows XP Service Pack 1(SP1)提供 Windows XP 系列操作系统的安全性与可靠性的最新更新。Windows XP SP1 是设计用于确保 Windows XP平台与新发行的软件和硬件之间的兼容性的;其中还含有更新,可以解决客户或 Microsoft 的内部测试组所发现的问题。要确定是否安装 Windows XP SP1,我们建议您查看 Windows XP 文档及以下信息。 Windows XP Service Pack 2(2004.8) Microsoft 大约每年都会发布一个针对 Windows XP 的升级。这些升级包含了在过去的1年中对 Windows XP 进行的所有修补和增强。用户可以通过升级文件(被称作服务包[Service Packs])获得最全、最新的驱动程序、工具、安全更新、补丁程序以及应用户要求所做的产品修改。 Windows XP 服务包 Service Pack 2(SP2)着重于安全问题,是 Microsoft 有史以来发布的最为重要的服务包之一。它提供了对病毒、黑客和蠕虫的更好保护,并且内置Windows 防火墙,Internet Explorer 弹出窗口拦截程序,并且新增了 Windows 安全中心。 增加了对Cool'n'Quiet的支持。 外观 Windows XP是基于Windows 2000代码的产品,同时拥有一个新的用户图形界面(叫做月神Luna)。 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 Windows XP拥有一个叫做“月神”Luna的豪华亮丽的用户图形界面。Windows XP的视窗标志也改为较清晰亮丽的四色视窗标志。Windows XP带有用户图形的登陆界面;全新的XP亮丽桌面,用户若怀旧以前桌面可以换成传统桌面。此外,Windows XP还引入了一个“选择任务”的用户界面,使得工具条可以访问任务的具体细节。然而,批评家认为这个基于任务的设计指示增加了视觉上的混乱,因为它除了提供比其它操作系统更简单的工具栏以外并没有添加新的特性。而额外进程的耗费又是可见的。 它包括了简化了的Windows 2000的用户安全特性,并整合了防火墙,以用来确保长期以来以着困扰微软的安全问题。 由于微软把很多以前是由第三方提供的软件整合到操作系统中,XP受到了猛烈的批评。这些软件包括防火墙、媒体播放器(Windows Media Player),即时通讯软件(Windows Messenger),以及它与Microsoft Passport网络服务的紧密结合,这都被很多计算机专家认为是安全风险以及对个人隐私的潜在威胁。这些特性的增加被认为是微软继续其传统的垄断行为的持续。[编辑本段]【Windows Server 2003】 概述 Windows Server 2003是目前微软推出的使用最广泛的服务器操作系统。 一开始,该产品叫作“Windows.NET Server”,改成“Windows.NET Server 2003”,后最终被改成“Windows Server 2003”,于2003年 3精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 月28日发布,并在同年四月底上市。 改进 此版本做了很多改进,特别是: 改进的Active Directory(活动目录)(如可以从schema中删除类) 改进的Group Policy(组策略)操作和管理 改进的磁盘管理,如可以从Shadow Copy(卷影复制)中备份文件。 版本 Windows Server 2003有多种版本,每种都适合不同的商业需求: Windows Server 2003 Web版 Windows Server 2003 标准版 Windows Server 2003 企业版 Windows Server 2003 数据中心版 Windows Server 2003 Web版 价格 Windows Server 2003 标准版零售价格为USD999.00,包括5个Active Directory。客户也可以通过原始厂商OEM与批量许可(又称大量授权)(Volume License)方式取得。 Windows Server 2003 企业版的32位版本零售价格为USD3,999.00,包括25个Active Directory。客户也可以通过原始厂商OEM与批量许可(Volume License)方式取得。至于64位版本的Windows Server 2003 Enterprise Edition只能通过OEM与Volume 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 License方式取得。 Windows Server 2003 Web版的Open NL价格为USD399,不需要客户端访问授权。此版本没有零售版,只能通过OEM与Volume License方式取得。 Windows Server 2003 数据中心版不论32位版还是64位版都必须通过OEM方式获得,因此价格未知。[编辑本段]【Windows Vista】 全新的Windows Vista(以前代号为Longhorn)业已在2006年11月30日发布。人们可以在Vista上对下一代应用程序(如WinFX、Avalon、Indigo 和 Aero)进行开发创新。Vista是目前最安全可信的Windows操作系统,其安全功能可防止最新的威胁,如蠕虫、病毒和间谍软件。 新功能 1,操作系统核心进行了全新修正。winxp和2k的核心并没有安全性方面的设计,因此只能一点点打补丁,vista 在这个核心上进行了很大的修正。例如在vista中,部分操作系统运行在核心模式下,而硬件驱动等运行在用户模式下,核心模式要求非常高的权限,这样一些病毒木马等就很难对核心系统形成破坏。 Vista上的“heap”设计更先进,方便了开发者,提高了他们的效率。在电源管理上也引入了睡眠模式,让我们的vista可以从不关机,而只是极低电量消耗的待机,启动起来非常快,比现在的休眠效率高多了。 内存管理和文件系统方面引入了superFetch技术,可以把经常使 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 用的程序预存入到内存,提高性能,此外你的后台程序不会夺取较高的运行等级了,不用担心突然一个后台程序运作其他让你动弹不得。因为硬件驱动运作在用户模式,驱动坏了系统也没事,而且装驱动都不用重启了。 2,网络方面集成IPv6支持,防火墙的效率和易用性更高,优化了TCP/IP模块,从而大幅增加网络连接速度,对于无线网络的支持也加强了。 3,媒体中心模块将被内置在Home Premium版本中,用户界面更新、支持CableCard,可以观看有线高清视频了。 4,音频方面,音频驱动工作在用户模式,提高稳定性,同时速度和音频保真度也提高了不少,内置了语音识别模块,带有针对每个应用程序的音量调节。 5,显示方面,vista内置Direct X 10,这个可是vista only的,使用更多的dll,不向下兼容,显卡的画质和速度会得到革命性的提升。 6,集成应用软件:取代系统还原的新SafeDoc功能让你自动创建系统的影像,内置的备份工具将更加强大,许多人可以用它取代ghost;在vista上outlook升级为了windows mail,搜索功能将非常强大,还有内置日程表模块,新的图片集程序、movie maker、windows media player11等等都是众所期待的升级。 7,Aero Glass以及新的用户界面,窗口支持3D显示提高工作效率。显卡现在也是一个共享的资源,它也负责windows的加速工作,再加上双核处理器的支持,以后大型游戏对于windows来说也不会是 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 什么大任务了,开启一个小窗口就可以运行。 8,重新设计的内核模式加强了安全性,加上更安全的IE7、更有效率的备份工具,你的vista会安全很多。 版本 由于计算机用户对计算机的需求和使用模式千差万别,微软提供了不同版本的 Windows Vista 以满足这些需求。与 Windows XP 后期的各种变异版本(某些功能仅适用于某些版本的 Windows)不同,Windows Vista 的功能分布是为了提供“好的、更好的和最好的”选项来满足消费者的需求。 与现今存在的两类 Windows XP(家庭版和专业版)密切对应,Windows Vista。Windows Vista 也分为家庭版和企业版两个大类。 家庭/消费类用户版包含四种版本: ● Windows Vista Starter ● Windows Vista Home Basic ● Windows Vista Home Premium ● Windows Vista Ultimate 企业用户版包含三种版本: ● Windows Vista Ultimate ● Windows Vista Business ● Windows Vista Enterprise 除了这七种版本之外,还提供了其他的选择以满足一些特殊地区用户的需求。例如,在位于欧盟的一些地区,将提供标记为 Windows 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 Vista Home Basic N 和 Windows Vista Business N 的额外版本,这些版本但不会包括 Windows Media Player 和其他与媒体相关的功能。在韩国也会提供一些类似的、减少了功能的版本。 外观 Windows Vista将包含四种不同的外观: Windows Aero Aero界面是新设计的Windows用户界面,此模式是建基于一个新的桌面引擎名为桌面窗口管理器(Desktop Window Manager),实现了与Linux下XGL类似的功能,整体玻璃感能让使用者一眼望穿。Windows Aero包含了Windows Flip 3D、磨砂玻璃界面、活按钮等华丽的视觉效果。此模式不包含于低价入门版和家用入门版中,并需通过Windows正版增值计划和达到Windows Vista Premium Ready标签贴纸测试的要求才能执行(在某些Capable PC中也相同能执行,因为Premium Ready包含一些不是每个人常用到的硬体,如:电视卡)。 Windows Vista 标准模式 此模式与Windows Aero类似,但少了玻璃界面、Windows Flip 3D等这些华丽的视觉效果,但同样使用桌面窗口管理引擎,此模式是家用入门版的默认界面。 Windows Vista 基本模式 此模式比Windows Vista 标准模式更为精简,不使用桌面窗口管理器,亦不使用新的显示卡驱动模式名为Windows Display Driver Model。此模式是为显示卡不能支持Windows Aero的电脑的默认界面。 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 Windows 传统模式 此模式含六种主题配色,外观与Windows 2000相同。 Vista的菜单有了很大的区别,有点象Mac,透明的图标也很好看,IE7使用起来也很好玩,总之默认的色调让Vista看起来有些神秘感,由于系统太慢,只得匆匆换回原来的2003系统。 看来以后电脑内存的标准配置又得提高一个档次,内存至少得512M起,分区得20G起,虽然Vista是Windows一个非常重要的版本,但它对硬件的要求太高,同传统的Windows系统使用起来也有很大差别,估计最近几年都很难流行起来。现在快2006年了,但win98仍然有广泛人群使用,Win2003也仍然不如Windows XP畅销好用,而64位的Vista将使得很多软件又得重新升级代码,所以要真正使用Vista作为自己日常使用的OS,仍然有相当长一段时间要走。[编辑本段]【Windows Server 2008】 Microsoft Windows Server 2008 代表了下一代 Windows Server。使用 Windows Server 2008,IT 专业人员对其服务器和网络基础结构的控制能力更强,从而可重点关注关键业务需求。Windows Server 2008 通过加强操作系统和保护网络环境提高了安全性。通过加快 IT 系统的部署与维护、使服务器和应用程序的合并与虚拟化更加简单、提供直观管理工具,Windows Server 2008 还为 IT 专业人员提供了灵活性。Windows Server 2008 为任何组织的服务器和网络基础结构奠定了最好的基础。[编辑本段]【Windows 7】 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 1月9日星期五,微软将面向公众发布Windows 7客户端Beta 1测试版。而此前一天,即1月8日,微软将率先发布Windows 7服务器版本的Beta 1测试版。 Windows 7是微软的下一代操作系统,当前业内普遍认为,微软将在今年圣诞购物旺季前发布Windows 7正式版。 去年12月16日,微软针对部分测试人员发出了Windows 7 Beta 1测试邀请。微软在邀请函中称,面向公众开放下载的Windows7 Beta 1要到2009年初才会发布。 但12月底,版本号为“7000”的Windows 7测试版系统被提前发布到互联网上。有业内人士指出,该版本很可能就是微软将发布的Windows7 Beta 1。 在微软刚刚发布的Windows 7 RC版本中,已经集成DirectX 11和Internet Explorer 8。 DirectX 11作为3D图形接口,不仅支持未来的DX11硬件,还向下兼容当前的DirectX 10和10.1硬件。DirectX 11增加了新的计算shader技术,可以允许GPU从事更多的通用计算工作,而不仅仅是3D运算,这可以鼓励开发人员更好地将GPU作为并行处理器使用。[编辑本段]Windows 8? 据国外媒体报道,日前有消息称Windows 8计划的发布将是2012年下半年。 微软或于2012年发布Windows8操作系统(图片来自互联网) 从一份来自微软意大利分公司的路线图显示,微软计划将于201 2精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 年下半年发布Windows 8操作系统。但在这份外泄的路线图上,在“2012”这一日期前有一个“~”符号,这一符号通常表示尚未确定。 微软Windows部门总裁称表示,为避免出现类似vista发布前多次跳票的情况,此后的Windows发布日期的计划将采取尽量保守的策略。因此,微软内部制定的Windows 8发布计划可能早于路线图中的2012年下半年。[编辑本段]【展望】 概述 Microsoft Windows Server 2008 用于在虚拟化工作负载、支持应用程序和保护网络方面向组织提供最高效的平台。它为开发和可靠地承载 Web 应用程序和服务提供了一个安全、易于管理的平台。从工作组到数据中心,Windows Server 2008 都提供了令人兴奋且很有价值的新功能,对基本操作系统做出了重大改进。 更强的控制能力 使用 Windows Server 2008,IT 专业人员能够更好地控制服务器和网络基础结构,从而可以将精力集中在处理关键业务需求上。增强的脚本编写功能和任务自动化功能(例如,Windows PowerShell)可帮助 IT 专业人员自动执行常见 IT 任务。通过服务器管理器进行的基于角色的安装和管理简化了在企业中管理与保护多个服务器角色的任务。服务器的配置和系统信息是从新的服务器管理器控制台这一集中位置来管理的。IT 人员可以仅安装需要的角色和功能,向导会自动完成许多费时的系统部署任务。增强的系统管理工具(例如,性 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 能和可靠性监视器)提供有关系统的信息,在潜在问题发生之前向 IT 人员发出警告。 增强的保护 Windows Server 2008 提供了一系列新的和改进的安全技术,这些技术增强了对操作系统的保护,为企业的运营和发展奠定了坚实的基础。Windows Server 2008 提供了减小内核攻击面的安全创新(例如 PatchGuard),因而使服务器环境更安全、更稳定。通过保护关键服务器服务使之免受文件系统、注册表或网络中异常活动的影响,Windows 服务强化有助于提高系统的安全性。借助网络访问保护(NAP)、只读域控制器(RODC)、公钥基础结构(PKI)增强功能、Windows 服务强化、新的双向 Windows 防火墙和新一代加密支持,Windows Server 2008 操作系统中的安全性也得到了增强。 更大的灵活性 Windows Server 2008 的设计允许管理员修改其基础结构来适应不断变化的业务需求,同时保持了此操作的灵活性。它允许用户从远程位置(如远程应用程序和终端服务网关)执行程序,这一技术为移动工作人员增强了灵活性。Windows Server 2008 使用 Windows 部署服务(WDS)加速对 IT 系统的部署和维护,使用 Windows Server 虚拟化(WSv)帮助合并服务器。对于需要在分支机构中使用域控制器的组织,Windows Server 2008 提供了一个新配置选项:只读域控制器(RODC),它可以防止在域控制器出现安全问题时暴露用户帐户。 它将取代的是 Windows Server 2003 SP1 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 功能简介 更加简单:Windows 7将会让搜索和使用信息更加简单,包括本地、网络和互联网搜索功能,直观的用户体验将更加高级,还会整合自动化应用程序提交和交叉程序数据透明性.更加安全:Windows 7将包括改进的安全和功能合法性,还会把数据保护和管理扩展到外围设备.Windows 7将改进基于角色的计算方案和用户账户管理,在数据保护和坚固协作的固有冲突之间搭建沟通桥梁,同时也会开启企业级的数据保护和权限许可.更好的连接:Windows 7将进一步增强移动工作能力,无论何时、何地、任何设备都能访问数据和应用程序,开启坚固的特别协作体验,无线连接、管理和安全功能将会扩展.性能和当前功能以及新兴移动硬件将得到优化,多设备同步、管理和数据保护功能将被拓展.最后,Windows 7将带来灵活计算基础设施,包括胖、瘦、网络中心模型.更低的成本:Windows 7将帮助企业优化它们的桌面基础设施,具有无缝操作系统、应用程序和数据移植功能,并简化PC供应和升级,进一步朝完整的应用程序更新和补丁方面努力.Windows 7还将包括改进的硬件和软件虚拟化体验,并将扩展PC自身的Windows帮助和IT专业问题解决方案诊断.其他功能 有部分功能本来是为Vista而设计的,如Windows PowerShell和Windows FS,虽然他们也会是Windows 7的基础部分,但是它他们可能会在完成之后才单独发布。现时Windows PowerShell己单独发放 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 出来。 Windows 7还会有“Sandbox”(沙盒)功能,其功能接近于在开发Longhorn系统时的“Alpha/White Box”,所有非管理代码将会在沙盒系统中运行,这样接入「外界」将被操作系统控制。对底层的访问将被从沙盒内部禁止,同样还有对文件系统、硬件抽象层(HAL)以及完全内存地址的直接访问。所有对外部应用程序、文件和协议的请求都将被操作系统管理,任何恶意行为都将被立刻中止。如果这一方法成功,它预示着极强的安全和保障,如果恶意软件能被有效地锁在一个玻璃盒中的话,那么它事实上不可能对系统造成任何伤害。 比尔·盖茨亦提到了另一个有趣的功能,就是一种通用语言可以解读使用者的指令。这包含了「自动完成全句指示」的功能,在现时主流搜寻引擎中已具备这项功能(例如:微软自家的Live Search, Yahoo及Google),它功能是可以输入错误的语法亦能让电脑正常执行该条指令。 精心收集 精心编辑 精致阅读 如需请下载! windows操作系统序列号大全 PWIN95 S/N: 425-0022172 EWIN95 S/N: 111-1111111 CWIN97 S/N: 26495-OEM-0004782-75026 EWIN97 S/N: 00100-OEM-0123456-00100 PWIN97 S/N: 00100-OEM-0123456-00100 CWIN98 S/N: DC688-DET96-5SCN7-E5RLK-XL413 EWIN98 S/N: K4HVD-Q9TJ9-6CRX9-C9G68-RQ2D3 PWIN98 S/N: VR9TR-74M8W-YPT9C-4VDF4-R7PD8 PWIN98 OEM(第二版)S/N: BBH2G-D2VK9-QD4M9-F63XB-43C33 PWIN98 2A 2222版 S/N: QY7TT-VJ7VG-7QPHY-QXHD3-B838Q MB9HY-M4JGJ-B3RV2-FPH8D-FP8KY WHWGP-XDR8Y-GR9X3-863RP-67J2T Windows98(第三版)th OEM 升级程序密码:1 Windows98(第三版)th OEM 密码:QY7TT-VJ7VG-7QPHY-QXHD3-B838Q WINDOWS ME 简体中文正式零售版 S/N: HJPFQ-KXW9C-D7BRJ-JCGB7-Q2DRJ WINDOWS ME 正式英文零售版 S/N: RBDC9-VTRC8-D7972-J97JY-PRVMG PwindowsXP:简体中文正式零售版 S/N:FCKGW-RHQQ2-YXRKT-8TG6W-2B7Q8 Windows XP 专业版 : CCC64-69Q48-Y3KWW-8V9GV-TVKRM Windows XP 家庭版 : BQJG2-2MJT7-H7F6K-XW98B-4HQRQ Windows 2000 Professional : PQHKR-G4JFW-VTY3P-G4WQ2-88CTW Windows 2000 Server : H6TWQ-TQQM8-HXJYG-D69F7-R84VM Windows 2000 Advanced Server: RBDC9-VTRC8-D7972-J97JY-PRVMG windows NT Server 4.0 sn: 727-1111111 windows NT WorkStation 4.0 sn: 727-1111111 Windows 98 Second Edition sn: QY7TT-VJ7VG-7QPHY-QXHD3-B838Q Windows2003的序列号: JB88F-WT2Q3-DPXTT-Y8GHG-7YYQY windows2003序列号: cky24-q8qrh-x3kmr-c6bcy-t847y win2003有三种版本: win2003 Enterprise Server: QW32K-48T2T-3D2PJ-DXBWY-C6WRJ win2003 Standard Server: M6RJ9-TBJH3-9DDXM-4VX9Q-K8M8M win2003 Web Server: D42X8-7MWXD-M4B76-MKYP7-CW9FD Win2003 enterprise edition english version cPROduct KEY: QW32K3D2PJC6WRJ Microsoft Windows 2000 Professional For USEnglish With SP2 Microsoft Windows 2000 Server For USEnglish With SP2 Microsoft Windows 2000 Advanced Server For USEnglish With SP2 s/n: RBDC9-VTRC8-D7972-J97JY-PRVMG 韩文版 Windows Xp ProFessional 序列号 Sn:FCKGW-RHQQ2-YXRKT-8TG6W-2B7Q8 win2003 Enterprise Server: QW32K-48T2T-3D2PJ-DXBWY-C6WRJ 可以Updata,但不可以激活 JK6JC-P7P7H-4HRFC-3XM7P-G33HM JCGMJ-TC669-KCBG7-HB8X2-FXG7M 企业版: QW32K-48T2T-3D2PJ-DXBWY-C6WRJ 标准版: C4C24-QDY9P-GQJ4F-2DB6G-PFQ9W 企业VLK: JB88F-WT2Q3-DPXTT-Y8GHG-7YYQY 标准VLK: JB88F-WT2Q3-DPXTT-Y8GHG-7YYQY Enterprise Retail: QW32K-48T2T-3D2PJ-DXBWY-C6WRJ Standard Retail..: M6RJ9-TBJH3-9DDXM-4VX9Q-K8M8M All VOL..........: JB88F-WT2Q3-DPXTT-Y8GHG-7YYQY All OEM DELL.....: TPPJH-FG9MV-KQPXW-HVHKJ-6G728 Windows Server 2003 for Small Business Server 的CD-KEY: CD-KEY:BBGC6-TXDG9-J9CDW-JXK3R-GTMMB Windows Server 2003 for Small Business Server 的CD-KEY: CD-KEY:BBGC6-TXDG9-J9CDW-JXK3R-GTMMB 重新整理 PWIN95 S/N: 425-0022172 EWIN95 S/N: 111-1111111 WIN95:00200-0123456-00200CWIN97 S/N: 26495-OEM-0004782-75026 Windows95a:12095-OEM-0004226-12233 Windows95:32397-OEM-0027426-81349 EWIN97 S/N: 00100-OEM-0123456-00100 PWIN97 S/N: 00100-OEM-0123456-00100 CWIN98 S/N: DC688-DET96-5SCN7-E5RLK-XL413 EWIN98 S/N: K4HVD-Q9TJ9-6CRX9-C9G68-RQ2D3 PWIN98 S/N: VR9TR-74M8W-YPT9C-4VDF4-R7PD8 PWIN98 OEM(第二版)S/N: BBH2G-D2VK9-QD4M9-F63XB-43C33 PWIN98 2A 2222版 S/N: QY7TT-VJ7VG-7QPHY-QXHD3-B838Q MB9HY-M4JGJ-B3RV2-FPH8D-FP8KY WHWGP-XDR8Y-GR9X3-863RP-67J2T Windows98(第三版)th OEM 升级程序密码:1 Windows98(第三版)th OEM 密码:QY7TT-VJ7VG-7QPHY-QXHD3-B838Q Windows98:Upgrade98:G2FGT-6HYRW-X2W2C-RT7HW-RF7WX Windows98:HGBRM-RBK3V-M9FXV-YCXDK-V38J4 Windows98 SE:CMGRR-XCBMG-4P8TB-DR9FW-62PFB WINDOWS ME 简体中文正式零售版 S/N: HJPFQ-KXW9C-D7BRJ-JCGB7-Q2DRJ WINDOWS ME 正式英文零售版 S/N: RBDC9-VTRC8-D7972-J97JY-PRVMG PwindowsXP:简体中文正式零售版 S/N:FCKGW-RHQQ2-YXRKT-8TG6W-2B7Q8 Windows XP 专业版 : CCC64-69Q48-Y3KWW-8V9GV-TVKRM Windows XP 家庭版 : BQJG2-2MJT7-H7F6K-XW98B-4HQRQ windows XP sp2 3KHMJ-DW7BX-77XHM-DFCW3-J4GHW Windows XP Professional序列号:BX6HT-MDJKW-H2J4X-BX67W-TVVFG 安装后激活码只需全输“0” 韩文版 Windows Xp ProFessional Sn:FCKGW-RHQQ2-YXRKT-8TG6W-2B7Q8 Windows 2000 Professional : PQHKR-G4JFW-VTY3P-G4WQ2-88CTW TQ4CV-XPJR3-KPG3Q-HGH74-BMYWT Windows 2000 Server : H6TWQ-TQQM8-HXJYG-D69F7-R84VM Windows 2000 Advanced Server: RBDC9-VTRC8-D7972-J97JY-PRVMG windows NT Server 4.0 sn: 727-1111111 windows NT WorkStation 4.0 sn: 727-1111111 Windows 98 Second Edition sn: QY7TT-VJ7VG-7QPHY-QXHD3-B838Q Windows2003:JB88F-WT2Q3-DPXTT-Y8GHG-7YYQY cky24-q8qrh-x3kmr-c6bcy-t847y win2003有三种版本: win2003 Enterprise Server: QW32K-48T2T-3D2PJ-DXBWY-C6WRJ win2003 Standard Server: M6RJ9-TBJH3-9DDXM-4VX9Q-K8M8M win2003 Web Server: D42X8-7MWXD-M4B76-MKYP7-CW9FD Win2003 enterprise edition english version cPROduct KEY: QW32K3D2PJC6WRJ可以Updata,但不可以激活 Office2000 j2mv9-jyyq6-jm44k-qmyth-8rb2w Windows 2003 servr序列号: JK6JC-P7P7H-4HRFC-3XM7P-G33HM JCGMJ-TC669-KCBG7-HB8X2-FXG7M 企业版: QW32K-48T2T-3D2PJ-DXBWY-C6WRJ 标准版: C4C24-QDY9P-GQJ4F-2DB6G-PFQ9W 企业VLK: JB88F-WT2Q3-DPXTT-Y8GHG-7YYQY 标准VLK: JB88F-WT2Q3-DPXTT-Y8GHG-7YYQY Enterprise Retail: QW32K-48T2T-3D2PJ-DXBWY-C6WRJ Standard Retail..: M6RJ9-TBJH3-9DDXM-4VX9Q-K8M8M All VOL..........: JB88F-WT2Q3-DPXTT-Y8GHG-7YYQY All OEM DELL.....: TPPJH-FG9MV-KQPXW-HVHKJ-6G728 Windows Server 2003 for Small Business Server 的CD-KEY: CD-KEY:BBGC6-TXDG9-J9CDW-JXK3R-GTMMB 很多使用 windows 2003 的朋友,若不能够在线更新,可以使用以下的方法: 1。建立一个.reg 文件 2。编辑此文件,内容如下: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion] “ProductId”=“69713-640-9722366-45198” [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersion] “CurrentBuild”=“1.511.1()(Obsolete data-do not use)” “InstallDate”=dword:3f6c976d “ProductName”=“Microsoft Windows Server 2003” “RegDone”=“" ”SoftwareType“=”SYSTEM“ ”CurrentVersion“=”5.2“ ”CurrentBuildNumber“=”3790“ ”BuildLab“=”3790.srv03_rtm.030324-2048“ ”CurrentType“=”Uniprocessor Free“ ”ProductId“=”69713-640-9722366-45198“ ”DigitalProductId“=hex:a4,00,00,00,03,00,00,00,36,39,37,31,33,2d,36,34,30,2d, 39,37,32,32,33,36,36,2d,34,35,31,39,38,00,5a,00,00,00,41,32,32,2d,30,30,30, 30,31,00,00,00,00,00,00,00,00,e5,3f,e9,6a,2c,ed,25,35,12,ec,11,c9,8d,01,00, 00,00,00,00,37,03,6d,3f,44,22,06,00,00,00,00,00,00,00,00,00,00,00,00,00,00, 00,00,00,00,00,00,00,00,00,00,00,31,32,32,32,30,00,00,00,00,00,00,00,dc,0f, 00,00,bf,4a,94,6c,80,00,00,00,15,18,00,00,00,00,00,00,00,00,00,00,00,00,00, 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,34,79,ca,d7 ”LicenseInfo"=hex:71,84,c7,56,a0,d6,10,6e,70,b4,9f,e9,10,1a,1e,7a,01,a4,41,09, 25,20,0e,80,83,80,1f,31,27,86,64,1f,31,dc,22,af,f7,7d,aa,e4,2a,b9,e5,e3,6c, e2,01,69,85,70,91,be,a7,9f,95,e5 3。运行此reg文件,将内容加入注册表内 4。打开Internet,选择Windows Update 5。选你要更新的内容 6。到此已完成所有步骤 操作系统课程设计 注意事项: 0.请每位同学必须按时提交课程设计报告(包括电子版和纸质版),算入期末成绩 1.在三个题目中选择一个 2.如果选择题目 (一)进程调度算法,要求实现其中2个以上(包括2个)进程调度算法 3.如果选择题目 (二)银行家算法,要求能够判断系统的安全状态 4.如果选择题目 (三)页面调度算法,要求实现其中2个以上(包含2个)进程调度算法 5.报告应包含算法分析、实验截图、核心算法源代码,请各位同学认真对待,独立完成 6.提交要求:电子版(包括实验程序)请发至ropeal@163.com,纸质版请班长收齐,由班长统一在课堂上提交(并提交未交人员名单),截止时间第16周周三(2014.1.31)7.格式要求: 7.1 A4纸10页左右 7.2 封面请注明班级、姓名、学号、所选题目 7.3 电子版发送时,请打包成一个文件,将文件名设置为:学号+姓名+题目名称(如20130000张三进程调度算法课程设计),邮件主题同文件名 一、进程调度算法 1.1 实验目的: a、设计进程控制块PCB表结构,模拟实现进程调度算法:FIFO,静态优先级调度,时间片轮转调度,多级反馈队列调度。(实现其中之二)。* b、建立进程就绪队列。对不同算法编制入链子程序。c、编写一进程调度程序模拟程序。模拟程序只对PCB进行相应的调度模拟操作,不需要实际程序。* 由用户输入进程名和进程长度,然后按照短进程优先的进程处理顺序给出进程的排序。 1.2 实验原理 调度算法是指:根据系统的资源分配策略所规定的资源分配算法。1.2.1 先来先服务和短作业(进程)优先调度算法 1.先来先服务调度算法。先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。FCFS算法比较有利于长作业(进程),而不利于短作业(进程)。由此可知,本算法适合于CPU繁忙型作业,而不利于I/O繁忙型的作业(进程)。 2.短作业(进程)优先调度算法。短作业(进程)优先调度算法(SJ/PF)是指对短作业或短进程优先调度的算法,该算法既可用于作业调度,也可用于进程调度。但其对长作业不利;不能保证紧迫性作业(进程)被及时处理;作业的长短只是被估算出来的。1.2.2 高优先权优先调度算法 1.优先权调度算法的类型。为了照顾紧迫性作业,使之进入系统后便获得优先处理,引入了最高优先权优先(FPF)调度算法。此算法常被用在批处理系统中,作为作业调度算法,也作为多种操作系统中的进程调度,还可以用于实时系统中。当其用于作业调度,将后备队列中若干个优先权最高的作业装入内存。当其用于进程调度时,把处理机分配给就绪队列中优先权最高的进程,此时,又可以进一步把该算法分成以下两种: 1)非抢占式优先权算法 2)抢占式优先权调度算法(高性能计算机操作系统) 2.优先权类型。对于最高优先权优先调度算法,其核心在于:它是使用静态优先权还是动态优先权,以及如何确定进程的优先权。3.高响应比优先调度算法 为了弥补短作业优先算法的不足,我们引入动态优先权,使作业的优先等级随着等待时间的增加而以速率a提高。该优先权变化规律可描述为:优先权=(等待时间+要求服务时间)/要求服务时间;即 =(响应时间)/要求服务时间 1.2.3 基于时间片的轮转调度算法 1.时间片轮转法。时间片轮转法一般用于进程调度,每次调度,把CPU分配队首进程,并令其执行一个时间片。当执行的时间片用完时,由一个记时器发出一个时钟中断请求,该进程被停止,并被送往就绪队列末尾;依次循环。2.多级反馈队列调度算法 多级反馈队列调度算法多级反馈队列调度算法,不必事先知道各种进程所需要执行的时间,它是目前被公认的一种较好的进程调度算法。其实施过程如下: 1)设置多个就绪队列,并为各个队列赋予不同的优先级。在优先权越高的队列中,为每个进程所规定的执行时间片就越小。 2)当一个新进程进入内存后,首先放入第一队列的末尾,按FCFS原则排队等候调度。如果他能在一个时间片中完成,便可撤离;如果未完成,就转入第二队列的末尾,在同样等待调度„„ 如此下去,当一个长作业(进程)从第一队列依次将到第n队列(最后队列)后,便按第n队列时间片轮转运行。3)仅当第一队列空闲时,调度程序才调度第二队列中的进程运行;仅当第1到第(i-1)队列空时,才会调度第i队列中的进程运行,并执行相应的时间片轮转。4)如果处理机正在处理第i队列中某进程,又有新进程进入优先权较高的队列,则此新队列抢占正在运行的处理机,并把正在运行的进程放在第i队列的队尾。 1.3 实验要求 a、使用模块化设计思想来设计; b、给出算法的流程图或伪码说明。c、学生可按照自身条件,随意选择采用的算法,(例如:采用冒泡法编写程序,实现短进程优先调度的算法) d、进程调度程序模拟程序只对PCB进行相应的调度模拟操作,不需要实际程序。 1.4 算法简析 a、每个进程可有三个状态,并假设初始状态为就绪状态。b、为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的优先数或轮转时间数以及进程需运行的时间片数的初始值均由用户给定。c、在优先数算法中,优先数可以先取值为(50-该进程所需时间),进程每执行一次,优先数减3,CPU时间片数(CPUtime)加1,* 进程还需要的时间片数(needtime)减1。在时间片轮转算法中,采用固定时间片 (即:每执行一次进程,该进程的执行时间片数为已执行了2个单位),这时,CPU时间片(CPUtime)数加2,* 进程还需要的时间片数(needtime)减2,并排列到就绪队列的尾上。 d、对于遇到优先数一致的情况,采用FIFO策略解决。 二、银行家算法 2.1 概述 2.1.1 设计目的1、了解多道程序系统中,多个进程并发执行的资源分配。 2、掌握死锁的产生的原因、产生死锁的必要条件和处理死锁的基本方法。 3、掌握预防死锁的方法,系统安全状态的基本概念。 4、掌握银行家算法,了解资源在进程并发执行中的资源分配策略。 5、理解死锁避免在当前计算机系统不常使用的原因 2.2 关于死锁 2.2.1 死锁概念: 在多道程序系统中,虽可借助于多个进程的并发执行,来改善系统的资源利用率,提高系统的吞吐量,但可能发生一种危险━━死锁。所谓死锁(Deadlock),是指多个进程在运行中因争夺资源而造成的一种僵局(Deadly_Embrace),当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁,这一组进程就称为死锁进程。 2.2.2 关于死锁的一些结论: 参与死锁的进程最少是两个(两个以上进程才会出现死锁) 参与死锁的进程至少有两个已经占有资源 参与死锁的所有进程都在等待资源 参与死锁的进程是当前系统中所有进程的子集 注:如果死锁发生,会浪费大量系统资源,甚至导致系统崩溃。 2.2.3 资源分类: 永久性资源: 可以被多个进程多次使用(可再用资源),分为:可抢占资源与不可抢占资源 临时性资源:只可使用一次的资源;如信号量,中断信号,同步信号等(可消耗性资源) “申请--分配--使用--释放”模式 2.2.4 产生死锁的四个必要条件: 1、互斥使用(资源独占) 一个资源每次只能给一个进程使用 2、不可强占(不可剥夺) 资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放 3、请求和保持(部分分配,占有申请) 一个进程在申请新的资源的同时保持对原有资源的占有(只有这样才是动态申请,动态分配) 4、循环等待 存在一个进程等待队列 {P1 , P2 , „ , Pn},其中P1等待P2占有的资源,P2等待P3占有的资源,„,Pn等待P1占有的资源,形成一个进程等待环路 2.2.5 死锁的解决方案 1 产生死锁的例子 申请不同类型资源产生死锁 P1: „ 申请打印机 申请扫描仪 使用 释放打印机 释放扫描仪 „ P2: „ 申请扫描仪 申请打印机 使用 释放打印机 释放扫描仪 „ 申请同类资源产生死锁(如内存) 设有资源R,R有m个分配单位,由n个进程P1,P2,„,Pn(n > m)共享。假设每个进程对R的申请和释放符合下列原则: * 一次只能申请一个单位 * 满足总申请后才能使用 * 使用完后一次性释放 m=2,n=3 资源分配不当导致死锁产生 2死锁预防: 定义:在系统设计时确定资源分配算法,保证不发生死锁。具体的做法是破坏产生死锁的四个必要条件之一 ①破坏“不可剥夺”条件 在允许进程动态申请资源前提下规定,一个进程在申请新的资源不能立即得到满足而变为等待状态之前,必须释放已占有的全部资源,若需要再重新申请 ②破坏“请求和保持”条件 要求每个进程在运行前必须一次性申请它所要求的所有资源,且仅当该进程所要资源均可满足时才给予一次性分配 ③破坏“循环等待”条件 采用资源有序分配法: 把系统中所有资源编号,进程在申请资源时必须严格按资源编号的递增次序进行,否则操作系统不予分配。 2.2.6 安全状态与不安全状态 安全状态: 如果存在一个由系统中所有进程构成的安全序列P1,„Pn,则系统处于安全状态。一个进程序列{P1,„,Pn}是安全的,如果对于每一个进程Pi(1≤i≤n),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj(j < i)当前占有资源量之和,系统处于安全状态(安全状态一定是没有死锁发生的)。 不安全状态:不存在一个安全序列,不安全状态一定导致死锁。 2.3 数据结构设计 1.可利用资源向量矩阵AVAILABLE。这是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态地改变。如果AVAILABLE [j]= K,则表示系统中现有R类资源K个 2.最大需求矩阵MAX。这是一个n*m的矩阵,用以表示每一个进程对m类资源的最大需求。如果MAX [i,j]=K,则表示进程i需要R类资源的数目为K。 3.分配矩阵ALLOCATION。这也是一个n*m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果ALLOCATION [i,j]=K,则表示进程i当前已分得R类资源的数目为K。 4.需求矩阵NEED。这也是一个n*m的矩阵,用以表示每一个进程尚需的各类资源数。如果NEED [i,j]=K,则表示进程i还需要R类资源K个,才能完成其任务。上述矩阵存在下述关系: NEED [i,j]= MAX[i,j]﹣ ALLOCATION[i,j] 2.4 算法的实现 2.4.1 初始化 由用户输入数据,分别对可利用资源向量矩阵AVAILABLE、最大需求矩阵MAX、分配矩阵ALLOCATION、需求矩阵NEED赋值。2.4.2 银行家算法 在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。在该方法中把系统的状态分为安全状态和不安全状态,只要能使系统始终都处于安全状态,便可以避免发生死锁。 银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分配。它是最具有代表性的避免死锁的算法。 设进程cusneed提出请求REQUEST [i],则银行家算法按如下规则进行判断。(1)如果REQUEST [cusneed] [i]<= NEED[cusneed][i],则转(2);否则,出错。 (2)如果REQUEST [cusneed] [i]<= AVAILABLE[cusneed][i],则转(3);否则,出错。(3)系统试探分配资源,修改相关数据: AVAILABLE[i]-=REQUEST[cusneed][i];ALLOCATION[cusneed][i]+=REQUEST[cusneed][i];NEED[cusneed][i]-=REQUEST[cusneed][i];(4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。 2.4.3 安全性检查算法 (1)设置两个工作向量Work=AVAILABLE;FINISH(2)从进程集合中找到一个满足下述条件的进程,FINISH==false;NEED<=Work;如找到,执行(3);否则,执行(4)(3)设进程获得资源,可顺利执行,直至完成,从而释放资源。 Work+=ALLOCATION;Finish=true;GOTO 2(4)如所有的进程Finish= true,则表示安全;否则系统不安全。 三、页面调度算法 3.1 实验名称 页式虚拟存储管理:页面调度算法 3.2 实验目的 页式虚拟存储器实现的一个难点是设计页面调度(置换)算法,即将新页面调入内存时,如果内存中所有的物理页都已经分配出去,就要按某种策略来废弃某个页面,将其所占据的物理页释放出来,供新页面使用。本实验的目的是通过编程实现几种常见的页面调度(置换)算法,加深读者对页面思想的理解。3.3 实验原理 页面调度算法 目前有许多页面调度算法,本实验主要涉及先进先出调度算法、最近最少调度算法、最近最不常用调度算法。本实验使用页面调度算法时作如下假设,进程在创建时由操作系统为之分配一个固定数目物理页,执行过程中物理页的数目和位置不会改变。也即进程进行页面调度时只能在分到的几个物理页中进行。 下面对各调度算法的思想作一介绍。 <1> 先进先出调度算法 先进先出调度算法根据页面进入内存的时间先后选择淘汰页面,先进入内存的页面先淘汰,后进入内存的后淘汰。本算法实现时需要将页面按进入内存的时间先后组成一个队列,每次调度队首页面予以淘汰。 <2>最近最少调度算法 先进先出调度算法没有考虑页面的使用情况,大多数情况下性能不佳。根据程序执行的局部性特点,程序一旦访问了某些代码和数据,则在一段时间内会经常访问他们,因此最近最少用调度在选择淘汰页面时会考虑页面最近的使用,总是选择在最近一段时间以来最少使用的页面予以淘汰。算法实现时需要为每个页面设置数据结构记录页面自上次访问以来所经历的时间。 <3>最近最不常用调度算法 由于程序设计中经常使用循环结构,根据程序执行的局部性特点,可以设想在一段时间内经常被访问的代码和数据在将来也会经常被访问,显然这样的页面不应该被淘汰。最近最不常用调度算法总是根据一段时间内页面的访问次数来选择淘汰页面,每次淘汰访问次数最少的页面。算法实现时需要为每个页面设置计数器,记录访问次数。计数器由硬件或操作系统自动定时清零。 缺页调度次数和缺页中断率、缺页置换率计算 缺页中断次数是缺页时发出缺页中断的次数。 缺页中断率=缺页中断次数/总的页面引用次数*100% 缺页调度次数是调入新页时需要进行页面调度的次数 缺页置换率=缺页调度次数/总的页面引用次数*100% 3.4 实验内容 (1)设计程序实现以上三种页面调度算法,要求: ①.可以选择页面调度算法类型; ②.可以为进程设置分到物理页的数目,设置进程的页面引用情况,可以从键盘输入页面序列,也可从文件中读取; ③.随时计算当前的页面调度次数的缺页中断率; ④.使用敲键盘或响应WM-TIMER的形式模仿时间的流逝; ⑤.以直观的的形式将程序的执行情况显示在计算机屏幕上; ⑥.存盘及读盘功能,可以随时将数据存入磁盘文件,供以后重复实验时使用。 (2)假定进程分配到3个物理块,对于下面的页面引用序列:(test.txt) 7-0-1-2-0-3-0-4-2-3-0-3-2-1-2-0-1-7-0-1 请分别用先进和先出调度算法,最近最少用调度算法,最近最不常用调度算法计算缺页中断次数,缺页中断率和缺页调度次数、缺页置换率。 再假定进程分配到4、5个物理块,重复本实验。 (3)假定进程分配到3个物理块,对于下面的页面引用序列:(test2.txt) 4-3-2-1-4-3-5-4-3-2-1-5-0-7-3-8-9-0-2-1-4-7-3-9 请分别用先进先出调度算法、最近最少用调度算法,最近最不常用调度算法计算缺页中断次数,缺页中断率和缺页调度次数、缺页置换率。 再假定进程分配到4、5个物理块,重复本实验。 (4)假定进程分配到3个物理块,使用程序的动态页面序列生成算法,生成一个页面序列,将此序列存入磁盘文件。再从磁盘文件读入该序列,用程序分别计算三种算法下的缺页中断次数、缺页中断率和缺页调度次数、缺页置换率。 湖北民族学院信息工程学院11级计算机专业操作系统课程设计 (操作系统课程设计) 连续动态分区内存 管理模拟实现 学生姓名: 韩 慧 学生学号: 031140312 班 级: 031140--3 0311401、02、03、04班制 二〇一三年十二月 湖北民族学院信息工程学院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 湖北民族学院信息工程学院11级计算机专业操作系统课程设计 参考文献.........................................................................28 引言 操作系统是最重要的系统软件,同时也是最活跃的学科之一。我们通过操作系统可以理解计算机系统的资源如何组织,操作系统如何有效地管理这些系统资源,用户如何通过操作系统与计算机系统打交道。 存储器是计算机系统的重要组成部分,近年来,存储器容量虽然一直在不断扩大,但仍不能满足现代软件发展的需要,因此,存储器仍然是一种宝贵而又紧俏的资源。如何对它加以有效的管理,不仅直接影响到存储器的利用率,而且还对系统性能有重大影响。而动态分区分配属于连续分配的一种方式,它至今仍在内存分配方式中占有一席之地。 课程设计目的和内容: 理解内存管理的相关理论,掌握连续动态分区内存管理的理论;通过对实际问题的编程实现,获得实际应用和编程能力。 编写程序实现连续动态分区内存管理方式,该程序管理一块虚拟内存,实现内存分配和回收功能。分析并实现四种内存分配算法,即最先适应算法,下次最先适应算法,最优适应算法,最坏适应算法。内存分配算法和回收算法的实现。 需求分析 动态分区分配是根据进程的实际需要,动态地为之分配内存空间。在实现动态分区分配时,将涉及到分区分配中所用的数据结构、分区分配算法和分区的分配和回收操作这样三个问题。常用的数据结构有动态分区表和动态分区链。在对数据结构有一定掌握程度的情况下设计合理的数据结构来描述存储空间,实现分区存储管理的内存分配功能,应该选择最合适的适应算法(首次适应算法,最佳适应算法,最后适应算法,最坏适应算法),在动态分区存储管理方式中主要实现内存分配和内存回收算法,在这些存储管理中间必然会有碎片的产生,当碎片产生时,进行碎片的拼接等相关的内容 概要设计 本程序采用机构化模块化的设计方法,共分为四大模块。⑴最先适应算法实现 从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法目的在于减少查找时间。为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到高进行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高地址空间保留大的空闲区。⑵下次适应分配算法实现 湖北民族学院信息工程学院11级计算机专业操作系统课程设计 该算法是最先适应算法的变种。在分配内存空间时,不再每次从表头(链首)开始查找,而是从上次找到空闲区的下一个空闲开始查找,直到找到第一个能满足要求的的空闲区为止,并从中划出一块与请求大小相等的内存空间分配给作业。该算法能使内存中的空闲区分布得较均匀。⑶最优适应算法实现 它从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表(空闲区链)中的空闲分区要按从小到大进行排序,自表头开始查找到第一个满足要求的自由分区分配。⑷最坏算法实现 最坏适应分配算法要扫描整个空闲分区或链表,总是挑选一个最大的空闲分区分割给作业使用。该算法要求将所有的空闲分区按其容量从大到小的顺序形成一空闲分区链,查找时只要看第一个分区能否满足作业要求。 开发环境: win7 下 VC++6.0 系统分析设计: 相关算法原理,算法流程图,涉及的数据结构内容都相应包含在各章节中 有关了解内存管理的相关理论 内存管理概念: 内存管理,是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。内存不是预先划分好的,而是在系统运行的过程中建立分区.当作业装入主存时,根据作业所需要的主存容量查看是否有足够的主存空间,若有则按需要分割一个分区给该作业;否则令该作业等待.分区长度不固定分区个数不固定。这种存储管理的方法克服了固定分区严重浪费主存的问题,提高了主存资源的利用率。 内存管理的必要性: 内存管理对于编写出高效率的 Windows 程序是非常重要的,这是因为Windows 是多任务系统,它的内存管理和单任务的 DOS 相比有很大的差异。DOS是单任务操作系统,应用程序分配到内存后,如果它不主动释放,系统是不会对它作任何改变的;但 Windows 却不然,它在同一时刻可能有多个应用程序共享内存,有时为了使某个任务更好地执行,Windows 系统可能会对其它任务分配的内存进行移动,甚至删除。因此,我们在 Windows 应用程序中使用内存时,要遵循Windows 内存管理的一些约定,以尽量提高 Windows 内存的利用率。湖北民族学院信息工程学院11级计算机专业操作系统课程设计 1.3 内存的物理组织: 物理地址: 把内存分成若干个大小相等的存储单元,每个存储单元占 8 位,称作字节(byte)。每个单元给一个编号,这个编号称为物理地址(内存地址、绝对地址、实地址)。 二、物理地址空间: 物理地址的集合称为物理地址空间(主存地址空间),它是一个一维空间。 什么是虚拟内存: 虚拟内存是内存管理技术的一个极其实用的创新。它是一段程序(由操作系统调度),持续监控着所有物理内存中的代码段、数据段,并保证他们在运行中的效率以及可靠性,对于每个用户层(user-level)的进程分配一段虚拟内存空间。当进程建立时,不需要在物理内存件之间搬移数据,数据储存于磁盘内的虚拟内存空间,也不需要为该进程去配置主内存空间,只有当该进程被被调用的时候才会被加载到主内存。 连续动态分区内存管理方式的实现 在早期的操作系统中,主存分配广泛采用连续分配方式。连续分配方式,是指为一个用户程序分配一个连续的内存空间,该连续内存空间指的的是物理内存。下面介绍连续分配的四种方式。 单一连续分配(单个分区) 最简单的存储管理方式,用于多道程序设计技术之前。内存分为系统区和用户区,系统区由操作系统使用。用户区作为一个连续的分区分配给一个作业。分区存储管理是满足多道程序设计的最简单的一种存储管理方法,它允许多 4个用户程序同时存在系统内存中,即共享内存空间。按分区划分方式可分为固定分区和可变分区。 固定分区存储管理 把内存的用户区预先划分成多个分区,每个分区大小可以相同,也可以不同。(分区的划分由计算机的操作员或者由操作系统给出,并给出主存分配表)分区个数固定,分区的大小固定。一个分区中可装入一个作业,作业执行过程中不会改变存放区域。早期的 IBM 的 OS/MFT(具有固定任务数的多道程序系统)采用了这种固定分区的方法。 可变分区存储管理(动态分区) 内存不是预先划分好的,而是在系统运行的过程中建立分区.当作业装入主存时,根据作业所需要的主存容量查看是否有足够的主存空间,若有则按需要分割一个分区给该作业;否则令该作业等待。分区长度不固定分区个数不固定。这种存储管理的方法克服了固定分区严重浪费主存的问题,提高了主存资源的利用率。IBM操作系统OS/MVT采用可变分区存储管理。湖北民族学院信息工程学院11级计算机专业操作系统课程设计 可重定位分区存储管理 解决碎片问题的一种简单方法是采用可重定位分区分配.。其中心思想是,把不同程序,且在内存中地址不连续的想法让他们连续。 例:内存中现有 3 个空闲区,现有一作业到达,要求获得 30k 内存空间,没有分区满足容量要求,若想把作业装入,可将内存中所有作业进行移动,这样把原来分散的空闲区汇集成一个大的空闲区。将内存中的作业进行移动使它们连接在一起把原来分散的多个小分区拼接成一个大的空闲区.这个过程称为”紧凑”或”移动”。需解决的问题:每次”紧凑”后程序或数据装入的物理地址变化采用动态重定位。 问题描述和分析 系统应利用某种分配算法,从空闲分区链表中找到所需大小的分区,如果空闲分区大小大于请求分区大小,则从该分区中按改请求的大小划分出一块内存空间大小划分出一块内存空间分配出去,余下的部分仍留在空闲链表中。然后,将分配区的首址返回给调用者。 当进程运行完毕师范内存时,系统根据回收区的首址,从空闲区中找到相应的插入点,此时可能出现以下四种情况之一: ⑴该空闲区的上下两相邻分区都是空闲区:将三个空闲区合并为一个空闲区。新空闲区的起始地址为上空闲区的起始地址,大小为三个空闲区之和。空闲区合并后,取消可用表或自由链中下空闲区的表目项或链指针,修改上空闲区的对应项。 ⑵该空闲区的上相邻区是空闲区:将释放区与上空闲区合并为一个空闲区,其起始地址为上空闲区的起始地址,大小为上空闲区与释放区之和。合并后,修改上空闲区对应的可用表的表目项或自由链指针。 ⑶该空闲区的下相邻区是空闲区:将释放区与下空闲区合并,并将释放区的起始地址作为合并区的起始地址。合并区的长度为释放区与下空闲区之和。同理,合并后修改可用表或自由链中相应的表目项或链指针。 ⑷两相邻区都不是空闲区:释放区作为一个新空闲可用区插入可用表或自由链。 程序流程图 内存分配流程图,如图 湖北民族学院信息工程学院11级计算机专业操作系统课程设计 从头开始查表检索完否?NY返回分区大小>所需大小N继续检索下一个表项Y分区大小-所需大小<=不可再分割大小N从该分区中划出所需大小的新分区Y将该分区从链中移出将该分区分配给请求者修改有关数据结构返回 内存回收流程图,如图 湖北民族学院信息工程学院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;湖北民族学院信息工程学院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(“n.......................欢迎来到动态分区存储管理系统..................nn”);printf(“...........................请选择要执行的算法:...........................n”);printf(“.........................1.最先适应算法 ...............................n”);printf(“.........................2.下次适应算法............................n”);printf(“..........................3.最优适应算法 ...............................n”);printf(“.........................4.最坏适应算法................................n”);printf(“........................................................................n”);printf(“请输入您的选择:”);scanf(“%d”,&t);int i;while(i!=5){ printf(“........................................................................n”); printf(“.........................操作菜单如下:(请选择).......................n”); printf(“..........................1.输入进程分配空间...........................n”); printf(“.........................2.进程撤销回收空间...........................n”); printf(“.........................3.输出所有空闲分区 ..........................n”); printf(“..........................4.输出所有已分配分区..........................n”); printf(“..........................5.退 出..........................n”); printf(“........................................................................n”); scanf(“%d”,&i); switch(i) { case 1: switch(t) { case 1: t1=FF();湖北民族学院信息工程学院11级计算机专业操作系统课程设计 break; case 2: t1=NF(); break; case 3: t1=BF(); break; case 4: t1=WF(); break; default: printf(“选择算法错误n”); return 1; } if(t1) printf(“分配空间成功n”); else printf(“分配空间失败n”); break; case 2: t1=recover(); if(t1) printf(“回收成功n”); else printf(“回收失败n”); break; case 3: Isprint(); break; case 4: Bsprint(); break; } } return 0;} 第三章 :分析并实现四种内存分配算法 最先适应算法 空闲区按地址从小到大的次序排列。 分配:当进程申请大小为 SIZE 的内存时,系统顺序查找空闲区表(链),直到找到容量满足要求(≥SIZE)的空闲区为止。从该空闲区中划出大小为 SIZE的分区分配给进程,余下的部分仍作为一个空闲区,但要修改其首址和大小。湖北民族学院信息工程学院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级计算机专业操作系统课程设计 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->from 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); 湖北民族学院信息工程学院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->from b=b->next;else break; //如果找到则为进程分配空间 湖北民族学院信息工程学院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指向修改结点的下一个 //循环查找 湖北民族学院信息工程学院11级计算机专业操作系统课程设计 j->r.name[i]=D.name[i]; } j->r.size=D.size; while(b->next) { if(b->next->from 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;湖北民族学院信息工程学院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->from 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指向空闲链表下一个结点 湖北民族学院信息工程学院11级计算机专业操作系统课程设计 while(b->next)置 //寻找插入到已分配链表中的位 { if(b->next->from 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)释放区不与任何空闲区相邻:将释放区作为一个空闲区,将其大小和首址插入到空闲区表的适当位置。 湖北民族学院信息工程学院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(“没找到这”进程n”);return 0;} //所回收进程与空闲结点上下都邻调试与操作说明 初始界面 程序初始界面,有四个块选择,选择要执行的算法,调试以最坏算法为例,如图 湖北民族学院信息工程学院11级计算机专业操作系统课程设计 选择最坏适应算法,如图 模拟内存分配 给进程a分配内存20,如图 湖北民族学院信息工程学院11级计算机专业操作系统课程设计 已分配分区说明表界面 同理,给进程b分配内存30,给进程c分配内存40,给进程d分配50,给进程e分配60,如图 空闲分区说明表界面 湖北民族学院信息工程学院11级计算机专业操作系统课程设计 查看空闲分区,如图 回收内存界面 回收进程b和d所占内存,如图 已分配分区说明表和空闲分区说明表 如图 湖北民族学院信息工程学院11级计算机专业操作系统课程设计 重新申请内存界面 再为新进程i分配内存30,如图 湖北民族学院信息工程学院11级计算机专业操作系统课程设计 根据最坏适应算法结合图所示可知,该算法将会从空闲分区表中选择一块最大的内存空间分配给进程i,从图也可看出该模拟算法实现了最坏适应算法 湖北民族学院信息工程学院11级计算机专业操作系统课程设计 总结与体会 本次做的课题是动态分区分配算法实现,此次课程设计成功实现了内存分配和内存回收,内存分配中包含了四种算法,分别是首次适应算法,循环首次适应算法,最佳适应算法和最坏适应算法。经编码调试,表明该程序模块是有效可行的。 通过这门课程的学习让我充分了解了内存管理的机制实现,从而更深一步的的对计算机 有了很多了解,这对于以后我们的研究和学习计算机系统起到了很重要的作用。 对于本次论文制作,自己的编程能力有所提高,对操作系统内存分配,存储空间的回收都有全新的认识。 在这次操作系统课程设计中,我使用了c++编写系统软件,对os中可变分区存储管理有了深刻的理解,但是过程中遇到了很多困难,一边做一边学,对c++有了比较多的理解。 实验中遇到很多问题,浪费了很多时间,总而言之是自己学习还不够好,不扎实,希望在以后学习中加以改善,学到更多知识。 参考文献 【1】 汤子瀛,哲凤屏,汤小丹.计算机操作系统.西安:西安电子科技大学出版社,2001.。湖北民族学院信息工程学院11级计算机专业操作系统课程设计 【2】 任爱华.操作系统实用教程.北京:清华大学出版社,2001。第二篇:WINDOWS操作系统
第三篇:windows操作系统序列号
第四篇:操作系统课程设计
第五篇:操作系统课程设计