zoukankan      html  css  js  c++  java
  • 操作系统——第四章

    1、第四章主要是将存储器,存储器是包括内存储器(内存条)和外存储器(磁盘)。在这一章,重要的知识点是分段、分页储存管理方式。
    2、装入分为:绝对装入(代码中均是物理地址)、可重定位装入(代码是逻辑地址,装入时重新计算转变为物理地址)、动态运行时装入(装入时逻辑地址不转为物理地址,运行时才将逻辑地址转为物理地址)。
    3、链接分为:静态链接(所有涉及到的目标模块、库函数都打包链接)、装入时动态链接(边装入,边链接:装入时,发生外部调用,再将被调用模块装入内存。)、运行时动态链接(装入时不链接,运行时需要了再链接)
    4、内存的分配方式可以分为连续分配和离散分配。连续分配是说连续的地址空间,分给某一个进程,离散分配是说把一个进程打碎为若干个部分,一个部分放一个位置,部分和部分之间不是连续的,但是部分自己是连续的。这个部分就是“页框”。
    5、连续分配又分为单一连续分配(内存中只有一个进程)、固定分区分配(内存固定分为几个大小固定或大小不固定的区域,每一个区域放一个进程,所以内存中有多个进程)、动态分区分配(不固定分区域,根据实际情况和算法为进程分配内存)、动态重定位分区分配(多个“碎片”凑成一个新的整块)。
    6、内存的分配过程中,要判断将要分配的区域是不是满足需要,如果满足,还要判断分配之后剩余的(不是总的剩余的,是将要分配的这个区域分配之后还剩余的)是不是可再分。就好比超市买东西,花的钱不能比兜里钱要多,比如兜里就100,花了99.99元,剩余的1分钱已经不能再买东西了,作为内存来说,这1分钱就不再作为可分配区域了。
    7、内存回收过程中,要修改空闲分区表或空闲分区链,要根据回收的区域和其他可分配区域的位置。比如要收回的区域上或下本来就是空闲区,那么只需要修改空闲分区表中的大小就可以,不用修改起始地址。
    8、设计到动态分配的几个算法:
    a、首次适应:空闲分区链以地址递增的次序排列,第一个满足分配的条件,就分配。缺点是:内存浪费(“碎片”较多)、每次都是从最低地址找增加系统开销。
    b、循环首次适应:在首次适应的基础上,每次从上一次结束的位置开始搜索。缺点:缺乏大的空闲分区,对大作业不友好。
    c、最佳适应:空闲分区按其容量以从小到大的顺序排序,第一个满足分配条件的,分配。缺点:碎片较多
    d、最坏适应:和最佳适应相反,按照从大到小顺序排序,第一个满足分配条件的,分配。这个是先分配大的,后分配小的。缺点:碎片较少,但是大空闲区少,对大作业不友好。
    e、快速适应算法、伙伴系统大家明白啥意思就行,不用刻意掌握,了解就可以。
    9、如果进程数量太多,内存不够用,怎么办?就引出了虚拟内存技术(当然基本的分页和分段是不支持虚拟内存技术的,虚拟内存技术需要在基本的分页分段基础之上,增加很多信息才行),从逻辑上增加内存空间。这时又要引出对换,以进程为单位,内存和外存中进程对换;或者以“段、页、段页”为单位,内存和外存对换。
    10、内存中的进程分为一个个大小相等的“页框”(也叫物理块),进程逻辑空间,分为一个个大小相等的“页”。页和页框大小也是一样的。页和页框都是从0号开始编,0号,1号,2号……
    11、页设置的太小,内存利用率会提高,但是页的数量会增多,增加了对换次数;页设置的太大,页的数量相对减少,减小对换次数,但是最后一页会有较大的内部碎片。
    12、搞清楚两个名次:内部碎片和外部碎片。内部碎片:已经分配出去了,但是又用不到;外部碎片:没有分配出去的,但是也用不到。
    13、给出了逻辑地址和页面大小,如何计算处于哪一个页,页里的页内地址?逻辑地址/页面大小 = 页号(取整);逻辑地址%页面大小 = 页内地址(取余)
    14、计算机需要知道逻辑地址中的哪一个页分配到了内存中哪一个页框中,这个对应关系如何实现?靠“页表”。页表是描述页和页框的一个对应关系。页表也是需要储存在内存中的,所以页表也需要占用内存。但是页表中的页号是线性排列的,每一个页号占用的空间是一样的(就好比给6个地址编址,必须是000、001、010、100、101、110、111,每一位都是3位数),所以只需要储存页表里的块号就可以。
    15、引入快表:在页表的机制下,每一次寻址都要经历2次访存操作。第一次访问页表得到页号对应的块号(页框号),第二次根据块号计算的物理地址(这里需要想明白,如何计算物理地址的?页框号也是线性排列的,页框号*一个页框的大小+页内地址=物理地址。一个页框大小提前已经约定好。),访问该内容。访存是需要有时间开销的,为了减少时间开销,提高效率,可以把页表放在“寄存器”中,但是寄存器又很贵,又不能把全部的页表都放进去,这就是快表。引入快表后,有一种计算是计算有效访问时间,大家可以详细的看参考书。
    16、当页表内容很多时,需要占用连续的内存空间很大,可以仿照“分页”储存方式,将页表再分为“页表”,也就是二级页表、三级页表。
    17、段表和页表原理类似,但是需要把握一点,段长度不固定。

  • 相关阅读:
    手把手玩转win8开发系列课程(5)
    一道百度之星编程大赛题的随笔联想·(2)
    手把手玩转win8开发系列课程(7)
    手把手玩转win8开发系列课程(10)
    一道百度之星编程大赛题的随笔联想·(1)
    手把手玩转win8开发系列课程(6)
    手把手玩转win8开发系列课程(9)
    手把手玩转win8开发系列课程(3)
    Innodb 表修复
    NoSQL之【Redis】学习(二):配置说明
  • 原文地址:https://www.cnblogs.com/lgwdx/p/14785294.html
Copyright © 2011-2022 走看看