两级页表 两级页表单级页表存在的问题 根据程序局部性原理可知,很多时候,进程在一段时间内只需要访问某几个页面就可以正常运行了。因此没有必要让整个页表都常驻内存。 如何解决单级页表的问题 把页表再分页并离散存储,然后再建立一张页表记录页表各个部分的存放位置,称为页目录表,或称外层页表,或称顶层页表 两级页表的原理、地址结构 如何实现地址变换 需要注意的几个细节 总结 2023-05-14 操作系统 > 第三章 > 内存管理概念
具有快表的地址变换机构 具有快表的地址变换机构什么是快表快表,又称联想寄存器(TLB, translation lookaside buffer ),是一种访问速度比内存快很多的高速缓存(TLB不是内存!),用来存放最近访问的页表项的副本,可以加速地址变换的速度。与此对应,内存中的页表常称为慢表。 引入快表过后的地址变换过程 程序局部性原理 总结 2023-05-14 操作系统 > 第三章 > 内存管理概念
基本分页存储管理的基本概念 基本分页存储管理的基本概念什么是“地址空间” 什么是分页存储 重要的数据结构–页表 每个页表占多少个字节 如何实现地址的转换 如何确定一个逻辑地址对应的页号、页内偏移量 为何页面大小要取2的整数次幂 逻辑地址结构 总结 2023-05-14 操作系统 > 第三章 > 内存管理概念
动态分区分配算法 动态分区分配算法首次适应算法 算法思想:每次都从低地址开始查找,找到第一个能满足大小的空闲分区。 如何实现:空闲分区以地址递增的次序排列。每次分配内存时顺序查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区 最佳适应算法 算法思想:由于动态分区分配是一种连续分配方式,为各进程分配的空间必须是连续的一整片区域。因此为了保证当“大进程”到来时能有连续的大片空间,可以尽可能多地留下大片 2023-05-14 操作系统 > 第三章 > 内存管理概念
连续分配管理方式 连续分配管理方式单一连续分配方式 固定分区分配 动态分区算法 动态分区分配又称为可变分区分配。这种分配方式不会预先划分内存分区,而是在进程装入内存时,根据进程的大小动态地建立分区,并使分区的大小正好适合进程的需要。因此系统分区的大小和数目是可变的。(eg:假设某计算机内存大小为 64MB,系统区 8MB,用户区共 56 MB…) 需要考虑的问题: 系统要用什么样的数据结构记录内存的使用情况? 当很 2023-05-14 操作系统 > 第三章 > 内存管理概念
覆盖与交换 覆盖与交换覆盖技术 覆盖的思想:由于程序运行时并非任何时候都要访问程序及数据的各个部分(尤其是大程序),因此可把用户空间分成一个固定区和若干覆盖区。将经常活跃的部分放在固定区,其余部分按调用关系分段。首先将那些即将要访问的段放入覆盖区,其他段放在外存中,在需要调用前,系统再将其调入覆盖区,替换覆盖区中原有的段。 覆盖的特点:打破了必须将一个进程的全部信息装入主存后才能运行的限制,但当同时运行程序的 2023-05-14 操作系统 > 第三章 > 内存管理概念
内存管理的概念 内存管理的概念内存空间的分配和回收 由操作系统完成主存储器空间的分配和管理,使程序员摆脱存储分配的麻烦,提高编程效率。 内存空间的扩展 利用虚拟存储技术或自动覆盖技术,从逻辑上扩充内存。 地址转换 为了使编程更方便,程序员写程序时应该只需要关注指令、数据的逻辑地址。而逻辑地址到物理地址的转换(这个过程称为地址重定位)应该由操作系统负责,这样就保证了程序员写程序时不需要关注物理内存的实际情况。 2023-05-14 操作系统 > 第三章 > 内存管理概念
内存的基础知识 内存的基础知识什么是内存?有何作用? 内存可存放数据。程序执行前需要先存放到内存中才能被CPU处理–缓和CPU与硬盘之间的速度矛盾。 几个常用的数量单位 指令的工作原理 装入的三种方式–绝对装入 在编译时,如果知道程序将放到内存中的哪个位置,编译程序将产生绝对地址的目标代码。装入程序按照装入模块中的地址,将程序和数据装入内存。 绝对装入只适用于单道程序环境。 装入的三种方式–可重定位装入 静态 2023-05-14 操作系统 > 第三章 > 内存管理概念
死锁 死锁死锁的概念死锁、饥饿、死循环的区别 死锁产生的必要条件 什么时候会发生死锁 死锁处理的策略 死锁的处理策略–预防死锁破坏互斥条件 并不是所有的资源都可以改造成可共享使用的资源。并且为了系统安全,很多地方还必须保护这种互斥性。因此,很多时候都无法破坏互斥条件。 破坏不剥夺条件 破坏请求和保持条件 可以采用静态分配方法,即进程在运行前一次申请完它所需要的全部资源,在它的资源未满足前,不让它投入运 2023-05-13 操作系统 > 第二章