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小时

    参考资料

  • 相关阅读:
    windows 动态库的封装以及调用
    ffmpeg 转码命令与ffplay
    YUV格式与RGB格式
    Qt QTimer
    Qt QLineEdit
    Qt setStyleSheet
    python查询
    INSERT INTO .. ON DUPLICATE KEY更新多行记录
    PHP读取流文件
    curl上传、下载、https登陆
  • 原文地址:https://www.cnblogs.com/ashin-kl/p/7921463.html
Copyright © 2011-2022 走看看