操作系统学习4

                                                    存储器管理

存储器指的是操作系统的内存,所有要执行的程序都要加载到内存,然后才能执行,现在的电脑一般有多级缓存的存储结构,一般是寄存器、(多级)高速缓存cache、主存、磁盘缓存、固定磁盘、移动磁盘六层。越靠近cpu价格越高,存取速度越快。其中,寄存器、高速缓存、和主存是OS存储管理的范畴,掉电后他们中的信息将不再存在,而低层的磁盘和可移动的磁盘,可以长期保存数据。寄存器和主存称为可执行存储器。寄存器的存储速度和CPU是一样的。主存的速度远小于CPU,所以加入了高速缓存加快存储速度。至于磁盘缓存不是具体的物体,而是内存的一部分,写入的是执行频率较大的信息。

1.      程序的装入和链接

1>    程序装入内存变成可执行的程序要经过编译、链接、和装入三个过程

2>    程序装入的方式:

                   绝对装入方式:程序中的相对地址和绝对地址相同,所以不需要对程序和数据的地址进行修改

                   可重定位装入方式:根据内存的具体情况装入内存,装入后地址不再改,故称为静态重定位

                   动态运行时的装入方式:一个进程可能多次的被换入换出,地址老改变,所以采用动态的方式装入

3>    程序的链接方式:静态链接方式:

              事先把目标模块和函数库链接成一个装配模块,不在拆开,要做对相对地址的修改和变换外部的调用符号

              装入时动态链接:边装入边链接,装入一个目标模块时,遇到调用另外模块,就装入调用的模块。这方便了修改和更新,也方便了目标模块的共享

              运行时动态链接:将模块的调入推迟到执行时才调入。

2.   连续分配的存储管理方式:

1>    连续分配的方式:              

                    1 单一的连续分配:分配进去就用户空间就会被独占

                     2 固定分区分配:判断分区的大小,把可以放入的进程放进去

                     3 动态分区分配:有分配的数据结构(空闲分区表和空闲分区链)、动态分配算法、分区分配操作:内存的分配和回收(按大小分配内存,回收时合并空闲区)

2>    基于顺序搜索的动态分区分配算法:

                   1 首次适应算法:随着分区链进行查找,找到大小适合的分区就马上分配,首先分配低地址

                   2 循环首次适应算法:从上次找到的空闲分区的下一个开始找,知道找到满足条件的分区

                   3 最佳适应算法:避免大材小用,把空闲分区从小到大形成一个链,找到最适合的

                   4最坏适应算法:总是找最大的空闲区,分割一部分给所需。

3>    基于索引搜索的动态分区分配算法:

                    1 快速适应算法:将容量大小分类,对于每一类有相同容量的空闲分区,组成一个链表,有在内存中设置一个索引表,表项记录了对应的空闲分区的类型。

                    2伙伴系统:若要找一个长度为n的存储空间,先计算一个i,再在分区表中找2的次幂的空闲分区,若不存在则找2的i加1次幂的

                    3哈希算法:利用哈希快速查找的优点,根据空闲分区再内存中的规律,建立一个哈希函数,根据哈希函数建立一个以空闲分区大小为关键字的哈希表,表项对应分区表头指针

4>    动态可重定位分区分配:

                  1 紧凑:把分配后的碎片拼凑成一个大的空间,方便再分配

                  2 动态重定位:增设一个重定位寄存器,把相对地址变为硬件地址,内存中的程序从内存中移动时,不要改动其他东西,只要把新地址的和原来的地址置换就好。

                  3 动态重定位分区算法:和动态分区一样,差别就是,经过了紧凑,把紧凑后的空间分配给需要的程序。

3.    对换:

1>对换要做的事:   

         1 多道批处理程序的对换:阻塞队列中的进程会大量占用内存空间,所以在不用时,就可以把它暂时放在外存,一般有整体对换和页面对换

         2 对换的空间管理:目标:对文件管理上要提高空间的利用率,对对换空间的目标上提高对换的速度

         3 对换的盘块空间的数据结构:对换去的首址和大小,用盘块号盘块数表示

         4 进程的换出:优先选择阻塞或睡眠的进程,按优先级换出,再次选优先级低的就绪进程换出

         5 进程的换入:查看各PCB状态,选择在磁盘上呆了最久的进程换入,但是要腾出足够的空间。

4.     分页存储管路方式

1 页面:将用户程序的地址空间分成若干个大小相同的空间,称为页,大小为0-8KB

2 地址结构:页号加位移量w

3 页表:通过查找页表,可以找到相应的页号

4 地址变换机构:设置了一个页表寄存器,存放页表咋内存的开始地址和页表的长度

5具有快表的地址变换机构:增设了一个联想寄存器存放当前访问的页表项。方便直接读该页所对应的物理块号

6 为了满足页占的内存小,通常会采用两级或者多级页表。

5.      分段存储管理

1 段的引入:为了方便编程、信息共享、信息保护、动态增长以及动态链接的要求,引入了段

2 段的个概念:把作业的地址空间分为若干个段,每个段定义了逻辑信息(如:程序段,数据段,栈段等。),段的地址有段号和段内位移两部分

3 段表:段也可以像页一样离散的分布在内存里面,为了方便的找到相应的进程段,就得去查短表。段表里存了各个段的基址和段长以及段号。

4 地址变换机构:系统设置一个地址变换寄存器,用于存放短地址和段表长度TL,在进行变换时,系统会将逻辑地址的段号S和段表长TL进行比较,要S<TL才进行地址变换

5 分也和分段的主要区别:第一.分页用户和不可见,是系统的行为。而分段更好的是满足用户的需要,用户可见。第二.也得大小有系统决定,也是固定的,与哦硬件实现的,而段的长度是不固定的,是由用户编的程序而定,通常有编译程序在对源程序进行编译时,根据信息的性质来划分的。第三.分页的用户的地址空间是一维的,

在分页的系统中用固话程序的地址是属于单一的线性空间地址。而分段时,用户的地址空间是二维的,用户要给出段名和段内地址。

6 分段系统有一个突出的优点:易于实现短的共享。它允许多个进程共享一个或者多个分段。而分页系统的共享远不如分段共享容易。因为无论断油多大,它也只要建立以个段表项。而页的大小是固定的,一个程序可能站很多页,要查找很多次的页表。

6.  段页式存储器管理

1 基本原理:先将程序分为若干个段,再把每个页分为若干个页,并为每一个段赋予一个段名。实现从逻辑地址和物理地址的变换,要配置短表和页表,段表里不再是内存地址和段长,而是页表的始址和页表的表长。

2 地址变换过程:先段号S与段表寄存器里存的段长TL比较,S<TL时,未越界,后利用段表地址求出所对应的段表项中的位置,从中得到页表的始址。再利用逻辑地址中的段页号P来获得对应的页表项位置,得到该页所在的物理地址。

3 所以为了获得一条指令或数据,必须三次访问内存。访问段表--à访问页表-à访问物理地址。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值