2013百度校招笔试真题以及解析(内存管理及其优缺点总结)

本文涉及的产品
公网NAT网关,每月750个小时 15CU
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 简述Windows内存管理的几种方式以及优缺点。Windows内存管理方式如下图所示:1、单一连续分配所谓单一,是指内存中只驻留一道作业。

简述Windows内存管理的几种方式以及优缺点。

Windows内存管理方式如下图所示:

这里写图片描述


1、单一连续分配

所谓单一,是指内存中只驻留一道作业。为便于地址转换,把作业连续的存放在内存中,而不是离散的存放。单一连续区的管理思想主要用在早期的单道批处理系统中,采用静态分配的方式,即作业或进程一进入内存,就要等到它结束后才释放内存。

优点: 方法简单,易于实现

缺点: 仅适合于单道程序


2、分区管理

分区管理是把内存划分成若干个大小不等的区域,除操作系统占用一个区域之外,其余由多道环境下的各并发进程共享。分区管理是满足多道程序设计的一种最简单的存储管理方法。

分区管理的基本原理是给每一个内存中的进程划分一块适当大小的存储区,以连续存储各进程的程序和数据,使各进程得以并发执行。

分区管理又分为:
1、固定分区法 fixed partition
2、动态分区法 dynamic partition

固定分区法:
划分的原则由系统操作员或操作系统决定。分区一旦划分结束,在整个执行过程中每个分区的长度和内存的总分区个数将保持不变。

系统对内存的管理和控制通过数据结构--分区说明表进行,该表说明各分区号、分区大小、起始地址和是否是空闲区(分区状态)。

这里写图片描述

优点:管理简单,系统开销小
缺点:不灵活、大程序可能无法装入;利用率低,浪费,内部碎片大

动态分区法:

动态分区使用的数据结构
除了与固定分区法相同的分区说明表之外,动态分区法还把内存中的可用分区单独构成可用分区表或可用分区自由链。

这里写图片描述

动态分区时的分配与回收主要解决3个问题:

1、对于请求表中的要求内存长度,从可用表或自由链中寻找合适的空闲区分配程序;
2、分配空闲区之后,更新可用表或自由链;
3、进程或作业释放内存资源时,和相邻的空闲区进行链接合并,更新可用表或自由链。

最先适应法(地址递增)

这里写图片描述

最佳适应算法

这里写图片描述

最坏适应算法

这里写图片描述


3、页式管理

将各进程的虚拟空间(逻辑地址)划分为若干个长度相等的页,业内管理把内存空间(物理内存)按照页的大小划分为片或者页面,从而实现了离散分配,然后把页式虚拟地址和内存地址建立一一对应的页表,并用相应的硬件地址变换机构来解决离散地址变化问题,(程序加载时,可将任意一页放入内存中任意一个页框而且这些页框不必连续,从而实现了离散分配)页式管理采用请求调页或预调页技术来实现内外存存储器的统一管理,地址结构由两部分构成,页号+页内地址。

这里写图片描述

这里写图片描述

优点:没有外碎片,每个内碎片不超过页的大小。每个程序不必连续存放,这样就便于改变程序占用空间的大小(主要是随着程序运行,动态生成数据增多,所要求的地址空间相应增长)。

缺点:程序仍旧要全部装入内存,要有相应的硬件支持,例如地址转换机构缺页中断的产生和选择淘汰页面都要求有相应的硬件支持,这增加了机器成本,增加了系统开销,并且没有足够的内存,程序就不能执行。


4、段式管理

程序按照内容和过程函数关系分段,每段都有自己的名字,一个用户作业或进程包括的段对应一个二维线性虚拟空间,也就是一个二维虚拟存储器,段式管理程序以段为单位分配内存,然后通过地址映射机构把段式虚拟地址转换为实际内存地址。

这里写图片描述

优点:
1.方便了用户编程。多个逻辑段形成作业这种组织方式,使用户可以清晰地设计和了解程序的结构。

2.便于实现程序和数据的共享与保护。段的逻辑单位性质使分段共享与保护是现实和有意义的。

3.程序的动态链接实现方便。当程序在执行过程中需要某段时,才将其调入内存链接。

4.应用中会发生数据动态增长的情况,而且这种增长是无法预知的,采用分段管理可以很好地解决这个问题。

缺点:
1.段式管理比其他几种方式要求有更多的硬件支持。这提高了机器成本。

2.由于在内存空闲区管理方式上与分区式管理相同,在碎片问题以及为了消除碎片所进行的合并等问题上较分页式管理要差。

3.允许段的动态增长也会给系统管理带来一定的难度和开销。

4.每个段的长度受内存可用区大小的限制。


5、段页式管理

为了实现段页式管理,系统必须为每个作业或进程建立一张段表以管理内存分配和释放,缺段处理。另外由于一个段又被划分为若干个页,每个段必须建立一张页表一把段中的虚页变换成内存中的实际页面。显然与页式管理时相同,页表中也要有相应的缺页中断处理页面保护功能的表项,段页式管理的段式管理与页式管理方案结合而成的所以具有它们两者的优点,但反过来说由于管理软件增加,复杂性和开销也就随之增加了,另外需要的硬件以及占用的内存也有所增加,使得速度降下来。

这里写图片描述


页式和段式的区别?

相似:离散分配,地址映射机构来实现地址转换

(1)段是信息的逻辑单位,它是根据用户的需要划分的,因此段对用户是可见的;页是信息的物理单位,是为了管理主存的方便而划分的,对用户是透明的。

(2)页的大小固定不变,由系统决定。段的大小是不固定的,它由其完成的功能决定。

(3)段式向用户提供的是二维地址空间,页式向用户提供的是一维地址空间,其页号和页内偏移是机器硬件的功能。

(4)由于段是信息的逻辑单位,因此便于存贮保护和信息的共享,页的保护和共享受到限制。


最后来看一道题目吧:

这里写图片描述

这里写图片描述

相关文章
|
1月前
|
安全 Java 开发者
Java 内存模型解析与实践
在Java的世界中,理解内存模型对于编写高效、线程安全的代码至关重要。本文将深入探讨Java内存模型的核心概念,并通过实例分析其对并发编程的影响,旨在为读者提供一套实用的策略和思考方式来优化多线程应用的性能与安全性。
49 0
|
23天前
|
vr&ar
简单易懂的 全景图高清下载方法以及原理简要解析(支持下载建E、720yun、酷雷曼、景站、酷家乐、百度街景原图)
这篇文章介绍了一种简单易懂的全景图高清下载方法,使用在线网站全景管家,支持下载包括建E、720yun、酷雷曼等多个平台的全景图原图,并简要解析了全景图的原理和制作方法。
简单易懂的 全景图高清下载方法以及原理简要解析(支持下载建E、720yun、酷雷曼、景站、酷家乐、百度街景原图)
|
6天前
|
存储 监控 算法
Java中的内存管理与垃圾回收机制解析
本文深入探讨了Java编程语言中的内存管理策略和垃圾回收机制。首先介绍了Java内存模型的基本概念,包括堆、栈以及方法区的划分和各自的功能。进一步详细阐述了垃圾回收的基本原理、常见算法(如标记-清除、复制、标记-整理等),以及如何通过JVM参数调优垃圾回收器的性能。此外,还讨论了Java 9引入的接口变化对垃圾回收的影响,以及如何通过Shenandoah等现代垃圾回收器提升应用性能。最后,提供了一些编写高效Java代码的实践建议,帮助开发者更好地理解和管理Java应用的内存使用。
|
1月前
|
机器学习/深度学习 自然语言处理 算法
【数据挖掘】百度机器学习-数据挖掘-自然语言处理工程师 历史笔试详解
文章汇总并解析了百度机器学习/数据挖掘工程师/自然语言处理工程师历史笔试题目,覆盖了多分类任务激活函数、TCP首部确认号字段、GMM-HMM模型、朴素贝叶斯模型、SGD随机梯度下降法、随机森林算法、强连通图、红黑树和完全二叉树的高度、最长公共前后缀、冒泡排序比较次数、C4.5属性划分标准、语言模型类型、分词算法、贝叶斯决策理论、样本信息熵、数据降维方法、分箱方法、物理地址计算、分时系统响应时间分析、小顶堆删除调整等多个知识点。
31 1
【数据挖掘】百度机器学习-数据挖掘-自然语言处理工程师 历史笔试详解
|
7天前
|
监控 算法 数据可视化
深入解析Android应用开发中的高效内存管理策略在移动应用开发领域,Android平台因其开放性和灵活性备受开发者青睐。然而,随之而来的是内存管理的复杂性,这对开发者提出了更高的要求。高效的内存管理不仅能够提升应用的性能,还能有效避免因内存泄漏导致的应用崩溃。本文将探讨Android应用开发中的内存管理问题,并提供一系列实用的优化策略,帮助开发者打造更稳定、更高效的应用。
在Android开发中,内存管理是一个绕不开的话题。良好的内存管理机制不仅可以提高应用的运行效率,还能有效预防内存泄漏和过度消耗,从而延长电池寿命并提升用户体验。本文从Android内存管理的基本原理出发,详细讨论了几种常见的内存管理技巧,包括内存泄漏的检测与修复、内存分配与回收的优化方法,以及如何通过合理的编程习惯减少内存开销。通过对这些内容的阐述,旨在为Android开发者提供一套系统化的内存优化指南,助力开发出更加流畅稳定的应用。
19 0
|
1月前
|
机器学习/深度学习 自然语言处理 算法
【数据挖掘】百度机器学习-数据挖掘-自然语言处理工程师 2023届校招笔试详解
百度2023届校招机器学习/数据挖掘/自然语言处理工程师笔试的题目详解
43 1
|
1月前
|
分布式计算 并行计算 大数据
【数据挖掘】百度2015大数据云计算研发笔试卷
百度2015年大数据云计算研发笔试卷的题目总结,涵盖了Hadoop、Spark、MPI计算框架特点、TCP连接建立过程、数组最大和问题、二分查找实现以及灯泡开关问题,提供了部分题目的解析和伪代码。
43 1
|
1月前
|
算法 程序员
理解操作系统内存管理:页面置换算法全解析
大家好,我是小米,热爱分享技术的大哥哥!今天聊的是操作系统中的页面置换算法。它解决的是内存满载时,如何选择合适的页面移出以腾出空间的问题。主要有三种算法:FIFO(先进先出),简单但性能不佳;LRU(最近最久未使用),考虑时间局部性,性能较好但实现较复杂;OPT(最佳置换),理论上最优但无法实际应用。这些算法各有千秋,在实际应用中需根据场景选择最合适的方案。希望这能帮大家更好地理解内存管理的核心机制!
72 2
|
2月前
|
缓存 安全 算法
Java内存模型深度解析与实践应用
本文深入探讨Java内存模型(JMM)的核心原理,揭示其在并发编程中的关键作用。通过分析内存屏障、happens-before原则及线程间的通信机制,阐释了JMM如何确保跨线程操作的有序性和可见性。同时,结合实例代码,展示了在高并发场景下如何有效利用JMM进行优化,避免常见的并发问题,如数据竞争和内存泄漏。文章还讨论了JVM的垃圾回收机制,以及它对应用程序性能的影响,提供了针对性的调优建议。最后,总结了JMM的最佳实践,旨在帮助开发人员构建更高效、稳定的Java应用。
|
2月前
|
安全 Java 编译器
Java内存模型深度解析
【7月更文挑战第23天】在探索Java的高效与稳定性之谜时,我们不可避免地要深入其核心——Java内存模型(JMM)。本文将揭开JMM的神秘面纱,从基本概念到底层实现机制,再到并发编程中的应用实践,全面剖析这一确保Java程序正确性的基石。通过理解JMM的设计哲学和运作原理,开发者能够更好地编写出既高效又线程安全的代码,避免那些隐藏在多线程环境下的陷阱。

推荐镜像

更多