分段的作用

http://blog.csdn.net/cc_net/article/details/24726287

分段的作用

分页实际是一个纯粹逻辑上的概念,因为实际的程序和内存并没有被真正的分为了不同的页面。而分段则不同,他是一个逻辑实体。一个段中可以是变量,源代码或者堆栈。一般来说每个段中不会包含不同类型的内容。而分段主要有以下几个作用:

  1. 解决编译问题: 前面提到过在编译时地址覆盖的问题,可以通过分段来解决,从而简化编译程序。
  2. 重新编译: 因为不同类型的数据在不同的段中,但其中一个段进行修改后,就不需要所有的段都重新进行编译。
  3. 内存共享: 对内存分段,可以很容易把其中的代码段或数据段共享给其他程序,分页中因为数据代码混合在一个页面中,所以不便于共享。
  4. 安全性: 将内存分为不同的段之后,因为不同段的内容类型不同,所以他们能进行的操作也不同,比如代码段的内容被加载后就不应该允许写的操作,因为这样会改变程序的行为。而在分页系统中,因为一个页不是一个逻辑实体,代码和数据可能混合在一起,无法进行安全上的控制。
  5. 动态链接: 动态链接是指在作业运行之前,并不把几个目标程序段链接起来。要运行时,先将主程序所对应的目标程序装入内存并启动运行,当运行过程中又需要调用某段时,才将该段(目标程序)调入内存并进行链接。可见,动态链接也要求以段作为管理的单位。
  6. 保持兼容性

所以在现在的x86的体系结构中分段内存管理是必选的,而分页管理则是可选的。

时间: 2024-10-24 07:08:24

分段的作用的相关文章

计算机原理学习(7)-- x86-32 CPU和内存管理之分段管理

前言 前一篇我们介绍了内存管理中的分页试内存管理,分页的主要作用就是使得每个进程有一个独立的,完整的内存空间,通过虚拟内存技术,使得程序可以在较小的内存上运行,而进程之间内存空间相互独立,提高了安全性.这一篇将主要介绍内存管理中分段管理,以及两种的结合,也是目前计算机普遍采用的段页式内存管理.这也直接决定了的后面程序的编译,加载以及允许时的内存布局. 1. 内存分段 1.1 为什么分段? 在x86-16体系中,为了解决16位寄存器对20位地址线的寻址问题,引入了分段式内存管理.而CPU则使用CS

在TestCenter中构造ip碎片包

前些日子要使用TestCenter构造udp碎片流量,自己对udp碎片的概念都还没有弄清楚就根据自己的臆想去构造,结果可想而知,后来也是请教了同事才知道怎么构造udp碎片包,如下图: 在ip头部“IPv4 Header”中有Control Flags和Fragment Offset(int)两个字段,只要对这两个字段进行一些设置,并加上UDP Header头部就可以构造出udp碎片的流量了.那么,这是为什么呢? 在ip包头部有标记字段(Flag)和分段偏移(Fragment Offset)两个字

c#中的partial关键字(转)

c#中的partial关键字 Partial: 这是C#2.0的新特性 Partial关键字起到把一个class分段组合作用,能用于多个接口或一个继承 代码片断: namespace Com.TommyLib{    public interface A    {        void A_Fun1();        void A_Fun2();     }} //新建B.cs namespace Com.TommyLib{     public partial class B    {  

table( 表格)以及列表的使用

<p>===============table知识总结===============</p><ol type="A"><li>table即是表格的意思,以table开始以及结束.</li><li>caption标签  是为表格添加标题,不现实在表格范围之内,且只能有一个.</li>  <li>tr代表行,td代表列,th是td的拓展,<b>th标签内的内容会议粗体和居中的样式显示

4.1系统寄存器和系统指令

4.1系统寄存器和系统指令 标志寄存器 内存管理寄存器 GDTR.LDTR.IDRL.TR 用于指定分段内存管理所使用的系统表的基地址. 控制寄存器 CR0 控制处理器操作模式和状态的系统控制标志 CR1 保留不用 CR2 含有导致页错误的线性地址 CR3 含有页目录物理内存基地址,也被称为页目录基地址寄存器PDBR 系统指令 4.2保护模式内存管理 1.80X86对内存中存储数据的寻址方式一般是:段基地址+段内偏移 段基地址:被存放在段寄存器(16位)中的端选择符指定 段内偏移 2.物理内存就

Linux的分段和分页机制

1 基于80x86的Linux分段机制 80386的两种工作模式:80386的工作模式包括实地址模式和虚地址模式(保护模式).Linux主要工作在保护模式下. 在保护模式下,80386虚地址空间可达16K个段,每段大小可变,最大达4GB.逻辑地址到线性地址的转换由80386分段机制管理.段寄存器CS.DS.ES.SS.FS或GS各标识一个段.这些段寄存器作为段选择器,用来选择该段的描述符. 分段逻辑地址到线性地址转换图: Linux对80386的分段机制使用得很有限,因为Linux的设计目标是支

UI第六讲.UISegmentControl的使用,UISliser的使用,UIImageView的使用,UIControl的作用

一.UISegmentedControl的使用(分段控件) UISegmentedControl是iOS中的分段控件. 每个segment都能被点击,相当于集成了若干个button.通常我们会点击不同的segment来切换不同的view. 示例图: 常用方法: 示例代码: 基本的UISegmentControl的用法,同时通过其addtarget/action方法实点击切换view背景色的效果 效果图:点击UISegmentControl的item,切换背景色 二.UISlider的使用(滑块控

OSI参考模型中各层的作用

在OSI参考模型中,从下至上,每一层完成不同的.目标明确的功能. 1.物理层(Physical Layer) 物理层规定了激活.维持.关闭通信端点之间的机械特性.电气特性.功能特性以及过程特性.该层为上层协议提供了一个传输数据的物理媒体. 在这一层,数据的单位称为比特(bit). 属于物理层定义的典型规范代表包括:EIA/TIA RS-232.EIA/TIA RS-449.V.35.RJ-45等. 2.数据链路层(Data Link Layer) 数据链路层在不可靠的物理介质上提供可靠的传输.该

模型树——就是回归树的分段常数预测修改为线性回归 对于非线性回归有较好的预测效果

说完了树回归,再简单的提下模型树,因为树回归每个节点是一些特征和特征值,选取的原则是根据特征方差最小.如果把叶子节点换成分段线性函数,那么就变成了模型树,如(图六)所示: (图六) (图六)中明显是两个直线组成,以X坐标(0.0-0.3)和(0.3-1.0)分成的两个线段.如果我们用两个叶子节点保存两个线性回归模型,就完成了这部分数据的拟合.实现也比较简单,代码如下: [python] view plain copy def linearSolve(dataSet):   #helper fun