操作系统(十)

段模式(segmentation)是指满足以下3个特征的内存管理模式

(1)将用户程序空间按逻辑划分为几部分,每一部分称为一段(segment),每个段内连续编制,段间则采用不连续编制。这样每个程序的逻辑地址空间是二维编制的。

(2)内存的划分与可变分区相同,但分配单位不同。可变分区以整个程序为单位划分和连续存放(即程序内部是连续存放,但是程序之间并不连续存放)。 

(3)段模式分实存模式和虚存模式两种。如果要求每一个程在开始执行前都必须完整装入内存,则为实段式。否则为虚段式。

从以上段模式可以看出,在段模式中,段即是用户程序逻辑地址空间中的最大连续单位,也是用户程序在内存中存放时的最大连续单位。段的概念并不仅用于段模式,在段页式存储中也有段的概念。就广义而言,段模式的本质定义是用户程序的逻辑地址空间的最大连续单位。但不一定是用户程序在物理内存存放是的最大连续单位。而在段页式模式中,用户进程的内存最大连续空间是页。

段式和页式的区别在于如何不连续,页式是等长的划分,因而是非逻辑的。但是段式是按照进程本身进行划分的。是逻辑的。

一个逻辑地址空间就是多个段的集合,每个段有一个名字和一个长度。地址由段名和段内位移两部分组成(与这个模式相反的是页模式,用户仅说明一个单独的地址,由硬件将该地址划分为一个页号与一个位移,这种划分是程序员看不见的)。通常,段模式下一个进程的地址空间可以包含代码段。数据段和栈段。

 

段模式的实现

通常情况下,段模式下一个进程的地址空间可包含以下不同的段类型:

(1)代码段:包含一个进程的可执行的代码。一个进程通常有若干代码段,代码段按照子程序和函数进行划分。这种段通常被标记为只读,以确保一个进程的程序代码不能被该进程自身或其他进程修改。一个代码段可以在许多进程之共享。例如在一个Linux系统中,可能有很多用户在执行一个vi程序,但是所编辑的数据不同。操作系统将vi执行的代码放在一个代码段中,让这个代码在所有运行vi的进程之间共享。

(2)数据段:存放一个进程执行期间处理的数据。一个进程可包含若干数据段,例如可把全局变量放在一个段中,每个过程和函数的局部变量可分别单独放在一个段中,数组可以放在单独的段中。数据段通常被标为读写。有些系统中规定,数据段不能被其他进程共享,否则就会导致错误或失败。或者是不能被其他进程看到。

(3)栈段:包括进程的栈(stack)该段被标为可读可写,栈段不能与其它进程共享。

(4)共享内存段:可以被其他进程访问的段,或者说可由多个进程读写的段。例如,一个进程可写数据至共享内存段,让别的进程读取数据。一个共享内存段可以被映射到不同进程地址空间的不同虚址上。

(5)其他段类型:略了吧~~:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值