您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文档 > 90天大《操作系统原理》学习笔记三
操作系统原理—学习笔记三主主主主题题题题::::《操作系统原理》学习笔记内内内内容容容容::::《《《《操作系统原理操作系统原理操作系统原理操作系统原理》》》》学习笔记学习笔记学习笔记学习笔记三三三三————————存储管理存储管理存储管理存储管理主存储器又称为内存储器,它是处理机可以直接访问的存储器。主存速度快,但容量有限。存储管理主要是对主存的管理,同时也涉及到主存和外存交换信息。一一一一、、、、存储管理的目的与功能存储管理的目的与功能存储管理的目的与功能存储管理的目的与功能计算机的系统结构是以内存储器为中心。受系统地址总线的限制,内存空间并不能做的很大。16位地址总线,内存最大64KB。32位地址总线,内存最大4GB。在多道系统中,多个用户作业要同时使用有限的内存空间。内存储器成为系统的“瓶颈”资源。如何充分利用和有效管理内存空间,是操作系统必须完成的主要任务。在多道系统中,存储管理的目的是为系统中并发运行的多道作业提供相互独立的存储空间,并为用户使用存储器提供方便。主存储器的存储空间分为两个部分:系统区:用于存放操作系统的程序和数据。用户区:存放系统应用程序和用户的程序和数据。存储管理主要是对用户区的存储空间进行管理。操作系统中存储管理的功能主要有五个方面:存储分配。为进入系统的多个作业合理地分配存储空间每个作业的程序及其数据存放在内存空间的什么区域。使用连续的内存区域,还是把它分成若干块来占用不连续的存储空间。合理组织作业占用的空间,以达到既便于程序运行时存取信息,又能够最大限度地减小空间的浪费,使内存空间得到充分的利用地址变换。用户作业调入内存空间时所处的位置是根据内存空间当时的状况决定的。一般情况下,同一个程序在每次调入内存时所占用的位置是完全不同的。为了保证程序在使用内存的不同区域时仍能正确地执行,必须把在程序执行时要访问的存储单元的位置,由用户在编制程序时所定的地址变换成它们在内存的实际地址。地址变换又称为地址重定位。存储保护。在整个内存空间中既存放着系统的程序和数据,又有多个用户的程序和数据。保证系统的程序和数据不被用户非法访问和破坏。保证每一个用户信息的安全。做到用户之间不能相互交叉和干扰。存储共享。为了有效地节省内存空间,对于多个程序共同使用的程序和数据只需在内存中存放一个拷贝。存放这些共用程序和数据的内存区域要做到允许有关的程序在运行时都可以访问它们。操作系统原理—学习笔记三存储扩充。在物理内存空间不变的前提下,通过软件方法为用户作业提供一个比物理内存空间大得多的存储空间。达到在一个较小的内存区域中运行较大程序的目的。操作系统的存储管理采用覆盖技术和虚拟存储技术实现内存扩充。二二二二、、、、地址重定位地址重定位地址重定位地址重定位作业装入内存时,必须根据装入的起始位置对作业中的地址代码进行变换,这种地址变换过程就是地址重定位。操作系统根据设计目标可以采用:静态地址重定位动态地址重定位1.地址重定位用户在使用汇编语言或高级语言编制源程序时,是通过符号名来确定程序分支转移位置和子程序入口以及数据位置的。这些由符号名确定的作业空间称为“名字空间”。程序经过汇编或编译后形成目标程序。若干个目标程序模块经过链接后形成一个装配模块程序。在装配模块程序中程序指令和数据按照它们的位置重新编号,这种顺序编号称为相对地址。相对地址一般是以0做为参考地址。源程序中的那些符号名所确定的位置就转化成了它们在整个程序中相对地址。通常把作业的相对地址的集合称为相对地址空间,简称地址空间。内存空间的物理组织形式是按照所有存储单元的顺序依次对各个存储单元编号,存储单元的顺序编号称为内存的绝对地址。CPU访问内存,包括读取程序指令代码和存取内存中的数据,都是使用绝对地址访问各个存储单元的。绝对地址的集合称为绝对地址空间或存储空间。用户作业的装配模块程序必须装入内存才能由CPU访问并执行其功能。用户作业的装配模块不可能按照其相对地址来使用对应的绝对地址,即不可能从绝对地址0占用内存空间。作业装入内存后,由于其起始地址不是0地址。需要把装配模块程序中以0为参考的相对地址变换成实际的绝对地址。在程序装入内存后,需要对程序指令中与地址有关的代码进行转换。这个相对地址向绝对地址的转换过程称为地址重定位。装配模块程序的相对地址经过地址重定位后,就成为可以由CPU直接访问的绝对地址程序。地址重定位完成的相对地址变换成内存的绝对地址的操作又称为地址映射(map)。操作系统原理—学习笔记三2.静态地址重定位静态重定位是在程序装入内存后,在程序执行之前,根据所在内存的起始位置,一次性地直接修改指令中有关地址的代码。需要修改的指令代码一般是转移指令、子程序调用指令和访问数据区指令中的直接地址代码。程序装入内存后,秩序中所有涉及到直接地址的指令中的地址码都要做修改。在地址重定位时需要修改的地址码在程序中的位置称为重定位项。在地址重定位操作中相对地址向绝对地址变换时加上的装入模块的绝对起始地址称为重定位因子。绝对地址=相对地址+重定位因子为了便于操作系统进行静态重定位操作,链接程序在生成具有统一相对地址空间的装配模块的同时,还生成了一个重定位项表。重定位项表中记载着所有的重定位项。重定位操作重定位操作重定位操作重定位操作对每一个重定位项实施以下操作:从重定位项表中取一个重定位项,加上重定位因子,得到需要修改的地址代码所在的绝对地址。根据该绝对地址找到需要修改的地址代码,把它加上重定位因子,生成绝对地址的代码。地址重定位操作结束后,内存中的重定位项表被废弃,它所占用的存储空间由系统回收再分配。静态地址重定位的优点:由于在程序执行前就完成了地址变换,所以程序执行的速度较快。不需要硬件的支持,在硬件简单的机器中易于实现。静态地址重定位的缺点:程序经地址变换后,就不能在内存中移动了。要求程序的存储空间必须是连续的,不利于存储空间的充分利用。3.动态地址重定位动态地址重定位是把装配模块装入以某地址为起点的存储空间后,在程序运行之前并不实行相对地址向绝对地址的变换,而是在程序运行过程中,执行需要访问内存的指令时,才把指令中的地址码由相对地址变换成成绝对地址。由于动态地址重定位是在程序执行的过程中进行,如果采用软件方法实行地址变换,必将占用CPU的运行时间,导致程序执行速度下降。必须利用硬件的支持来实现地址变换。设置了一个硬件定位寄存器来存放程序的起始绝对地址。在程序运行过程中,执行到访问内存的指令时,由地址变换硬件逻辑自动把指令中的相对地址代码与定位寄存器的值相加,以其结果值做为访问内存的绝对地址来访问该存储单元。采用动态地址重定位方法,用户作业在装入内存后,无论是执行前还是执行过程中,程序代码始终没有变化,程序始终保持原有的相对位置关系。程序在装入内存后即使存储位置发生了变化,也不会影响程序的运行。程序在执行过程中可以改变其存储位置,这称为内存移动。采用动态地址重定位,在程序从某一存储位置移到另一位置时,只要把新存储区域的起始地址置入定位寄存器中,程序仍可以继续正确执行。操作系统原理—学习笔记三采用动态地址重定位可以把用户作业的若干相互独立的模块分别存储在不同的存储区域,这些区域可以不必连续相邻。在程序运行中,当需要访问某一个模块中的指令或数据时,只要把该模块的起始地址置入定位寄存器,使用动态重定位就可以正确地实现对内存访问。三三三三、、、、分区存储管理分区存储管理分区存储管理分区存储管理内存空间管理方式(方案):单一连续区管理分区管理分页管理分段管理单一连续区存储管理:最简单的存储管理方案,它一般由单道系统采用。由于单道系统只有一个用户作业在系统中运行,所以,整个内存的用户区做为一个单一连续的存储区域存放这个用户作业。分区存储管理方式:在多道系统中,把内存的用户区划分成若干连续的区域,称为分区。每个分区分配给一个用户作业使用,把用户作业一次性全部装入到这个分区中,并限定它们只能在自己的分区中运行。分区管理方式分为:固定分区管理、可变分区管理。1.固定分区管理固定分区管理是在用户作业装入内存之前,事先由操作系统或操作人员把内存的用户区划分成若干个大小不等的分区。分区一旦划分后,在系统运行期间就不能再变动,所以它们称为固定分区,或静态分区。由于一个分区只能存放一个作业,所以系统可以同时运行的最大作业道数就是内存分区的数量。在固定分区管理下,内存分区的数量、分区的大小、分区的位置以及可容纳的作业道数都是固定不变的。固定分区又称MFT(MultiprogrammingwithaFixednumberofTasks),作业数固定的多道程序设计方法。在固定分区管理方式下,每个用户作业占用一个连续的分区区域,作业的程序和数据一旦装入分区后就不能再移动,所以它通常采用静态地址重定位。重定位因子一般就是分配给作业的分区首地址。在系统运行期间,对于要装入系统的用户作业,由操作系统根据用户作业的大小,选择一个尺寸合适的分区分配给该程序使用。固定分区管理使用一个称为分区说明表(BDT)的数据结构对用户作业进行存储分配和去配。分区说明表中每一个表项对应一个分区,它记载着这个分区的序号、空间大小、起始地址和使用状况。当用户作业要求装入系统时,操作系统通过分区说明表查找内存的空闲区域,然后根据作业的大小,按照一定的分配策略,选择一个空闲分区分配给该作业,并把分区说明表中该分区标明已占用。当一个作业运行完毕退出系统时,操作系统把该作业占用的分区回收,并把分区说明表中该分区表明为空闲区。分区说明表分区号大小起始地址状态18K16k占用操作系统原理—学习笔记三216K24k占用332K40k空闲464K72k占用5120K136k未分配固定分区采用的分配策略:最先适应算法FF(FirstFit):按照分区的顺序选择第一个可以满足作业请求容量的空闲区。这种算法实现简单,存储分配的速度快。最佳适应算法BF(BestFit):从内存所有空闲区中找出能满足作业请求容量的最小空闲区。这种算法比FF算法对内存空间的利用较好,浪费的空间最少。一个分区分配给某个作业后,由于分区的大小和作业的大小不可能完全相同,一般情况下在分区内总是留有一些未使用的区域。由于这些空闲区域处于一个分区的内部,其它作业不能利用。在固定分区方式中,一个分区分配给作业后,分区内未使用的空闲区称为“内碎片”。固定分区管理方式解决了多道程序的存储问题。固定分区方式实现技术比较简单。但内存空间存在着内碎片,甚至有的内碎片相当大,这就造成了内存空间的严重浪费,大大影响了内存的利用率。2.可变分区管理对内存空间预先不划分分区,而是当作业装入时,根据作业的大小,在内存的空闲区域中“切出”一个连续的存储区域做为分区分配给该作业使用,这种分区方式是根据作业大小动态地划分分区,所以又称为动态分区方式。当某个作业运行完毕释放内存分区后,只要可能,系统便将相邻的空闲区合并成较大的空闲区,在分配给其它作业使用。采用可变分区方式,内存中分区的数量,分区的大小,每个分区的位置,以及装入内存的作业数量等都会随着时间的变化而改变。可变分区方式也称为MVT(MultiprogrammingwithaVariablenumberofTasks),作业数可变的多道程序设计方法。采用可变分区方式,在系统启动时整个用户区是一个大的空闲区。随着作业陆续进入系统,整个内存空间被划分成一个个大小不等的分区供这些作业使用。每个分区都是一个连续的存储区域,用于存放一个作业。可变式分区管理,内存占用表HBT(HoldBlocksTable)记录已分配的内存块的使用状况,空闲块表FBT(FreeBlocksTable)记录未分配的空闲区的状况。在两种表中,每一个表项主要记录了相应内存块的位置、长度和状态。在作业进入系统时,操作系统根据作业请求的内存容量,按照某种分配算法,从空闲块表中选取一个合适的空闲区,为作业分配内存空间。若空闲区大于请求空间时,将剩余空间做为一个新的空闲区。存储分配后修改空闲块表和内存占用表。当作业运行结束退出系统后,系统
本文标题:90天大《操作系统原理》学习笔记三
链接地址:https://www.777doc.com/doc-4356355 .html