个人认为,学习操作系统一定要多看多记多整理,在这里我只是以自己的经验给大家整理一下,希望大家可以自己学会整理,我们的作为参考好了。接下来开始正题吧。
在这之前,有想了解分页的小伙伴可以戳这里:
一、分段存储管理的引入
分页管理的方法,提高内存的利用率,但是对于对程序员是透明的;分段管理的方法,满足了程序员在编程和使用上的要求,适应软件工程开发上的要求。
1.分段管理的引入主要有以下几个特点:
(1)方便编程按逻辑关系划分段:有独立的段名,各段的逻辑地址均从0开始。程序通过分段(segmentation)划分为多个模块,如代码段、数据段、共享段。满足了程序员在编程和使用上的要求
(2)分段共享:可以按段为单位来进行共享;分页不易于实现共享。(3)分段保护:可以针对不同类型的段采取不同的保护措施(4)动态链接:进程开始运行时,只装入主模块,运行中需要哪段再装入、链接。(5)动态增长:如数据段根据运行需要可能会增大。
2.分段管理的优缺点:
优点:
(1)没有内碎片,外碎片可以通过内存紧凑来消除。便于改变进程占用空间的大小。
(2)分段管理按逻辑关系分段方便程序员利用编程
缺点:基本分段管理要求进程全部装入内存。
二、段式管理的数据结构
1.各类型段表
进程段表:每个进程一张段表,描述组成进程地址空间的各段在内存的起始地址(段基址-base address)及段长。
系统段表:描述系统内所有占用段的使用情况。
空闲段表:描述内存中所有空闲段,可以结合到系统段表中。
2.逻辑地址结构
逻辑地址由段号和段内地址组成。
例:逻辑地址长32位,后16位代表段内地址,每段64K,前16位代表段号,有64K个不同的逻辑段。逻辑段的***个数以及每个段的***长度由机器硬件决定,比如后半部分17,前15,则每个段***可达128K,不同段最多为32K
3.地址变换机构
段式存储管理,逻辑地址到物理地址的映射与页式存储管理类似。
首先逻辑地址分为段号与段内地址。段号对应一个段表(需要段表寄存器的越界中断判断),根据段表找段的段基址,将其与段内地址结合,便得到物理地址。
三、分页和分段的主要区别
(1)页是物理单位,而段是逻辑单位。分页是出于系统管理的需要,分段是出于用户应用的需要。因此,一条指令或一个操作数可能会跨越两个页的分界处,而不会跨越两个段的分界处。
(2)页大小是系统固定的,而段大小则通常不固定。
(3)地址空间:分页是一维的,程序员只需用一个记忆符,即可表示一个地址;而分段是二维的,程序员在标识一个地址时,既要给出段名,又需给出段内地址。
(4)通常段比页大,因而段表比页表短,可以缩短查找时间,提高访问速度。
(5)分段比分页系统更容易共享代码。