操作系统课设报告.doc

上传人:星星 文档编号:999466 上传时间:2024-03-20 格式:DOC 页数:33 大小:321.50KB
下载 相关 举报
操作系统课设报告.doc_第1页
第1页 / 共33页
操作系统课设报告.doc_第2页
第2页 / 共33页
操作系统课设报告.doc_第3页
第3页 / 共33页
操作系统课设报告.doc_第4页
第4页 / 共33页
操作系统课设报告.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、沈阳工程学院课程设计报告 摘要摘 要在现代计算机系统中,如果不安装操作系统,很难想象还会有谁使用计算机。操作系统是计算机系统中重要的系统软件,是整个计算机系统的控制中心。操作系统不仅将裸机改造成为功能强、服务质量高、使用方便灵活、运行安全可靠的虚拟机来为用户提供使用计算机系统的良好环境,而且采用合理有效的方法组织多个用户共享计算机系统中的各种资源,最大限度地提高系统资源的利用率。操作系统是配置在计算机上的第一层软件,是对硬件系统的第一次扩充。它在计算机系统中占据了特殊重要的地位,其他所有的软件如汇编程序、编译程序、数据库管理系统等系统软件以及大量的应用软件,都依赖于操作系统的支持,取得它的服务

2、。操作系统的主要功能有处理机管理,存储器管理,设备管理,文件管理及用户界面。我们设计的题目是动态分区管理,它属于计算机的存储器管理功能之一。存储器管理的主要任务,是为多道程序的运行提供良好的运行环境,方便用户使用存储器,提高存储器的利用率,以及能从逻辑上来扩充内存。此外,存储器管理还具有内存分配、内存保护、地址映射和内存扩充等。连续分配可分为单一连续分配方式和分区式分配方式。而分区式分配方式又可分为固定分区和动态分区两种。单一分区和固定分区由于功能简单、浪费内存、和自身的不完善性我们很少应用,我们主要来介绍动态分区,动态分区又称可变分区,根据用户程序的大小,动态地对内存进行划分,因此,各分区的

3、大小是不定的,内存被划分成多少个分区,其数目也是可变的。动态分区方式较之固定分区方式显著地提高了存储器的利用率。根据课设要求,我们初步画出了程序的功能结构图和主要算法流程图,但在代码实现过程中,遇到了许多问题,造成程序无法运行,在姜老师的帮助下将问题一一解决,成功的利用首次适应法、最佳适应法和最坏适应法实现对内存的动态分区,并显示分区后空闲区的组织形式;利用回收函数实现对作业的回收,回收后再次显示空闲区的组织形式。经过对程序的完善,能够实现作业的多次分配和回收,并且分配和回收的方式可以自由选择,使程序更具灵活性,方便用户。关键词:动态分区,首次适应法,最佳适应法,最坏适应法I沈阳工程学院课程设

4、计报告 目录目 录摘 要I第1章 系统概述11.1操作系统概述11.1.1发展历史21.1.2分类31.2 设计语言41.2.1 C语言的定义41.2.2 C语言特点61.2.3 C语言的优点及其缺点71.2.4 C语言结构特点81.3设计思想81.4运行环境91.4.1 Visual C+ 简介91.4.2 Visual C+ 的特点9第2章 系统分析112.1系统功能简介112.2空闲分区链122.1.1空闲分区链的结构122.1.2内存的分配122.1.3内存的回收142.3首次适应算法152.4最坏适应算法162.5最佳适应算法17第3章 系统实现183.1主函数183.2首次适应算法

5、的实现213.3最佳适应算法的实现223.4最坏适应算法的实现243.6回收函数26第4章 遇到的问题及解决的方法294.1遇见问题294.2解决方法29总 结30致 谢31参考文献32沈阳工程学院课程设计报告 第1章 系统概述第1章 系统概述1.1操作系统概述所谓操作系统就是能有效地管理计算机系统中的各种硬件,软件资源、合理的组织计算机的工作流程, 从而为程序员,操作员和各类用户创造良好的工作环境的系统软件.。操作系统是管理电脑硬件和软件资源的,是计算机的内核和基石,作为配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。它在计算机系统中占据了特别重要地位;而其它的系统软件,以及大量的应

6、用软件,都将依赖于操作系统的支持,取得它的服务。操作系统已成为现代计算机系统中必须配置的、最重要的系统软件。它是计算机系统中各种资源的管理者和各种活动的组织者、指挥者。从不同角度去观察操作系统,就会对其功能产生各种不同的认识.通常,从资源管理的角度看角度看,可以把操作系统的功能划分为处理机管理、存储管理、文件管理、设备管理、作业管理等几大部分。操作系统是用户与计算机硬件之间的接口,用户只有理解了操作系统,才能更方便、更灵活地使用计算机,掌握了操作系统提供给用户的各种系统服务(如命令操作、系统调用、视窗环境等),才能更好地利用系统资源,更好地在操作系统的基础上建立用户自己的应用系统、开发自己的应

7、用软件,而windows,linux和unix系统是最为常用的三种操作系统,了解并掌握一定概念与技术必不可少。掌握操作系统的基本概念、设计原理及实施技术,才可以具有分析操作系统和设计、实现、开发实际操作系统的能力。操作系统中所谓的存储管理,主要是指对内存储器的管理。随着现代技术的发展,内存容量越来越大,但它仍然是一个关键性的、紧缺的资源,尤其是在多道程序环境之中,多个作业需共享内存资源,内存紧张的问题依然突出。研究存储管理有两个目的:一是提高资源的利用率,尽量满足多个用户对内存的要求;二是能方便用户使用内存,使用户不必考虑作业具体放在内存哪块区域,是如何实现正确运行等复杂问题。所以,存储管理是

8、操作系统的重要组成部分,能否合理有效地利用内存在很大程度上影响着整个计算机的性 操作系统是一个庞大的管理控制程序,大致包括5个方面的管理功能:进程与处理机管理、作业管理、存储管理、设备管理、文件管理。目前微机上常见的操作系统有DOS、OS/2、UNIX、XENIX、LINUX、Windows、Netware等。 操作系统是控制其他程序运行,管理系统资源并为用户提供操作界面的系统软件的集合。操作系统身负诸如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统是管理计算机系统的全部硬件资源包括软件资源及数据资源;控制程序运行;改善人机界面;为其

9、它应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,为用户提供方便的、有效的、友善的服务界面。所有的操作系统具有并发性、共享性、虚拟性和不确定性四个基本特征。操作系统的型态非常多样,不同机器安装的OS可从简单到复杂,可从手机的嵌入式系统到超级电脑的大型操作系统。许多操作系统制造者对OS的定义也不大一致,例如有些OS集成了图形用户界面,而有些OS仅使用文本接口,而将图形界面视为一种非必要的应用程序。操作系统理论在计算机科学中为历史悠久而又活跃的分支,而操作系统的设计与实现则是软件工业的基础与内核。1.1.1发展历史操作系统经历了手工阶段,单道批处理阶段,多道批处理阶段,分时阶段,实时阶

10、段。操作系统之本意原为提供简单的工作排序能力,后为辅助更新更复杂的硬件设施而渐渐演化。操作系统之本意原为提供简单的工作排序能力,后为辅助更新更复杂的硬件设施而渐渐演化。 从最早的批次模式开始,分时机制也随之出现,在多处理器时代来临时,操作系统也随之添加多处理器协调功能,甚至是分布式系统的协调功能。其他方面的演变也类似于此。另一方面,在个人电脑上,个人电脑之操作系统因袭大型电脑的成长之路,在硬件越来越复杂、强大时,也逐步实践以往只有大型电脑才有的功能。总而言之,操作系统的历史就是一部解决电脑系统需求与问题的历史。第一代微型计算机并不像大型电脑或小型电脑,没有装设操作系统的需求或能力;它们只需要最

11、基本的操作系统,通常这种操作系统都是从ROM读取的,此种程序被称为监视程序(Monitor)。1980年代,家用电脑开始普及。通常此时的电脑拥有8-bit处理器加上64KB内存、屏幕、键盘以及低音质喇叭。而80年代早期最著名的套装电脑为使用微处理器6510(6502芯片特别版)的Commodore C64。此电脑没有操作系统,而是以一8KB只读内存BIOS初始化彩色屏幕、键盘以及软驱和打印机。它可用8KB只读内存BASIC语言来直接操作BIOS,并依此撰写程序,大部分是游戏。此BASIC语言的解释器勉强可算是此电脑的操作系统,当然就没有内核或软硬件保护机制了。此电脑上的游戏大多跳过BIOS层次

12、,直接控制硬件。Apple I电脑,苹果电脑的第一代产品。延续80年代的竞争,1990年代出现了许多影响未来个人电脑市场深厚的操作系统。由于图形化使用者界面日趋繁复,操作系统的能力也越来越复杂与巨大,因此强韧且具有弹性的操作系统就成了迫切的需求。此年代是许多套装类的个人电脑操作系统互相竞争的时代。在1990年代初,微软与IBM的合作破裂,微软从OS/2(早期为命令行模式,后来成为一个很成功但是曲高和寡的图形化操作系统)项目中抽身,并且在1993年7月27日推出Windows 3.1,一个以OS/2为基础的图形化操作系统。直到这时,Windows系统依然是建立在MS-DOS的基础上,因此消费者莫

13、不期待微软在2000年所推出的Windows 2000上,因为它才算是第一个脱离MS-DOS基础的图形化操作系统。现代操作系统通常都有一个使用的绘图设备的图形化使用者界面,并附加如鼠标或触控面版等有别于键盘的输入设备。旧的OS或效能导向的服务器通常不会有如此亲切的接口,而是以命令行接口(CLI)加上键盘为输入设备。以上两种接口其实都是所谓的壳,其功能为接受并处理使用者的指令(例如按下一按钮,或在命令提示列上键入指令)。1.1.2分类目前的操作系统种类繁多,很难用单一标准统一分类。根据应用领域来划分,可分为桌面操作系统、服务器操作系统、主机操作系统、嵌入式操作系统。根据所支持的用户数目,可分为单

14、用户(MSDOS、OS/2)、多用户系统(UNIX、MVS、Windows)。根据源码开放程度,可分为开源操作系统(Linux、Chrome OS)和不开源操作系统(Windows、Mac OS)。根据硬件结构,可分为网络操作系统(Netware、Windows NT、OS/2 warp)、分布式系统(Amoeba)、多媒体系统(Amiga)。根据操作系统的使用环境和对作业处理方式来考虑,可分为批处理系统(MVX、DOS/VSE)、分时系统(Linux、UNIX、XENIX、Mac OS)、实时系统(iEMX、VRTX、RTOS,RT WINDOWS)。根据操作系统的技术复杂程度,可分为简单操

15、作系统、智能操作系统(见智能软件)。所谓的简单操作系统,指的是计算机初期所配置的操作系统,如IBM公司的磁盘操作系统DOS/360和微型计算机的操作系统CP/M等。这类操作系统的功能主要是操作命令的执行,文件服务,支持高级程序设计语言编译程序和控制外部设备等。下面介绍一下操作系统的五大类型:批处理操作系统、分时操作系统、实时操作系统、网络操作系统、分布式操作系统。 (1) 批处理操作系统 批处理(Batch Processing)操作系统的工作方式是:用户将作业交给系统操作员,系统操作员将许多用户的作业组成一批作业,之后输入到计算机中,在系统中形成一个自动转接的连续的作业流,然后启动操作系统,

16、系统自动、依次执行每个作业。最后由操作员将作业结果交给用户。 批处理操作系统的特点是:多道和成批处理。(2) 分时操作系统 分时(Time Sharing)操作系统的工作方式是:一台主机连接了若干个终端,每个终端有一个用户在使用。用户交互式地向系统提出命令请求,系统接受每个用户的命令,采用时间片轮转方式处理服务请求,并通过交互方式在终端上向用户显示结果。用户根据上步结果发出下道命。分时操作系统将CPU的时间划分成若干个片段,称为时间片。操作系统以时间片为单位,轮流为每个终端用户服务。每个用户轮流使用一个时间片而使每个用户并不感到有别的用户存在。分时系统具有多路性、交互性、“独占”性和及时性的特

17、征。多路性指,伺时有多个用户使用一台计算机,宏观上看是多个人同时使用一个CPU,微观上是多个人在不同时刻轮流使用CPU。交互性是指,用户根据系统响应结果进一步提出新请求(用户直接干预每一步)。“独占”性是指,用户感觉不到计算机为其他人服务,就像整个系统为他所独占。及时性指,系统对用户提出的请求及时响应。它支持位于不同终端的多个用户同时使用一台计算机,彼此独立互不干扰,用户感到好像一台计算机全为他所用。常见的通用操作系统是分时系统与批处理系统的结合。其原则是:分时优先,批处理在后。“台”响应需频繁交互的作业,如终端的要求;“后台”处理时间性要求不强的作业。(3) 实时操作系统 实时操作系统(Re

18、alTimeOperatingSystem,RTOS)是指使计算机能及时响应外部事件的请求在规定的严格时间内完成对该事件的处理,并控制所有实时设备和实时任务协调一致地工作的操作系统。实时操作系统要追求的目标是:对外部请求在严格时间范围内做出反应,有高可靠性和完整性。其主要特点是资源的分配和调度首先要考虑实时性然后才是效率。此外,实时操作系统应有较强的容错能力。(4) 网络操作系统 网络操作系统是基于计算机网络的,是在各种计算机操作系统上按网络体系结构协议标准开发的软件,包括网络管理、通信、安全、资源共享和各种网络应用。其目标是相互通信及资源共享。在其支持下,网络中的各台计算机能互相通信和共享资

19、源。其主要特点是与网络的硬件相结合来完成网络的通信任务。(5) 分布式操作系统 它是为分布计算系统配置的操作系统。大量的计算机通过网络被连结在一起,可以获得极高的运算能力及广泛的数据共享。这种系统被称作分布式系统(DistributedSystem)。它在资源管理,通信控制和操作系统的结构等方面都与其他操作系统有较大的区别。由于分布计算机系统的资源分布于系统的不同计算机上,操作系统对用户的资源需求不能像一般的操作系统那样等待有资源时直接分配的简单做法而是要在系统的各台计算机上搜索,找到所需资源后才可进行分配。对于有些资源,如具有多个副本的文件,还必须考虑一致性。所谓一致性是指若干个用户对同一个

20、文件所同时读出的数据是一致的。为了保证一致性,操作系统须控制文件的读、写、操作,使得多个用户可同时读一个文件,而任一时刻最多只能有一个用户在修改文件。分布操作系统的通信功能类似于网络操作系统。由于分布计算机系统不像网络分布得很广,同时分布操作系统还要支持并行处理,因此它提供的通信机制和网络操作系统提供的有所不同,它要求通信速度高。分布操作系统的结构也不同于其他操作系统,它分布于系统的各台计算机上,能并行地处理用户的各种需求,有较强的容错能力。1.2 设计语言本程序的设计语言主要是C语言,在此,我将对C语言进行简单的介绍。1.2.1 C语言的定义C语言是一种计算机程序设计语言。它既具有高级语言的

21、特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。91.2.2 C语言特点C语言语言简洁.紧凑.使用方便.灵活。运算符丰富。数据结构丰富,具有现代化语言的各种数据结构。具有现代化的控制语句(如if.else语句.while语句.do.while语 句.switch语句.for语句)。语法限制不太严格,程序设计自由度大。C语言能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。

22、生成目标代码质量高,程序执行效率高。程序可移植性好(与汇编语言比)。 (1) C是中级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。作为中级语言,C允许对位、字节和地址这些计算机功能中的基本成分进行操作。C语言程序非常容易移植。可移植性表示为某种计算机写的软件可以用到另一种机器上去。举例来说,如果为苹果机写的一个程序能够方便地改为可以在IBM PC 上运行的程序,则称为是可移植的。(2) C是结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。

23、这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。结构化语言的显著特征是代码和数据的分离。这种语言能够把执行某个特殊任务的指令和数据从程序的其余部分分离出去、隐藏起来。获得隔离的一个方法是调用使用局部(临时)变量的子程序。通过使用局部变量,我们能够写出对程序其它部分没有副作用的子程序。这使得编写共享代码段的程序变得十分简单。如果开发了一些分离很好的函数,在引用时我们仅需要知道函数做什么,不必知道它如何做。切记:过度使用全局变量(可以被全部程序访问的变量)会由于意外的副作用而

24、在程序中引入错误。结构化语言比非结构化语言更易于程序设计,用结构化语言编写的程序的清晰性使得它们更易于维护。这已是人们普遍接受的观点了。C语言的主要结构成分是函数C的独立子程序 (3) C语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。另外C语言也具有强大的图形功能,支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。 (4) C语言适用范围大。适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX、windows 98windows NT;也适用

25、于多种机型。C语言具有强大的绘图能力,可移植性好,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画,它也是数值计算的高级语言。C语言对编写需要硬件进行操作的场合,明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。 C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。 (5) C语言文件由数据序列组成,可以构成二进制文件或文本文件1.2.3 C语言的优点及其缺点C语言编属于高级语言,具有可移植性,能够结构化编程。使用标准C语言的程序,几乎都可以不作改变移植到不同的微机平台上,对于嵌入式等

26、的微控制芯片,属于标准C语言的部分也很少需要修改,而且程序很容易读懂。C语言编写程序结构清晰,移植性好,容易维护和修改。C语言之所以能够如此大范围的得到应用,与其他众多的编程语言相比,其优点必定是明显且巨大的。据总结,C语言的部分优点如下:(1) 简洁紧凑、灵活方便C语言一共只有32个关键字,9种控制语句,程序书写形式自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。 (2) 运算符丰富C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为

27、运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。 (3) 数据结构丰富C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。 (4) C是结构式语言结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调

28、用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。 (5) C语法限制不太严格,程序设计自由度大虽然C语言也是强类型语言,但它的语法比较灵活,允许程序编写者有较大的自由度。C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。此外,C语言还具有效率高,可移植性强等特点。因此广泛地移

29、植到了各类各型计算机上,从而形成了多种版本的C语言。同样,作为一种编程语言,C语言不可避免的也拥有缺点:(1) C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C+的一大区别。 (2) C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。1.2.4 C语言结构特点(1) 一个C语言源程序可以由一个或多个源文件组成。 (2) 每个源文件可由一个或多个函数组成。 (3) 一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。 (4) 源程序中可以有预处

30、理命令(include 命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。 (5) 每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“”之后不能加分号。 (6) 标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。1.3设计思想1构建友好的用户界面,使达到不了解怎样分区的用户也能够轻易实现;为此我们为用户建立空闲分区表,即为内存中每个尚未分配出去的分区设置一个表项;2应用三种不同的分区方式进行分区:(1)首次适应法 该算法倾向于优先利用内存中低地址部分的空闲分区,在高地址部分的空闲分区很少被利用,从而保留了高地址部分的大空

31、闲区。显然,这为以后到达的大作业分配大的内存空间创造条件。其缺点是低地址部分不断被划分,致使留下许多难以利用的、很小的空闲分区,而每次查找又都从低地址开始,这无疑会增加了查找可用空闲分区的开销。种分配算法具有随机性,它介于最佳适应算法和最差适应算法之间,通常适用于系统事先不掌握运行期间可能出现的请求分配和释放回收的信息的情况。(2)最佳适应法 “最佳”的含义是指每次为作业分配内存时,总是把即能满足要求、又是最小的空闲分区分配给作业,避免了“大材小用”。为了加速查找,所有的空闲区按其大小递增的顺序形成一空闲区链。这样第一次找到的必然是最优的。孤立地看,最佳适应算法似乎是最佳的,然而在宏观上却不一

32、定。因为每次分配后所切割下的剩余部分,总是最小的,这样,在存储器中会留下许多难以利用的小空闲区。 最佳适应算法将可利用空间表中一个大小不小于“请求”且最接近“请求”的空闲块的一部分分配给用户。分配与回收都需要对可利用空间表从头至尾查询一遍。为了避免每次分配都要查询整个链表,通常要求节点从大到小排序,由此只需找到第一个足够大的空闲块即可予以分配。但回收时,必须把回收的空闲块放置在符合大小顺序关系的链表位置。在分配时容易产生太小而无法利用的内存碎片,同时这种做法也保留了那些很大的内存块以备响应将来发生的内存量较大的用户“请求”,从而使整个链表逐渐趋向于节点大小差别甚远的状态。这种分配算法适合请求分

33、配内存大小范围较广的系统,此算法比较费时间。(3)最坏适应法 空闲区表的空闲区大小按照递减顺序进行排序,从空闲区大小由大到小的顺序依次进行链接。在作业分配时,不再每次从链首开始查找,而是按照空闲区的大小来进行查找,在空闲区从大到小开始查找直到找到能满足其大小要求的空闲区为止。然后,再按照作业的大小,从该分区划分出一块内存空间分配给请求者,余下的分区继续将空闲区大小按照降序进行排序。在作业回收使要考虑作业的回收方式,既向上合并、向下合并、上下一起合并。在合并之后也要空闲区大小按照降序进行排序。这样就会始终保持大空闲区在前。最差适应算法将可利用空间表中一个大小不小于“请求”且是链表中最大的空闲块的

34、一部分分配给用户。要求节点从大到小排序。分配时不需查询,回收时要查询,以便插入到适当位置。这种算法将使链表的节点大小逐渐趋于均匀,适合请求分配内存大小范围较窄的系统,此算法最费时间。3动态的对作业进行回收使之达到回收之后能够进行再次分区,以至达到无限次的分配与回收。1.4运行环境1.4.1 Visual C+ 简介在这次课设中,我们使用的开发环境是Visual C+。Microsoft Visual C+,(简称Visual C+、MSVC、VC+或VC)微软公司的C+开发工具,具有集成开发环境,可提供编辑C语言,C+以及C+/CLI等编程语言。VC+整合了便利的除错工具,特别是整合了微软视窗

35、程式设计(Windows API)、三维动画DirectX API,Microsoft .NET框架。目前最新的版本是Microsoft Visual C+ 2010。Microsoft Visual C+是Microsoft公司推出的开发Win32环境程序,面向对象的可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。它以拥有“语法高亮”,IntelliSense(自动编译功能)以及高级除错功能而著称。比如,它允许用户进行远程

36、调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。这些特征明显缩短程式编辑、编译及连结的时间花费,在大型软件计划上尤其显著。1.4.2 Visual C+ 的特点1.Visual C+中源程序采用C/C+语言编写,它支持面向对象程序设计,并能够使用功能强大的微软基础类库MFC(Microsoft foundation class),充分体现了Microsoft公司的技术精华。由于Windows操作系统的市场垄断地位,利用Visual C+开发出来的软件具有稳定性好、可移植性强的特点。2.利用V

37、isual C+可以编制各种类型的Windows应用程序,从简单的单文档、多文档和对话框程序到复杂的组合界面程序。并且,Visual C+作为Visual Studio可视化家族中最重要的一个成员,它与其他可视化开发工具如Visual J+、Visual Basic及Visual C#紧密集成,可进行不同类型以及综合软件项目的开发,适用于开发非常专业的Windows、Web和企业级应用程序。3.Visual C+6.0源代码编辑器功能强大,使用非常方便。它提供了语句自动完成功能,编辑输入源程序时能自动显示当前对象的成员变量和成员函数,并表明函数的参数类型。Visual C+6.0的编译器增加了

38、新的编译参数,改进了对ANSI C+标准的支持,并采用Microsoft的代码优化技术,使生成的目标代码更精练,程序运行的速度更快。比较其他程序调试工具,Visual C+6.0程序调试器Debug功能更强大,它提供了诊断映射机制、无须重编译的调试、远程调试和实时调试等功能。4.Visual C+6.0的联机帮助系统MSDN Library(Microsoft developer network library)可以称得上是一本内容非常丰富的电子参考书。它既能与集成开发环境有机地结合在一起,使程序员在编程进可以随时查询需要的帮助信息和技术文档,又能脱离集成开发环境而独立地运行,并且用户还可以通

39、过因特网获取实时的帮助信息和实例。5.Visual C+6.0通过Visual Studio还为用户提供了很多实用工具,如Spy+查看器、ActiveX Control Test Container控件测试窗口及Register Control控件注册程序等,扩展了Visual C+的功能,有利于专业程序的开发。除了Visual C+,其他一些知名公司也推出了自己的C+集成开发环境,如Borland的C+ Bulider和IBM的VisualAge C+。迄今为止,Visual C+可以说是一个功能最强大和使用范围最广泛的软件开发工具。由于Windows编程的困难和MFC类库功能的庞大,加上应

40、用程序向导生成的程序框架的复杂,使得学习Visual C+比学习其他软件开发工具更困难。但当熟练掌握Visual C+编程方法后,就会感受到作为Visual C+程序员的无比优越性。沈阳工程学院课程设计报告 第2章 系统分析第2章 系统分析2.1系统功能简介本系统能通过三种方法实现动态分区,即首次适应法、最佳适应法、最坏适应法实现,用户进入运行界面后先选择哪种分区方式,选择好分区方式后,输入空闲区的个数和作业个数,用户自设动态分区表,分区表可连续也可离散输入,构建完动态分区表后构建作业表,系统会自动按实现选好的方式将作业分到空闲块中,此时系统会提醒是否回收作业,选择“Y”,键入回收的作业号,系

41、统会提示选择哪种方式回收,选择后系统会自动将作业回收,并显示当前空闲区的情况。此时系统提示是否继续回收,如不回收,提示是否输入新作业,选择哪种分配方式,若是输入新作业,继续循环上面部分,若不回收,退出界面,回到初始界面。1.首次适应算法首次适应算法要求将空闲分区链按地址递增的次序连接。在分配内存时,从链首开始顺序查找,直到找到一个大小能满足要求的空闲分区为止,让背后按照作业大小,从该区中划分出一块内存空间分配给请求者,余下的空闲分区仍留在空闲链中。若没有找到一个满足条件的空闲分区,则此次内存分配失败,返回。2.最坏适应算法最坏适应算法要求将空闲区表的空闲区大小按照递减顺序进行排序,从空闲区大小

42、由大到小的顺序依次进行链接。在作业分配时,不再每次从链首开始查找,而是按照空闲区的大小来进行查找,在空闲区从大到小开始查找直到找到能满足其大小要求的空闲区为止。然后,再按照作业的大小,从该分区划分出一块内存空间分配给请求者,余下的分区继续将空闲区大小按照降序进行排序。3.最佳适应算法最佳适应算法要求将所有的空闲分区按其容量以从小到大顺序形成一空闲分区链,这样第一次找到的必然是最佳的。系统总体功能图如图2.1所示。动态分区存储管理系统首次适应算法最佳适应算法最坏适应算法回收函数图2.1总体功能图2.2空闲分区链2.1.1空闲分区链的结构为了实现对空闲分区的分配和链接,在每个分区的起始部分,设置一

43、些用于控制分区分配的信息,以及用于链接各分区所用的指针,通过前后向链接指针,可以将所有的所有的空闲分区连成一个双向链,如图2.2所示。为了检索方便,在分区尾部重复设置状态位和分区大小表目。当分区被分配出去以后,把状态位有“0“改为“1“,此时,前后向指针已无意义。前向指针N+200N+2后向指针N个字节可用图2.2空闲分区链结构2.1.2内存的分配系统应用某种分配算法,从空闲分区链中找到所需大小的分区。设请求的分区大小为u.size,表中每个空闲分区的大小可以表示为m.size。若m.size-u.sizeu.sizem.size-u.size=size将分区分配给请求者从该分区划出u.siz

44、e大小的分区将该分区从链中移出继续检索下一个表项结束YYNNY图2.3内存分配流程图272.1.3内存的回收当进程运行完毕释放内存,系统根据回收区的始址,从空闲分区链中找到相应的插入点,此时会出现以下四种情况之一:(1)回收区与插入节点的前一个空闲分区F1相邻接,如图2.4(a)所示。此时应将回收区与插入节点的前一分区合并,不必为回收分区分配新的表项,而只需修改前一分区的F1的大小。(2)回收区与插入节点的后一个空闲分区F2相邻接,如图2.4(b)所示。此时也可将两个分区合并,形成新的空闲分区,但用回收区的首址作为性空闲分区的首址,大小为两者之和。(3)回收区同时与插入节点的前、后两个分区相邻

45、接,如图2.4(c)所示。此时应将三个分区合并,使用F1的表项和F1的首址,取消F2的表项,大小为三者之和。 (4)回收区既不与F1相邻接又不与F2相邻接,此时应为回收区单独建立一新的表项,填写回收区的首址和大小,并根据其首址插入到空闲链的适当位置。F2F1F3回收区回收区回收区(a)(b)(c)图2.4内存回收时的情况2.3首次适应算法首次适应算法要求将空闲分区链按地址递增的次序连接。在分配内存时,从链首开始顺序查找,直到找到一个大小能满足要求的空闲分区为止,让背后按照作业大小,从该区中划分出一块内存空间分配给请求者,余下的空闲分区仍留在空闲链中。若没有找到一个满足条件的空闲分区,则此次内存

46、分配失败,返回。首次适应算法流程图如图2.5所示。结束开始将空闲分区链按地址递增排列作业大小小于等于空闲分区大小为作业分配空间从头开始查表NY图2.5首次适应算法流程图2.4最坏适应算法最坏适应算法要求将空闲区表的空闲区大小按照递减顺序进行排序,从空闲区大小由大到小的顺序依次进行链接。在作业分配时,不再每次从链首开始查找,而是按照空闲区的大小来进行查找,在空闲区从大到小开始查找直到找到能满足其大小要求的空闲区为止。然后,再按照作业的大小,从该分区划分出一块内存空间分配给请求者,余下的分区继续将空闲区大小按照降序进行排序。最坏适应算法流程图如图2.6所示。开始将空闲分区表按大小递减排列空闲分区大小大于等于作业大小找出一块最大的空闲分区分配给作业

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 建筑施工 > 施工组织方案

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922