zoukankan      html  css  js  c++  java
  • 2017-2018-1 20155330 《信息安全系统设计基础》第11周学习总结

    2017-2018-1 20155330 《信息安全系统设计基础》第11周学习总结

    教材学习内容总结

    物理和虚拟寻址

    • 计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组。每字节都有一个唯一的物理地址
    • CPU访问内存的最自然的方式就是使用物理地址,称为物理寻址
    • 现代处理器使用虚拟寻址的寻址形式。CPU通过生成一个虚拟地址 来访问主存,这个虚拟地址在被送到内存之前先转换成适当的物理地址。将一个虚拟地址转换为物理地址的任务叫做地址翻译

    地址空间

    • 地址空间是一个非负整数地址的有序集合:
      • 线性地址空间:地址空间中的整数是连续的。
      • 线性地址空间:在一个带虚拟内存的系统中,CPU从一个有N=2^(n)个地址的地址空间中生成虚拟地址。
    • 一个地址空间的大小是由表示最大地址所需要的位数来描述。一个包含N=2^(n)个地址的虚拟地址空间就叫做一个n位地址空间。现代系统通常支持32位或64位虚拟地址空间。

    虚拟内存作为缓存的工具

    • 在任意时刻,虚拟页面的集合都分为三个不相交的子集:
      • 未分配的:VM系统还未分配(或创建)的页。未分配的块没有任何数据和它们相关联,因此也就不占用任何磁盘空间。
      • 缓存的:当前已缓存在物理内存中的已分配页。
      • 未缓存的:未缓存在物理内存中的已分配页。
    • 页表就是一个页表条目(PTE)的数组。虚拟地址空间中的每个页在页表中一个固定偏移量处都有一个PTE。
    • 有效位表明该虚拟页当前是否被缓存在DRAM中。如果设置了有效位,那么地址字段就表示DRAM中相应的物理页的起始位置,这个物理页中缓存了该虚拟页。
    • DRAM缓存不命中成为缺页。

    地址翻译

    • 地址翻译是一个N元素的虚拟地址空间(VAS)中的元素和一个M元素的物理地址空间(PAS)中元素之间的映射

    • 利用TLB加速地址翻译:所有的地址翻译步骤都是在芯片上的MMU中执行的。

    • 用来压缩页表的常用方法是使用层次结构的页表。

    • 访问设备时引荐如何划分虚拟地址和物理地址的位:

      • TLB:利用VPN的位进行虚拟寻址。
      • 页表:用索引它的VPN来标识每个PTE。但这些VPN并不是页表的一部分,也不储存在内存中。
      • 高速缓存:直接映射的缓存是通过物理地址中的字段寻址。

    案例研究:Intel Core i7/Linux 内存系统

    • Core i7地址翻译过程
    • Linux缺页处理

    内存映射

    • 虚拟内存区域可以映射到两种类型的对象中的一种:
      • Linux文件系统中的普通文件:一个区域可以映射到一个普通磁盘文件的连续部分。
      • 匿名文件。

    动态内存分配

    • 动态内存分配器维护着一个进程的虚拟内存区域,称为堆。
    • 分配器将堆视为一组不同大小的块的集合进行维护。
    • 分配器有两种基本风格,都要求应用显式地分配块,不同之处在于由哪个实体来负责释放已分配的块:
      • 显式分配器:显式地释放任何已分配的块。
      • 隐式分配器:要求分配器检测一个已分配块何时不再被程序所使用,那么就释放这个块。也叫做垃圾收集器。
    • 显式分配器的要求和目标:
      • 处理任意请求序列。
      • 立即响应请求。
      • 只使用堆。
      • 对齐块(对齐要求)。
      • 不修改已分配的块。
    • 分配器的目标就是在整个序列中使峰值利用率U^(n-1)最大化。
    • 造成堆利用率很低的主要原因是一种称为碎片的现象。有两种形式:内部碎片和外部碎片。
      • 内部碎片:在一个已分配块比有效载荷大时发生。
      • 外部碎片:当空闲内存合计起来足够满足一个分配请求,但是没有一个单独的空闲块足够大可以来处理这个请求时发生。

    教材学习中的问题和解决过程

    • 问题1:
    • 问题1解决方案:
    虚拟地址位数(n) 虚拟地址数(N) 最大可能的虚拟地址
    8 2^(8)=256 2^(8)-1=255
    16 2^(16)=64K 2^(16)-1=64K-1
    32 2^(32)=4G 2^(32)-1=4G-1
    48 2^(48)=256T 2^(48)-1=256T-1
    64 2^(64)=16384P 2^(64)-1=16384P-1

    代码托管

    结对及互评

    本周结对学习情况

    • 20155321
    • 结对学习内容
      - 第9章 虚拟内存
      - 实验四 外设驱动程序

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 0/0 1/1 10/10
    第二周 63/63 1/2 8/18
    第三周 31/94 1/3 18/36
    第四周 265/329 1/4 17/53
    第五周 106/435 2/6 18/71
    第六周 211/646 2/8 21/92
    第七周 1420/2066 2/10 17/109
    第八周 1061/3127 1/11 17/126
    第九周 1458/4585 3/14 20/146
    第十周 1410/5995 1/15 20/166
    第十一周 779/6774 2/17 18/184

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
    耗时估计的公式
    :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

    参考:软件工程软件的估计为什么这么难软件工程 估计方法

    • 计划学习时间:15小时

    • 实际学习时间:18小时

    参考资料

  • 相关阅读:
    程序员的7中武器
    需要强化的知识
    微软中国联合小i推出MSN群Beta 不需任何插件
    XML Notepad 2006 v2.0
    Sandcastle August 2006 Community Technology Preview
    [推荐] TechNet 广播 SQL Server 2000完结篇
    《太空帝国 4》(Space Empires IV)以及 xxMod 英文版 中文版 TDM Mod 英文版 中文版
    IronPython 1.0 RC2 更新 1.0.60816
    Microsoft .NET Framework 3.0 RC1
    《Oracle Developer Suite 10g》(Oracle Developer Suite 10g)V10.1.2.0.2
  • 原文地址:https://www.cnblogs.com/ashin-kl/p/7921463.html
Copyright © 2011-2022 走看看