内存零头

操作系统在分配内存时,有时候会产生一些空闲但是无法被正常使用的内存区域,这些就是内存碎片,或者称为内存零头,这些内存零头一共分为两类:内零头和外零头。

内零头是指进程在向操作系统请求内存分配时,系统满足了进程所需要的内存需求后,还额外还多分了一些内存给该进程,也就是说额外多出来的这部分内存归该进程所有,其他进程是无法访问的

外零头是指内存中存在着一些空闲的内存区域,这些内存区域虽然不归任何进程所有,但是因为内存区域太小,无法满足其他进程所申请的内存大小而形成的内存零头

页式存储管理是以页为单位(页面的大小由系统确定,且大小是固定的)向进程分配内存的,例如:假设内存总共有100K,分为10页,每页大小为10K。现在进程A提出申请56K内存,因为页式存储管理是以页为单位进程内存分配的,所以系统会向进程A提供6个页面,也就是60K的内存空间,那么在最后一页中进程只使用了6K,从而多出了4K的内存碎片,但是这4K的内存碎片系统已经分配给进程A了,其他进程是无法再访问这些内存区域的,这种内存碎片就是内零头

段式存储管理是段(段的大小是程序逻辑确定,且大小不是固定的)为单位向进程进行内存分配的,进程申请多少内存,系统就给进程分配多少内存,这样就不会产生内零头,但是段式分配会产生外零头

例如:假设内存总的大小为100K,现在进程A向系统申请60K的内存,系统在满足了进程A的内存申请要求后,还剩下40K的空闲内存区域;这时如果进程B向系统申请50K的内存区域,而系统只剩下了40K的内存区域,虽然这40K的内存区域不归任何进程所有,但是因为大小无法满足进程B的要求,所以也无法分配给进程B,这样就产生了外零头。请求段式存储管理是在段式存储管理的基础上增加了请求调段功能和段置换功能。

### 内存管理的概念 内存管理是指操作系统如何有效地管理和分配计算机系统的物理内存资源以及虚拟地址空间的技术和方法。其主要目标是优化内存的使用效率,支持多任务处理,并提供给应用程序足够的逻辑存储容量[^1]。 #### 虚拟内存的作用 虚拟内存是一种重要的内存管理机制,它允许操作系统的运行环境超越实际物理内存的大小限制。通过将磁盘上的部分区域作为扩展存储区来模拟额外的RAM,从而使得进程能够访问远大于实际可用物理内存的空间。 --- ### 实现方式 #### 非连续分配存储管理 非连续分配存储管理的核心理念在于打破传统连续分配模式中的局限性,允许多个不相邻的内存块被组合起来供单个进程使用。这种管理模式主要包括三种基础形式: - **基本分段** 基本分段技术将程序划分为若干具有独立意义的部分(称为段),每一段可以放置到不同的内存位置中。这种方法有助于解决外部碎片化问题并简化编程模型[^2]。 - **基本分页** 在基本分页方案下,整个内存被分割成固定大小的小单元——页面(Page),而相应的用户进程也被切分成同样尺寸的数据块(Page Frame)。这些数据块可以根据需要分布于任意可利用的空闲帧之中。 - **基本段页结合** 进一步融合了上述两种策略的优点,既保留了分段带来的模块性和灵活性优势,又继承了分页消除外零头的能力。具体而言,先按照功能划分出各个段之后再针对每一个单独段实施内部进一步细分成为更小粒度级别的页结构。 #### 请求调页/请求调段机制下的虚拟内存管理 基于前述非连续分配理论之上构建起了更为高级别的动态加载型虚拟内存管理系统。当某个特定页面或者片段尚未驻留在主存当中却正准备被执行时,则触发缺页中断事件;随后由专门负责此事务的操作子系统完成相应文件从辅助储存设备向真实工作区内搬移的动作过程。 以下是简单的伪代码展示如何检测是否存在所需页面,并在缺失情况下执行替换算法: ```c++ if (page_not_in_memory(page_number)) { trigger_page_fault(); load_page_from_disk_to_ram(page_number); } access_data_at_address(compute_physical_address(page_number, offset)); ``` --- ### 总结 综上所述,现代计算环境中所采用的各种复杂精妙的设计思路均围绕着提升整体性能指标展开探索实践。无论是静态规划还是实时调整方面都体现了高度智能化水平特征,同时也充分考虑到了安全性保障要素等方面的要求[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值