操作系统

您所在的位置:网站首页 页面换出 操作系统

操作系统

2024-06-10 10:48| 来源: 网络整理| 查看: 265

一、知识点

1、交换技术

2、编译链接与装入,3种装入方式(2种重定位技术与绝对装入)

应用程序从用户编写的源文件到内存中执行的进程,大致分为3个阶段:

首先,经过编译程序(Compiler)将源代码编译为若干个目标模块(Object Module);其次,通过链接程序(Linker)将编译好的目标模块以及所需的库函数链接在一起,形成完整的装入模块(LoadModule);最后,通过装入程序(Loader)将这些装入模块装入内存并执行。简单来说,从源程序到执行的进程,经历了编译、链接、装入三个步骤。

注:

对程序设计者来说,数据的存放地址由数据名称决定,称为名地址或符号名地址,源程序的地址空间称为名空间或符号名空间。源程序经过编译之后得到目标代码,由于编译程序无法得知代码驻留在内存中的实际位置(即物理地址),一般总是从0号单元开始编址,并顺序分配给所有的地址单元,这些都不是真实的内存地址,因此称为相对地址或者虚拟地址。一个完整的程序可以由多个模块构成,这些模块都是从0号单元开始编址。当链接程序将多个模块链接为装入模块时,链接程序会按照各个模块的相对地址将其地址构成统一的从0号单元开始编址的相对地址。当装入程序将可执行代码装入内存时,程序的逻辑地址与程序在内存的实际地址(物理地址)通常不同,这就需要通过地址转换将逻辑地址转换为物理地址,这个过程叫作重定位。

静态地址重定位:即在程序装入内存的过程中完成,是指在程序开始运行前,程序中的各个地址有关的项均已完成重定位,地址变换通常是在装入时一次完成的,以后不再改变,故成为静态重定位。

优点:无需硬件支持

缺点:1)程序重定位之后就不能在内存中搬动了;2)要求程序的存储空间是连续的,不能把程序放在若干个不连续的区域中。

动态地址重定位:不是在程序执行之前而是在程序执行过程中进行地址重定位。更确切的说,是在每次访问内存单元前才进行地址变换。动态重定位可使装配模块不加任何修改而装入内存,但是它需要硬件一定位寄存器的支持。

优点:1)目标模块装入内存时无需任何修改,因而装入之后再搬迁也不会影响其正确执行,这对于存储器紧缩、解决碎片问题是极其有利的;2)一个程序由若干个相对独立的目标模块组成时,每个目标模块各装入一个存储区域,这些存储区域可以不是顺序相邻的,只要各个模块有自己对应的定位寄存器就行。

缺点:需要硬件支持。

页式存储管理是动态重定位。

3、紧凑/拼凑技术 与 拼接技术

4、对外存对换区的管理以(提高换入、换出速度)为主要目标。提高存储空间的利用率是次要因素。

5、

为何页面大小要取 2 的整数幂?

①逻辑地址的拆分更加迅速 —— 如果每个页面大小为 2^ K B , 用 二进制数表示逻辑地址, 则 末尾 K 位 即为页内偏移量, 其余部分就是页号。 因此, 如果让每个页面的大小为 2 的整数 幂 , 计算机硬件就可以很方便地得出一个逻辑地址对应的页号和页内偏移量, 而无需进行除法运算, 从而提升了运行速度。②物理地址的计算更加迅速 —— 根据逻辑地址得到页号, 根据页号查询页表从而找到页面存放的内存块号, 将 二进制表示的内存块号和页内偏移量拼接起来, 就可以得到最终的物理地址。

6、TLB 和 普通 Cache 的 区别 ——TLB 中只有页表项的副本, 而普通 Cache 中可能会有其他各 种 数据 的副本。

7、覆盖技术现在常用于嵌入式系统和某些硬实时系统。

8、存储管理地址变换

页表是记录逻辑空间(虚拟内存)中每一页在内存中对应的物理块号。但并非每一页逻辑空间都会实际对应着一个物理块,只有实际驻留在物理内存空间中的页才会对应着物理块。一个进程对应一张页表。进程的每一页对应一个页表项。每个页表项由页号和块号组成。页表记录进程页面和实际存放的内存块之间的对应关系。每个页表项的长度都是相同的,页号是隐含的。在多个进程并发执行时,通常页表是需要一直驻留在物理内存中的(多级页表只需一级页表驻留),在系统中只设置一个页表寄存器(PTR),在其中存放页表在内存的起始地址和页表的长度。进程在未执行时,页表的起址和页表长度放在本进程的进程控制块(PCB)中,当该进程被调度时,操作系统内核会把它们放在页表寄存器中。每个进程都有一个单独的逻辑地址,有一张属于自己的页表。开启快表(TLB)时,若快表命中,则只需一次访存;若未命中,需两次访存。关闭快表(TLB)后,无论如何都需要两次访存。页表项的内容 物理页框号:虚拟页面存放的物理页框位置合法位(有效位、状态位):表示该页面是否已经调入内存。用于判断是否发生缺页(页故障)修改位(脏位):表示该页面是否被修改过。当淘汰页面时,通过修改位决定是否需要把页面写回外存保护码(保护位):表示该页面的读、写权限。如:用于存储常量的页面,为“读”权限。引用位(访问位):修改未和访问位用于页面调度,如在 Clock调度算法中,用引用位表示该页面最近是否被访问过

9、

采用段式存储管理时,一个程序如何分段是在 用户编程 时决定的。采用页式存储管理时,一个程序如何分页是在 装入作业/装入程序 时决定的。

10、

段页式存储管理汲取了页式管理和段式管理的长处,其实现原理结合了页式和段式管理的基本思想,即用分段方法来分配和管理用户地址空间,用分页方法来管理物理存储空间。分段对于程序员来说,一维的用户地址空间分段之后变成二维,是一种“用户地址空间”的管理方式。分页对于程序员来说,“用户地址空间”是一维的,和“连续分配”并无区别,而物理上,存储空间被划分为一个个页面,因此分页是管理物理存储空间的方法。

11、

实现分页、分段和段页式存储管理需要特定的数据结构支持,如页表。段表等,为了提高性能,还需要硬件提供快存和地址加法器等,代价高。而分区存储管理时满足多道程序设计的最简单的存储管理方案,特别适合嵌入式等微型设备,只需要重定位寄存器与界地址寄存器。

12、

CPU与Cache之间的数据交换以字为单位。Cache与主存之间的数据交换以Cache行(物理块)为单位。当线程要访问的变量在CPU的缓存里没有找到时,就会去访问主内存,然后根据程序运行的局部性原理,此时就会把主内存中该变量所在的大小为缓存行的内存放入缓存中。主存与外存(假设是磁盘)数据交换单位是磁盘块(扇区,若OS进行了分簇则为簇)CPU对主存储器的访问以字节或字为单位。OS对主存储器的分配,以块(即页)或段为单位  

13、虚拟内存管理

基于局部性原理, 在程序装入时,可以将程序中很快 会用到的部分装入内存, 暂时用不到的部分留在外存,就可以让程序开始执行。在程序执行过程中, 当所访问的信息不在内存时, 由 操作系统 负责将所需信息从外存调入内存, 然后继续执行程序。若内存空间不够, 由操作系统负责将内存中暂时用不 到的信息换出到外存。在操作系统的管理下, 在用户看来似乎 有一个 比 实 际内存大得多的内存, 这就是虚拟内存。

实现虚拟内存管理必须有相应硬件的支持。在虚拟存储器中,作业在运行前,不必全部装入内存,且在运行过程中也不必一直驻留内存。在非虚拟存储器中,作业必须全部装入内存且在运行过程中也一直驻留内存。操作系统虚拟性的一个体现 , 实 际 的 物 理内存大小没有变 , 只是在逻辑上进行了扩充。

14、虚拟内存的最大容量 和 逻辑容量(实际容量)

虚拟内存的最大容量是由CPU的寻址范围决定的,跟地址寄存器或者说CPU的寻址范围有关。虚拟内存的实际容量 = min ( 内存 和 外存容量之和 , CPU 寻址范围 )如:某计算机地址结构为 32 位 ,按字节编址 ,内存大小为 512MB ,外存大小为 2GB 。 则 虚拟内存的 最大容量为 2^32 B = 4GB虚拟内存的实际容量 = min ( 2^32 B, 512MB+2GB) = 2GB+512MB最大容量的作用:1.为了扩展,比如电脑运行内存不够了,在最大容量允许的情况下可以物理扩容。 2.设备也占用部分地址空间,也就是最大容量要大于实际容量,才有多余的地址空间分配给IO设备。

15、请求分页地址变换

补充细节 :

① 只有“写指令” 才需要修改 “修改位” 。并且 ,一般来说只需修改快表中的数据, 只有要将快表项 删除 时才需要写回内存中的慢表。 这样可以减少访存次数。② 和普通的中断处理一 样 ,缺页中断处理依然需要保留 CPU 现场 。③ 需要用某种 “页面置换算法” 来决定一个换出页面。④ 换入/换出页面 都需要 启动 慢速 的 I/O 操作,可见 ,如果换入/换出 太频繁 , 会有很大的 开销 。⑤ 页面调入内存后, 需要修改慢表, 同时也需要将表项复制到 快表 中。

在虚拟分页存储管理系统中,若进程访问的页面不在主存中,且主存中没有可用的空闲帧时,系统正确的处理顺序为 缺页中断→决定淘汰页→页面调出→页面调入。(没有快表机构)

在 具有快表机构 的请求分页系统中, 访问一个逻辑地址时,若发生缺页, 则地址变换步骤是:

查快表 ( 未命中 ) —— 查慢表 ( 发现未调入内存 ) —— 调页 ( 调入的页面对应的表项会直接加入 快表 ) —— 查快表 ( 命中 ) —— 访问目标内存单元

请求分页存储管理与基本分页存储管理的主要区别:

在程序执行过程中, 当所访问的信息不在内存时, 由操作系统负责将所需信息从外存调入内存, 然 后继续执行程序。若内存空间不够, 由操作系统负责将内存中暂时用不到的信息换出到外存。

16、页面置换算法

拓展:

除了FIFO之外,其他算法都不会导致Belady异常,因此当系统采用其他页面淘汰算法时,当可供分配的页帧数增加时,缺页次数只可能减少或保持不变,不可能增加。导致LRU算法实现起来耗费高的原因是(需要对所有的页进行排序 ) 而不是需要硬件的特殊支持。LRU算法需要对所有页最近一次被访问的随时间进行记录,为此需要在页表项添加LRU位,需要硬件的特殊支持可以看做是“耗费高”这一结果,而不是原因。只要给进程分配的页框数不够,采用任何一种算法都依然可能发生抖动。

17、

驻留集: 指请求分页存储管理中 给进程 分配的内存块 的集合。

工作集: 指在某段时间间隔里,进程实际访问页面 的集合。

工作集大小可能小于窗口尺寸 , 实际应用中, 操作系统可以统计进程的工作集大小, 根据工作集大小给进程分配若干内存块。如:窗口尺寸为 5 , 经过一段时间的监测发现某进程的工作集最大为 3 , 那么说明该进程有很好 的局部性, 可以给这个进程分配 3 个以 上的内存块即可满足进程的运行需要。一般来说 , 驻留集大小不能小于工作集大小, 否则进程运行过程中将频繁缺页。

18、

缺页次数最理想的情况是 有n个不同的页号,每个页号肯定且仅发生缺页一次,那么下限为n;(前提 驻留集


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3