面试题准备_020.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面试题准备_020

操作系统问题 什么是用户空间,? 对于32位Linux系统来说,Linux的虚拟地址空间是0~4G,Linux将虚拟地址分为两部分,高1G(0xC0000000~0xFFFFFFFF)地址用于内核,称为内核空间,低3G(0 0xBFFFFFFF)地址用于进程使用,称为用户空间。 简单分析几种会导致设备重启的情况? 硬件问题 电源复合过大, 接触不良,电压不稳 硬件冲突,不兼容 散热不好 内存条与插槽接触不良,内存本身质量问题 CPU问题 软件问题 系统文件损坏 内存泄漏 定时软件或计划任务软件起作用 计算机病毒 软件实现问题(除零, 野指针, 临界资源访问等等) 对内存管理的理解,简单介绍几种内存分配算法?例如:最佳分配算法,首次匹配算法等。 内存管理是内核对物理内存的分配和释放,内核和进程都是以此为基础,整个系统的性能取决于如何管理这部分动态内存。各个不同系统有不同应用,那么就没有一个统一的最好的管理办法。 管理算法应做到高效的索引技术,减少碎片,高效的swap技术,避免频繁swap等。 内存分配算法: (1)首次适应算法。使用该算法进行内存分配时,从空闲分区链首开始查找,直至找到一个能满足其大小要求的空闲分区为止。然后再按照作业的大小,从该分区中划出一块内存分配给请求者,余下的空闲分区仍留在空闲分区链中。    该算法倾向于使用内存中低地址部分的空闲分区,在高地址部分的空闲分区很少被利用,从而保留了高地址部分的大空闲区。显然为以后到达的大作业分配大的内 存空间创造了条件。缺点在于低址部分不断被划分,留下许多难以利用、很小的空闲区,而每次查找又都从低址部分开始,这无疑会增加查找的开销。    (2)循环首次适应算法。该算法是由首次适应算法演变而成的。在为进程分配内存空间时,不再每次从链首开始查找,而是从上次找到的空闲分区开始查找,直至 找到一个能满足要求的空闲分区,并从中划出一块来分给作业。该算法能使空闲中的内存分区分布得更加均匀,但将会缺乏大的空闲分区。   (3)最佳适应算法。该算法总是把既能满足要求,又是最小的空闲分区分配给作业。    为了加速查找,该算法要求将所有的空闲区按其大小排序后,以递增顺序形成一个空白链。这样每次找到的第一个满足要求的空闲区,必然是最优的。孤立地看, 该算法似乎是最优的,但事实上并不一定。因为每次分配后剩余的空间一定是最小的,在存储器中将留下许多难以利用的小空闲区。同时每次分配后必须重新排序, 这也带来了一定的开销。   (4)最差适应算法。最差适应算法中,该算法按大小递减的顺序形成空闲区链,分配时直接从空闲区链的第一个空闲分区中 分配(不能满足需要则不分配)。很显然,如果第一个空闲分区不能满足,那么再没有空闲分区能满足需要。这种分配方法初看起来不太合理,但它也有很强的直观 吸引力:在大空闲区中放入程序后,剩下的空闲区常常也很大,于是还能装下一个较大的新程序。   最坏适应算法与最佳适应算法的排序正好相反,它的队列指针总是指向最大的空闲区,在进行分配时,总是从最大的空闲区开始查寻。   该算法克服了最佳适应算法留下的许多小的碎片的不足,但保留大的空闲区的可能性减小了,而且空闲区回收也和最佳适应算法一样复杂。 嵌入式系统内存分配算法:  (1)固定内存分配   固定内存分配算法是最简单的算法,也是最好理解的算法。比如说有16M内存,现在我们假设分配的基本内存是4K,那么总共有16M/4K = 4K个单元。所以,如果用户想申请内存,最多就是4K次。如果用户想要多一点内存,那么系统把相邻的内存分给用户使用即可。   (2)链表内存分配    固定内存分配虽然好,但是还有一个缺点,那就是如果存在很多的浪费机会。试想一下,如果用户只要几十个byte,那么也要分配给它4K个字节,浪费的空 间超过了99%。所以在此基础之上,我们提出了链表内存算法。链表算法中保存有空闲结点,内存释放的时候,那么内存查到空闲结点,该合并合并,该释放的释 放;当然如果要申请内存的话,那方法就多了去了,可以最差申请、最优申请、最好申请,这些都是可以的。   (3)伙伴算法    链表算法相比较固定内存算法,可以节省不少内存。但是链表算法本身有一个特点,那就是容易形成内存碎片。所以,我们可以结合固定分配和链表算法的特点, 把内存分配成8、16、32、64、128、256、512大小的几种链表。链表内部的大小都是相同的,链表之间是倍数的关系。分配内存的时候,我们首先 寻找最合适的链表,然后分配内存,如果内存空间不够,可以向高一级的内存链表申请,这样拆解下来的内存可以分配到低一级别的链表;释放内存的时候,我们也 要注意内存的合并和组合。   (4)基于内存池的伙伴算法   伙伴算法固然好,但是如

文档评论(0)

drj776 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档