目录
- 前言
- [1. 基本知识](#1. 基本知识)
- [2. 地址转换](#2. 地址转换)
-
- [2.1 概念](#2.1 概念)
- [2.2 例题](#2.2 例题)
前言
此题在考研408或者软考中 都很常见
1. 基本知识
段式存储(Segmented Memory) 是一种计算机操作系统中的存储管理方式,它将物理内存划分为不同的段(segments),每个段具有不同的大小和属性。每个段可以用来存储不同类型的数据或程序,这种方式有助于提高内存的管理和保护。
下面是段式存储的一些关键概念和特点:
-
段(Segment):物理内存被划分为不同的段,每个段有唯一的标识符(段名或段号),并且可以具有不同的大小。每个段通常用于存储不同类型的数据或程序。
-
段描述符(Segment Descriptor):每个段都有一个相应的段描述符,这个描述符包含了有关段的信息,如段的起始地址、长度、访问权限等。操作系统使用这些描述符来管理和控制段的访问。
-
段选择子(Segment Selector):在实际的内存访问中,程序使用段选择子来标识要访问的段。段选择子包括段号和偏移量,用于计算访问物理内存中的具体位置。
-
段保护(Segment Protection):每个段可以具有不同的访问权限,例如读取、写入、执行等。这有助于操作系统实施存储保护,以防止程序访问未授权的内存区域。
概念 | 优点 | 缺点 |
---|---|---|
段式存储 | 1.更灵活的内存管理:允许不同大小和类型的段,有助于更好地适应不同的应用程序需求。 2.存储保护:可以实现不同级别的内存保护,以增加系统的稳定性和安全性。 3.更容易的共享和分离:不同程序或模块可以拥有自己的段,从而更容易进行内存共享或分离。 | 1.内存碎片:由于不同大小的段,可能会导致内存碎片化,降低内存利用率。 2.复杂性:管理多个段和描述符增加了内核的复杂性。 |
段式存储通常与其他内存管理技术,如分页式存储结合使用,以更好地满足不同应用的需求。这种混合内存管理方式被称为分段分页式内存管理,它克服了段式内存管理的一些限制,同时提供了更好的内存管理和保护。
具体操作流程:
当程序需要访问内存中的数据时,它首先会提供一个段选择子,这个选择子用于标识要访问的段。然后,操作系统会使用这个段选择子来查找段表,找到对应的段描述符。从段描述符中可以获取以下信息:
-
段的起始地址:这是段在物理内存中的起始位置。程序使用这个地址加上段内的偏移量来计算要访问的内存位置。
-
段的长度:这指定了段的大小。程序必须确保它的内存访问不会超出这个长度范围。
-
访问权限:段描述符包括了有关段的访问权限信息,如读取、写入、执行等。程序在访问内存时必须符合这些权限,否则访问将被拒绝。
至于访问内存的次数,这取决于程序的具体操作。在段式存储中,程序需要执行以下操作:
- 通过段选择子查找段描述符,这通常需要一次内存访问。
- 从段描述符中获取段的起始地址,长度和访问权限,这也需要一次内存访问。
- 使用段起始地址和偏移量来计算要访问的内存位置。
- 执行实际的内存读取或写入操作,这可能需要额外的内存访问。
所以,通常在段式存储中,访问内存需要至少两次内存访问(一次用于获取段描述符,一次用于实际的数据访问)。然而,这只是一个一般性的概念,实际情况可能因操作系统和硬件架构的细节而有所不同。
2. 地址转换
2.1 概念
逻辑地址到物理地址的转换是操作系统内存管理的核心任务。在段式存储和分页式存储这两种不同的内存管理方案中,逻辑地址转换物理地址的基本流程和注意事项略有不同。
一、分段式存储的逻辑地址转换:
基本流程:
- 程序中的指令和数据通常使用逻辑地址进行访问。逻辑地址由两个部分组成:段选择子和偏移量。
- 首先,通过段选择子查找段表,找到相应的段描述符。
- 从段描述符中获取段的起始地址和长度,以及访问权限。
- 将逻辑地址的偏移量与段的起始地址相加,得到物理地址。
注意事项:
- 检查访问权限:在计算物理地址之前,操作系统需要验证访问权限,确保访问不会越界或违反权限。如果访问权限不满足要求,将引发异常。
- 处理段不存在的情况:如果段不存在(即段选择子无效),则会引发段不存在的异常。
- 处理页故障:在某些分段分页式内存管理系统中,物理地址可能需要进一步转换,以访问页表。如果访问的页不在内存中,会引发页故障,需要进行页面置换等操作。
二、分页式存储的逻辑地址转换:
基本流程:
- 程序中的指令和数据使用逻辑地址进行访问,逻辑地址由两个部分组成:页号和页内偏移量。
- 通过页号查找页表,获取对应页的物理页框号。
- 将物理页框号与页内偏移量组合,得到物理地址。
注意事项:
- 页表管理:操作系统需要维护页表,以跟踪逻辑页号到物理页框号的映射关系。这涉及到页表的创建、维护、清除等操作。
- 页故障:如果要访问的页不在内存中,将引发页故障,需要执行页面置换或从磁盘加载页面等操作。
- 页大小问题:页的大小对内存管理和性能有重要影响。较小的页可以减少内部碎片,但可能导致更多的页表项;较大的页可能导致更多的外部碎片,但减少页表项。页大小的选择需要仔细权衡。
不管是分段式存储还是分页式存储,逻辑地址到物理地址的转换是操作系统核心功能之一。这个过程需要确保内存访问的合法性、提供隔离性、确保数据完整性,同时也需要优化性能以减少地址转换的开销。
2.2 例题
假设系统采用段式存储管理方法,进程P的段表如下所示:
段号 | 基地址 | 段长 |
---|---|---|
0 | 1100 | 800 |
1 | 3310 | 50 |
2 | 5000 | 200 |
3 | 4100 | 580 |
4 | 2000 | 100 |
以下逻辑地址不能转换为物理地址的是:
A. (0,790)和(2,88)
B.(1,30)和(3,290)
C.(2,88)和(4,98)
D. (0,810)和(4,120)
解析:
给定段地址(X,Y),X为段号,Y为段内地址
根据X段号,查询段长,
- 如果大于段长,则越界;
- 如果小于段长,则物理地址 = 基地址 + 段内地址