tanga

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
在存储管理这章节中,主要讲解的是内存,那什么是内存呢? 内存就是暂时存放CPU中运算的数据,以及与外部存储器交换的数据,了解完他的作用接下来了解一下存储器系统的结构,其中有寄存器,高速缓存,主存储器,磁盘缓存,固定磁盘,可移动存储介质,容量越大他就越便宜,以上排列时有价格从高到底排列的,而对于不同的层次的存储介值,都有操作系统一管理,(操作系统统一管理作业,内存,进程,设备,文件,而内存就是其中之一),至于为什么要有缓存这个个东西呢,就是由于CPU的运算速度太快了,但是内存的访问速度太慢了,中间需要一点缓和的东西

  接下来就是程序的链接,那什么时链接呢,我们在大学时候运行过C语言,其中就有编译,链接,运行,编译就是由编译程序对用户源程序进行编译,形成若干个目标模块,链接就是编译形成之后,将他们链接在一起,是将不是自己定义的地址解析出来,解决外部符号,形成一个exe可执行文件,最后一步就是装入,将他们装入内存当中,而装入方式也由很多,比如绝对装入(知道程序在内存中的什么位置),可重定位装入方式(根据内存的具体情况将装入到内存的适当位置,在一个作业装入内存当中,必须分配自己的全部内存空间,若没有足够的内存就不能装入作业,作业一旦进入内存之中就不可以在内存中移动了,也叫做静态重定位),动态运行时的装入方式(将程序装土内存后,没有立即转换成物理地址,而是把这种地址转换推迟到程序真正要执行时才进行,不允许在程序运行的时候内存移动位置),以上我们可以的简单了解到无论时链接还是装入动态的最方便,就是等到程序要真正运行的时候才去链接和装入

  下面就是为了能将用户程序装入内存当中,为他分配所需要的空间了,这里可以分为两块,一块是连续的分配储存管理方式,一种是非连续的分配存储管理方式,

  连续分配存储管理方式: 什么叫连续的分配存储管理方式呢? 就是这种分配方式为以一个用户程序分别配一个连续的存储空间,这里的重点有一下几点: 分别是单一连续分配,固定分区分配 基于顺序搜索的动态分区分配算法 单一连续分配: 顾名思义,单一连续分配就是一个个分配,在单道程序的环境下,存储器管理方式把内存分为用户区和系统区,系统区就是专门为操作系统服务的,而在用户区,只能装一道程序,就是整个内存被这一道程序霸占,所以啊,他叫单一连续分配,就是因为他只能放一道程序,所以他不会被其他用户所干扰这种问题,没有外部问题就一定又会内部问题,矛盾是无处不在的,内部问题就是用户区和系统区了他们相互越界问题了,但是这种问题是非常好解决的, 我们只需要设定界限就好了! 固定分区分配: 因为单一连续分配问题只能装一道程序,可是在现有社会,一道程序是远远不够的,所以我们要多道程序,固定分区分配将用户空间分配成若干个固定大小的区域,有一个分区分配一道作业,这便可以解决了只有一道程序运行的尴尬了,比如内存中有四个用户分区,那么这四个用户分区并发执行,一旦有空闲的分区时,便从后备队列中选择一个作业装入该分区,这个操作让我想起了什么,想起了上一章cpu中的高级调度 动态分区分配: 笔者相信随着时代的进步,每一次电脑操作的改进都意味着能让人们更能了解电脑,而动态分区分配就不用预先将内存划分了,而在进程放入内存中,根据进程大小动态分区,并使分区的大小合适进程需要,这玩意要是用多了内部碎片就会多,所以我们有研究了紧凑技术 基于顺序搜索的动态分区分配算法:为了实现动态分区分配算法,通常时将系统中的空闲分区链接成一个链,顺序搜索就是依次搜索空闲分区链上的空闲分区,找一个合适其大小能满足要求的分区,有一下四种 : 分别时: 首次适应算法,循环首次算法,最佳适应算法和最坏适应算法,下面我分开讲解,其实都很简单,首次适应算法是从空闲分区表的第一个表目开始查找(从地址开始找),把最先满足要求的空闲区分配给作业,优点是保留了高址部分的大空间,缺点是地址被划分的部分留下很多小碎片  循环首次算法: 从上一个空闲分区的下一个空闲分区开始查找,直到找到可以满足作业的空闲分区   最佳适应算法: 从全部空闲区中找出能满足作业要求的,且大小最小的空闲分区,这种方法能使碎片尽量小  最坏适应算法: 它从全部空闲区中找出能满足作业要求的、且大小最大的空闲分区,从而使链表中的节点大小趋于均匀

  接下来的知识点就是非连续的分配存储管理方式,其中有以下几点,分页储存管理方式,分段存储管理方式,段页式存储管理方式

  首先得了解一下非连续分配方式的由来,以上所学我们知道,动态分区产生外部碎片,固定分区产生内部碎片,虽然我们可以用紧凑的方式来解决,但一定会增加电脑很大的开销,如果我们将一个进程分散的装入不同的分区中,便可以充分的利用内存空间,写到这个,我突然想到了数据结构我们学到的顺序表和链表了呢,他们的优缺点跟他们是不是很相似

  分页式存储管理: 分页管理就是将进程的逻辑地址空间分成若干个页,并对页面开始进行编号,相应的,我们也将内存的物理地址分成多块,也将他们进行编号,将进程中的若干个界面分别装入多个可以不想接的物理块中,当然了,页面大小也是很有说法的,如果你页面大小设的特别的多,一个是占用内存,另外就是换入换出的比较多,效率比较低,但是呢,你页面大小设置的比较大的话,会使页内碎片也大,通产是1-8kb  ,分页地址的地址结构主要是页号和偏移量,什么是偏移量,就是在哪一页的哪个地址上,页表。在分页系统中,允许进程的各个页离散的存储在内存中的任一物理块中,为了便于在内存中找到进程的每个页所对应的物理块,系统为每个进程建立一张页表,记录页面在内存中对应的物理块号。至于怎么从逻辑地址找到物理地址呢: P=int[a/l], d=[A]modL,举个栗子,设页面大小为1KB也就是1024B,A=2248B, 那么P=2,D=2248%(1024*2)=200  ,然后在查2页物理地址的块是x,最后 1024*(x)+200就是物理地址了,若页表全部放在内存中,则存取一个数据或一条指令至少要访问两次内存:一次是访问页表,确定所存取的数据或指令的物理地址,第二次才根据该地址存取数据或指令。显然,这种方法比通常执行指令的速度慢了一半。为此,在地址变换机构中增设了一个具有并行查找能力的高速缓冲存储器——快表,又称联想寄存器(TLB),用来存放当前访问的若干页表项,加速地址变换的过程。与此对应,主存中的页表也常称为慢表。

  分段式存储管理: 主要目的是满足用户在编程使用上的多方面要求,信息保护和共享、动态增长及动态链接等多方面的需要。段式管理方式按照用户进程中的自然段划分逻辑空间 ,例如分成主程序,子程序,数据段等,所以整个作业分成多端,并为每一段赋予一个段号,分页管理有页表,那什么是段表呢,为什么建表,说白了就是更好的从物理地址找到每个逻辑地址所对应的位置,每个进程都有一张逻辑空间与内存空间映射的段表,其中每一个段表项对应进程的一个段,段表项记录该段在内存中的起始地址和段的长度。

  段页式管理: 综合了分页式和分段式的有优点,就是将程序分成若干个段,段有分成若干个页,在一个进程中,段表只有一个,而页表可能有多个。而在进行地址变换时,首先通过段表查到页表起始地址,然后通过页表找到页帧号,最后形成物理地址。

  呼~~,终于写完了,大体就想了这么多,也有几句摘抄博主简单爱_wxg的,当然,这是大学封校写时的,有很多没有写透,也会有错误,如果大佬看见了请在评论多多指正,这是第一篇心得随笔,是记录大学的时光,也是梦开始的地方!!

posted on 2022-05-01 21:32  没错哈哈  阅读(138)  评论(0)    收藏  举报