浅谈操作系统——分段技术基础

146 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第8天,点击查看活动详情

分段存储管理基本思想

程序地址空间

  • 按照程序自身逻辑关系划分成若干个段,每个段都有一个段名和段号
  • 段号从0开始
  • 每段段内从0开始编址,段内地址连续

逻辑地址

段号段内地址

内存地址空间

  • 内存空间被动态的划分为若干个长度不相同的区域,称为物理段;
  • 每个物理段由起始地址和长度确定。

内存分配

  • 以段为单位分配内存,每一个段在内存中占据连续空间;
  • 各段之间可以不连续存放。

image.png 逻辑地址 image.png

空闲块管理

空闲块表(列)

内存分配算法

  1. 首次
  2. 最佳
  3. 最坏

段地址映射

  1. 地址映射数据结构
  • 每一进程有个段表,它的每一个段在段表中占用一个表目;
  • 段表一般包括有段的首址、段的长度和存取状态等信息。
  • 段表首址指针和段表的长度存放在进程PCB,当前进程的还需装入寄存器。

image.png

段地址映射由硬件地址变换机构完成

image.png

段地址映射过程为:

  • 程序地址送入虚地址寄存器VR中;
  • 取出段号S和段内位移W;
  • 根据段表首址指针找到段表,查找段号为的表目,得到该段的首地址;
  • 把段首地址与段内位移相加,形成内存地址送入MR中,并以此地址访问内存。

存储保护

  • 防止越界访问
    • 段号、段内地址
  • 防止越权访问

快表

和页地址变换一样,段地址变换中,也有两次访问内存的问题,为了加快访问内存的速度也可以采用快速存储器来组成快表

分段与分页技术比较

分段与分页主要有以下差别:

  • 页大小是系统固定的,段大小通常不固定。
  • 分页是出于系统管理的需要,分段是出于用户应用的需要。
    • 一条指令或一个操作数可能会跨越两个页的分界处,而不会跨越两个段的分界处。
  • 逻辑地址表示
    • 分页是一维的,各个模块在链接时必须组织成同一个地址空间;
    • 分段是二维的,各个模块在链接时可以每个段组织成一个地址空间。
  • 通常段比页大,因而段表比页表短,可以缩短查找时间,提高访问速度。

这一节是段的入门,要打好基础呀