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

本文涉及的产品
公网NAT网关,每月750个小时 15CU
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 简述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)由于段是信息的逻辑单位,因此便于存贮保护和信息的共享,页的保护和共享受到限制。


最后来看一道题目吧:

这里写图片描述

这里写图片描述

相关文章
|
29天前
|
存储 缓存 安全
Java内存模型深度解析:从理论到实践####
【10月更文挑战第21天】 本文深入探讨了Java内存模型(JMM)的核心概念与底层机制,通过剖析其设计原理、内存可见性问题及其解决方案,结合具体代码示例,帮助读者构建对JMM的全面理解。不同于传统的摘要概述,我们将直接以故事化手法引入,让读者在轻松的情境中领略JMM的精髓。 ####
34 6
|
1月前
|
存储 Java 编译器
Java内存模型(JMM)深度解析####
本文深入探讨了Java内存模型(JMM)的工作原理,旨在帮助开发者理解多线程环境下并发编程的挑战与解决方案。通过剖析JVM如何管理线程间的数据可见性、原子性和有序性问题,本文将揭示synchronized关键字背后的机制,并介绍volatile关键字和final关键字在保证变量同步与不可变性方面的作用。同时,文章还将讨论现代Java并发工具类如java.util.concurrent包中的核心组件,以及它们如何简化高效并发程序的设计。无论你是初学者还是有经验的开发者,本文都将为你提供宝贵的见解,助你在Java并发编程领域更进一步。 ####
|
22天前
|
存储 算法 Java
Java内存管理深度解析####
本文深入探讨了Java虚拟机(JVM)中的内存分配与垃圾回收机制,揭示了其高效管理内存的奥秘。文章首先概述了JVM内存模型,随后详细阐述了堆、栈、方法区等关键区域的作用及管理策略。在垃圾回收部分,重点介绍了标记-清除、复制算法、标记-整理等多种回收算法的工作原理及其适用场景,并通过实际案例分析了不同GC策略对应用性能的影响。对于开发者而言,理解这些原理有助于编写出更加高效、稳定的Java应用程序。 ####
|
1月前
|
安全 开发者
内存池的优缺点分别是什么
内存池的优缺点分别是什么
35 1
|
1月前
|
安全 开发者
内存池池有哪些优缺点
内存池池有哪些优缺点
|
2月前
|
存储 监控 算法
Java中的内存管理与垃圾回收机制解析
本文深入探讨了Java编程语言中的内存管理方式,特别是垃圾回收机制。我们将了解Java的自动内存管理是如何工作的,它如何帮助开发者避免常见的内存泄漏问题。通过分析不同垃圾回收算法(如标记-清除、复制和标记-整理)以及JVM如何选择合适的垃圾回收策略,本文旨在帮助Java开发者更好地理解和优化应用程序的性能。
|
2月前
|
存储 安全 Java
JVM锁的膨胀过程与锁内存变化解析
在Java虚拟机(JVM)中,锁机制是确保多线程环境下数据一致性和线程安全的重要手段。随着线程对共享资源的竞争程度不同,JVM中的锁会经历从低级到高级的膨胀过程,以适应不同的并发场景。本文将深入探讨JVM锁的膨胀过程,以及锁在内存中的变化。
47 1
|
2月前
|
Java C语言 iOS开发
MacOS环境-手写操作系统-16-内存管理 解析内存状态
MacOS环境-手写操作系统-16-内存管理 解析内存状态
51 0
|
1月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
76 2
|
1天前
|
存储 设计模式 算法
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析

推荐镜像

更多