目录
一、概括
二、什么是分段
三、段表
四、地址转换
五、分段和分页的对比
六、总结
一、概括
基本分段存储管理方式是一种操作系统的内存管理方式,采用这种方式,将进程所需的内存分成若干个段,每个段都可以单独进行管理和保护。
具体来说,基本分段存储管理方式将程序所需的内存划分为多个段,例如代码段、数据段、栈段等,并为每个段分配一段连续的内存空间。当程序需要访问某个段时,操作系统将该段所在的物理内存地址映射到程序的逻辑地址空间中,使得程序可以直接访问该段。同时,操作系统还可以通过硬件保护机制,防止程序越界访问其他分段。
基本分段存储管理方式相对于其他内存管理方式,具有以下优点:
-
管理和保护性能好:将内存划分成若干个段可以方便地对每个段进行管理和保护,提高了系统的性能和稳定性。
-
进程间隔离性好:不同进程所占用的内存段是互相独立的,可以有效地隔离不同进程之间的内存空间,提高系统的安全性。
-
空间利用率高:由于每个段可以单独分配内存大小,因此可以更加灵活地利用内存空间,提高内存的利用率。
但是,基本分段存储管理方式也存在一些缺点,例如:
-
内存碎片化:由于每个段的大小是固定的,所以在内存分配和回收过程中容易产生内存碎片,降低了内存利用效率。
-
网络开销大:由于每个段都需要映射到物理内存地址中,因此会产生一定的网络开销,降低了操作系统的运行效率。
因此,在实际应用中,基本分段存储管理方式往往需要和其他内存管理方式结合使用,以达到更好的内存管理效果。
二、什么是分段
1、根据每个程序的自身逻辑来进行划分
2、段内连续,段间不连续
3、由段号(段名)以及段内地址(段内偏移量)所组成
注意:
- 段号的位数决定了每个进程最多可以分几个段
- 段内地址位数决定了每个段的最大长度是多少
4、例子
在上述例子中,段号占了16位,因此该系统中每个进程最多有个段。
段内地址占了16位,因此每个段的最大长度为
三、段表
1、为了找到各个逻辑段在物理内存中的位置,设置段表了来映射逻辑地址。
2、每个段对应一个段表项,其中记录了该段在内存中的起始位置(又称“基址”)和段的长度。
3、每个段表项是相同的。因此段号可以计算,是隐藏的,不占存储空间。
四、地址转换
1、我们有如下例题
2、首先我们观察汇编语言所表达的含义,意思是将D段的A单元的值取出放到寄存器1中
3、将其转换为二进制,2的二进制是红色部分,1024的二进制是黑色部分
4、我们得到的地址是逻辑地址,现在我们要将其转换为物理地址;在执行进程时,我们要调用PCB中的段表寄存器来寻找段表
5、首先,我们通过之前获得的段号2,与寄存器中的段表长度3相比,看它是否越界
6、若未越界,则通过 [ 段表始址+(段号*段表长度) ] 来确定段表所对应的段表项,此时还要再次检查段内地址是否越界;
在此题中 段内地址为1024=1K,而段长为6K,所以未越界,则继续执行。
7、计算物理地址 = 基址 + 段内地址
物理地址:40K+1K=41K
8、流程
五、分段和分页的对比
1、
2、分段跟容易实现信息的共享与保护(两个段表可以同时指向一个地址)
注意:不能被修改的代码称为纯代码或可重入代码(不属于临界资源),这样的代码是可以共享的。可修改的代码是不能共享的(比如,有一个代码段中有很多变量,各进程并发地同时访问可能造成数据不一致)