存储器的多层结构:
-
寄存器
-
高速缓存
-
主存储器
-
磁盘缓存
-
固定磁盘
-
可移动存储介质
程序的装入与链接:
-
编译:
-
链接:
-
静态链接方式:
-
装入时动态链接:
-
运行时动态链接:
-
-
装入:
-
绝对装入方式:仅适合运行在单道程序环境
-
可重定位装入方式:程序中的其他地址是相对于起始地址计算的
-
动态运行时的装入方式:允许程序在内存中移动位置
-
连续分配存储管理方式:程序装入内存,必须为其分配一定大小的内存空间
连续分配方式分为四类:
-
单一连续分配:单道程序环境下,内存分为系统区和用户区两部分,用户区内存全部由当前程序独占
-
固定分区分配:多道程序环境下,先将内存分成若干固定大小的区域,建立分区使用表,装入作业时从表中检索出符合的分区
-
划分分区的方法:
-
分区大小相等
-
分区大小不等
-
-
-
动态分区分配:根据进程需要,动态分配内存空间。涉及所用的数据结构,分区分配算法和分区的分配与回收
-
动态分区分配中的数据结构:
-
空闲分区表
-
空闲分区链
-
-
分区的分配与回收
-
动态分区分配算法:
-
基于顺序搜索的动态分区分配算法:比较适合不太大的系统
-
首次适应算法
-
循环首次适应算法
-
最佳适应算法
-
最坏适应算法
-
-
基于索引搜索的动态分区分配算法:大中型系统采用
-
快速适应算法:又称分类搜索法,分成多个空闲分区链表,每个分区链中的分区大小相同
-
优点:查找效率高; 缺点:为了有效合并分区,在分区归还主存时算法复杂,另外该算法分配空闲分区以进程为单位。
-
-
伙伴系统:将空闲分区分类,若长度n的的分区没有,则将n+1长度的其中一个分区等分,其中一份用于分配,另一份进入分区大小为2^n的空闲分区链表
-
哈希算法:构造一张以空闲分区大小为关键字的哈希表,该表的每一个表项纪录对应一个空闲分区链表的表头指针
-
-
-
-
动态可重定位分区分配算法:该算法与动态分区分配算法基本相同,差别在于增加了拼接过程
-
紧凑(拼接):将内存中的作业进行移动,把分散的空闲碎片分区拼接成大分区
-
动态重定位:
-
对换:
对换类型:
-
整体对换:中程调度实际上就是存储器的对换功能
-
页面(分段)对换
进程的换出:
-
选择被换出的进程:首先选择处于阻塞或睡眠状态并且优先级最低的进程,有的系统中,为了防止优先级低的进程刚换入又被换出,还需考虑进程在内存的驻留时间
-
进程换出过程:只能换出非共享的程序和数据段。
-
先申请对换空间
-
申请成功,启动磁盘,将进程的程序和数据传送到磁盘的兑换区,若成功进行,便可回收该进程所占用的内存空间,并对该进程的PCB和内存分配表等数据结构做相应的修改
-
进程的换入:
-
查看PCB集合,找出就绪状态但已换出的进程。
-
当存在很多这样的进程,则选择换出时间最久的进程作为换入进程,为他申请内存,若成功,则直接将进程从外存调入内存
-
若失败则先将某些进程换出,在换入
进程对换时机:由于对换进程需要很多时间,因此在处理机正常运行时,并不启动兑换程序,但如果发现许多进程在运行时经常发生缺页且显现出内存紧张的情况才启动对换程序,如果发现所有进程的缺页率都已明显减少,而 系统的吞吐量已下降时,则可暂停运行对换程序。
离散分配存储管理方式:连续分配会产生许多碎片,虽然“紧凑”可拼接碎片,但开销很大,所以离散分配方式诞生
-
分页存储管理方式:将用户程序的地址空间分为若干个固定大小的区域,称为页,典型的页面大小为1KB,相应的内存空间氛围若干物理块,页与块的大小相同
-
分段存储管理方式:为了满足用户要求而形成的存储管理方式。把用户程序的地址空间分为若干个大小不同的段
-
段页式存储管理方式:结合两者有点,目前应用较广泛
分页管理的基本方法:
-
页面和物理块:
-
页面碎片:在为进程分配内存的时候,以块为单位,将进程中的若干也分别装入到多个可以不相邻的物理块中。由于进程的最后一页经常装不满,从而形成不可利用的碎片
-
页面大小的选择:通常是2的幂,太大会使页内碎片增大,太小则导致进程也表过程,占用大量内存,且对换效率降低
-
地址结构:【页号P, 页内位移量W】
-
页表:系统为每一个进程建立一张页面映像表,页表,保证进程能正确运行
-
-
地址变换机构:地址变换机构的任务实际上只是将逻辑地址中的页号转换为内存中的物理块号
-
具有快表的地址变换机构:由于页表存放在内存,使得CPU每次存取一个数据,都要访问两次内存。第一次访问页表找到对应的物理块,第二次访问内存才真正存取数据
-
快表(联想寄存器TLB)
-
-
访问内存的有效时间:从进程发出制定逻辑地址访问请求,经过地址变换,到在内存中找到对应的实际物理地址单元并取出数据,所花费的总时间,成为内存的有效访问时间。
-
两级和多级页表:
-
反置页表:key为物理块的编号, value为页号和其所隶属的进程的标识符
分段存储管理方式:
-
分段
-
段表
分页与分段的主要区别:
-
页是信息的物理单位。分页仅仅只是系统管理上的需要,分段则是为了能更好的满足用户的需要
-
页的大小固定且由系统决定,而段的长度不固定
-
分页的用户程序地址空间是一维的,而分段系统中,程序员在标志一个地址时,需要给出段名跟段内地址
段页式存储管理方式:分段与分页原理的结合,先将用户程序分段,在把每个段分成页。
地址结构:【段号:段内页号:页内地址】