# 2017-2018-1 20155224 《信息安全系统设计基础》第十一周学习总结

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

教材学习内容总结

  1. 理解虚拟存储器的概念和作用
  2. 理解地址翻译的概念
  3. 理解存储器映射
  4. 掌握动态存储器分配的方法
  5. 理解垃圾收集的概念
  6. 了解C语言中与存储器有关的错误
  • 虚拟存储器(Virtual Memory),是硬件异常,硬件地址翻译,主存,磁盘文件和内核软件的完善交互,它为每个进程提供一个大的,一致的,私有地址空间。通过一个清晰的机制,虚拟存储器提供了三个要重的能力:

    • 它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,高效的使用了主存
    • 它为每个进程提供了一致的地址空间,从而简化了存储器管理
    • 它保护了每个进程的地址空间不被其他进程破坏
  • 程序员需要虚拟内存的原因:
    • 虚拟内存是核心的
    • 虚拟内存是强大的
    • 虚拟内存是危险的
  • 物理地址:计算机系统的主存被组织成一个人由M个连续的字节到校的单元组成的数组。每字节都有一个唯一的物理地址。第一个字节的地CPU生成址为0,接下来的字节地址为1,再下一个是2,依次类推。给定这种简单的结构,CPU访问存储器的最自然的方式就是使用物理地址。

  • 虚拟地址:早期的PC使用物理寻址,而且诸如数字信号处理器,嵌入式微控制器以及Cray超级计算机这样的系统仍然继续使用这种寻址方式。而为通用计算机设计师的现代处理器使用的是虚拟寻址。使用虚拟寻址时,CPU通过生成一个虚拟地址来访问主存,这个虚拟地址在被送到存储器之前先转换成适当的物理地址(这个过程叫做地址翻译,相关硬件为存储器管理单元MMU)

  • 地址空间:一个非负整数地址的有序集合。
    • 线性地址空间:地址空间中的整数是连续的
    • 虚拟地址空间:一个带有虚拟存储器的系统中,CPU从一个有N=2^n个地址的地址空间中生成虚拟地址,这个地址空间称为虚拟地址空间。
  • 虚拟存储器被组织为一个由存放在磁盘上的N个连续的字节大小的单元组成的数组,每个字节都有一个唯一的虚拟地址,这个唯一的虚拟地址是作为到数组的索引的。
  • VM系统通过将虚拟存储器分割为称为虚拟页的大小固定的块作为磁盘和主存之间的传输单元,每个虚拟页大小为P=2^p。物理存储器被分割为大小也为P字节的物理页称为帧。
  • 在任意时刻,虚拟页的集合通常被分为三个不相交的子集:
    • 未分配的
    • 缓存的
    • 未缓存的
  • DRAM缓存的组织结构是由巨大的不命中开销驱动的。
    • 全相联:任何虚拟页可以放在任何的物理页中
    • 因为对磁盘的访问时间很长,总是使用写回而不是直写
    • 更复杂精密的替换算法
  • 软硬件联合,包括操作系统软件、MMU(内存管理单元)中的地址翻译硬件、一个存放在物理内存中叫做页表的数据结构,提供虚拟内存系统判定虚拟页是否换存在DRAM中的某个地方的功能。
    • 如果是,确定虚拟内存放在哪个物理页中。
    • 如果不命中,系统判断虚拟页存放在磁盘的哪个位置,在物理内存中选择一个牺牲页,并将虚拟页从磁盘复制到DRAM中,替换这个牺牲页。
  • 页表:存放在物理存储器一个数据结构,叫做页表(page table)。页表将虚拟页映射到物理页。
  • 页表就是一个PTE(page table entry,页表条目)的数组。虚拟地址空间中的每个页在页表中的一个固定偏移量处都有一个PTE。
  • 假设每个PTE,一般由一个有效位和一个n位地址字段组成。有效位表明了该虚拟页是否被缓存在DRAM中。
    • 如果设置了有效位,地址字段就表示DRAM中相应的物理页的起始位置,这个物理页中缓存了该虚拟页。
    • 如果未设置有效位,一个空地址表示虚拟页未分配,否则,这个地址就指向该虚拟页在磁盘中的起始位置。

  • DRAM缓存的组织结构
    • 不命中处罚很大
    • 是全相联的——任何虚拟页都可以放在任何的物理页中。
    • 替换算法精密
    • 总是使用写回而不是直写。
  • 页命中
  • 缺页:就是指DRAM缓存不命中。
    • 缺页异常:会调用内核中的缺页异常处理程序,选择一个牺牲页。
    • 页:虚拟存储器的习惯说法,就是块
    • 交换=页面调度:磁盘和存储器之间传送页的活动
    • 按需页面调度:直到发生不命中时才换入页面的策略,所有现代系统都使用这个。
  • 局部性原则保证了在任意时刻,程序将往往在一个较小的活动页面集合上工作,这个集合叫做工作集/常驻集。
  • 颠簸:工作集大小超出了物理存储器的大小。
  • 虚拟存储器作为存储器管理的工具
    • 操作系统每个进程都有一个独立的页表,因而也就是一个独立的虚拟地址空间。
    • 按需页面调度和独立的虚拟地址空间的结合,对系统中存储器的使用和管理造成了深远的影响。特别地,VM简化了链接和加载、代码和数据共享,以及应用程序的存储器分配。
    • 简化链接:独立的地址空间允许每个进程为它的存储器映像使用相同的基本格式,因而不管代码和数据实际存放在物理存储器的何处,它的一致性极大地简化了链接器的设计和实现,允许生成全链接的可执行文件,这些可执行文件是独立于物理存储器中代码和数据的最终位置的。
    • 简化加载:虚拟存储器使得容易向存储器中加载可执行文件和共享文件对象。系统加载时只需分配那些数据和代码区域的连续的虚拟页面区域,将它们标识为无效,且页面条目地址指向目标文件中适当的位置。
    • 简化共享:操作系统通过不同进程的页表,将各自的私有的数据和代码映射到不同的物理页面;而对共享的代码和数据,就将适当的虚拟页面映射到相同的物理页面,从而安排多个进程共享这部分代码的一个拷贝。
    • 简化存储器分配:由于页表的工作方式,操作系统只需分配一个适当数字个连续的虚拟存储器页面,但可以映射到任意分散的物理存储器中。
    • 一个概念:将一组连续的虚拟页面映射到任意一个文件中的任意一个位置的表示法叫做存储器映射。
  • 虚拟存储器作为存储器保护的工具
    • PTE的三个许可位:

      • SUP:表示进程是否必须运行在内核模式下才能访问该页
      • READ:读权限
      • WRITE:写权限
    • 在PTE上添加一些额外的许可位来控制对一个虚拟页面内容的访问。例如:SUP位表示进程是否必须运行在内核模式下才能访问网页;READ位和WRITE位的读和写进行访问。如果一条指令违反了这些许可条件,那么cpu就触发一个一般保护故障,将控制传递给一个内核中的异常处理程序。
  • 地址翻译:地址翻译是一个N元素的虚拟地址空间(VAS)中的元素和一个M元素的物理地址空间(PAS)中元素之间的映射。
  • 页表基址寄存器:
    • CPU中的一个控制寄存器,叫做页表基址寄存器(page table base register,PTBR)指向当前页表。N位的虚拟地址包含两个部分:一个p位的VPO(virtual page offset,虚拟页面偏移)和一个n-p位的VPN(virtual page number)。MMU利用VPN来选择适当的PTE。如VPN0选择PTE0。因为物理和虚拟页面都是p字节的,所以PPO(physical page offset物理页面偏移)和VPO是相同的,所以,将页表条目中PPN(physical page number,物理页号)和虚拟地址中的VPO串联起来,就是相应的物理地址。
  • 页面命中完全由硬件处理的,而处理缺页要求硬件和OS内核协作完成。 - 多级页表——采用层次结构,用来压缩页表。
    • 以两层页表层次结构为例,好处是:

      • 如果一级页表中的一个PTE是空的,那么相应的二级页表就根本不会存在
      • 只有一级页表才需要总是在主存中,虚拟存储器系统可以在需要时创建、页面调入或调出二级页表,只有最经常使用的二级页表才缓存在主存中。
  • Linux虚拟存储器系统
    • Linux为每个进程维持了一个单独的虚拟地址空间。内核存储器包含内核中的代码和数据结构。一部分区域映射到所有进程共享的物理页面另一部分包含每个进程都不相同的数据。
    • 区域:就是已分配的虚拟存储器的连续片,这些页是相关联的。
    • 每个存在的虚拟页面都保存在某个区域中。内核为系统中的每个进程维护一个单独的任务结构task_struct:
  • 一个具体区域的区域结构包括:
    • vm_start:指向起始处
    • vm_end:指向结束处
    • vm_prot:描述这个区域包含的所有页的读写许可权限
    • vm_flags:是共享的还是私有的
    • vm_next:指向下一个区域
  • Linux缺页异常处理
  1. 虚拟地址A是否合法?

不合法,触发段错误,终止进程

合法,进入下一条

  1. 存储器访问是否合法?即,是否有权限?

不合法,触发保护异常,终止程序

合法,进入下一条

  1. 这时,是针对合法的虚拟地址进行合法的操作。所以:选择一个牺牲页面,如果被修改过就换新的并更新页表。
  • 存储器映射:

Linux通过将一个虚拟存储器区域与一个磁盘上的对象关联起来,以初始化这个虚拟存储器区域的内容的过程叫做存储器映射。

  • 映射对象:

1.Unix文件系统中的普通文件

2.匿名文件(由内核创建,全都是二进制0)

  • 共享对象和私有对象

    • 共享对象

      共享对象对于所有把它映射到自己的虚拟存储器进程来说都是可见的

      • 即使映射到多个共享区域,物理存储器中也只需要存放共享对象的一个拷贝。
    • 私有对象
      • 私有对象运用的技术:写时拷贝
      • 在物理存储器中只保存有私有对象的一份拷贝

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

        (一个模板:我看了这一段文字 (引用文字),有这个问题 (提出问题)。 我查了资料,有这些说法(引用说法),根据我的实践,我得到这些经验(描述自己的经验)。 但是我还是不太懂,我的困惑是(说明困惑)。【或者】我反对作者的观点(提出作者的观点,自己的观点,以及理由)。 )

  • 问题1:显式空闲链表与隐式空闲链表的不同之处比较。
  • 问题1解决方案:
  1. 分配时间

隐式的,分配时间是块总数的线性时间

但是显式的,是空闲块数量的线性时间。

  1. 链表形式

隐式——隐式空闲链表

显式——双向链表,有前驱和后继,比头部脚部好使。

代码托管

(statistics.sh脚本的运行结果截图)

上周考试错题总结

  • Unix/Linux中,对于代码fd=open("foo",O_WRONLY,0766),umask=022,下面说法正确的是()

    A .

    进程对foo是只写的

    B .

    同组成员能写foo

    C .

    使用者可以执行foo

    D .

    任何人都可以写foo

    正确答案: A C 你的答案: A B C D

  • 关于open(2),下面说法正确的是( )

    A .

    flag 参数中O_RDONLY,O_WRONLY,O_RDWR至少要有一个

    B .

    O_RDONLY|O_WRONLY == O_RDWR

    C .

    fd=open("foo.txt",O_WRONLY|O_APPEND,0),调用write(fd,buff,n)写入foo.txt的数据不会破坏已有数据。

    D .

    fd=open("foo.txt",O_WRONLY|O_APPEND,0644),必将导致其他人不能写foo.txt

    正确答案: A C 你的答案: A C D

  • Linux中下列概念中可以用Unix I/O处理的是()

    A .

    普通文件

    B .

    设备文件

    C .

    目录

    D .

    套接字

    正确答案: A B C D 你的答案: A C D

  • 输入输出是针对()来讲的?

    A .

    CPU

    B .

    主存

    C .

    I/O设备

    D .

    计算机

    正确答案: B 你的答案: C

结对及互评

点评模板:

  • 博客中值得学习的或问题:

    • xxx
    • xxx
    • ...
  • 代码中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 其他

本周结对学习情况

- [20155219](http://www.cnblogs.com/paypay/)
- 结对照片

- 结对学习内容
    - 第九章教材内容

其他(感悟、思考等,可选)

xxx

xxx

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

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

  • 计划学习时间:XX小时
  • 实际学习时间:XX小时
  • 改进情况:

(有空多看看现代软件工程 课件

软件工程师能力自我评价表)

参考资料

时间: 2024-08-29 05:09:25

# 2017-2018-1 20155224 《信息安全系统设计基础》第十一周学习总结的相关文章

信息安全系统设计基础第十一周学习总结——20135308

第八章 异常控制流 控制转移序列称为控制流. 从从一条指令到下一条指令称为转移控制. 异常控制流:现代操作系统通过使控制流发生突变来对系统状态做出反应,这些突变称为异常控制流. 异常控制流ECF:即这些突变. 1.ECF是操作系统用来实现I/O.进程和虚拟存器的基本机制 2.应用程序通过使用一个叫做陷阱或者系统调用的ECF形式,向操作系统请求服务 3.ECF是计算机系统中实现并发的基本机制 4.软件异常机制——C++和Java有try,catch,和throw,C中非本地跳转是setjmp和lo

信息安全系统设计基础第十一周学习总结

第八章代码学习 exec1 #include<stdio.h> #include<unistd.h> int main() { char  *arglist[3]; arglist[0] = "ls"; arglist[1] = "-l"; arglist[2] = 0 ;//NULL printf("* * * About to exec ls -l\n"); execvp( "ls" , argli

20135210程涵——信息安全系统设计基础第十一周学习总结

第8章 异常控制流 8.1 异常 异常是ECF的一种,一部分由硬件实现,一部分由操作系统实现.就是位于硬件和操作系统之间的ECF. 异常可以分为四类:中断(interrupt),陷阱(trap),故障(fault),终止(abort). 中断——来自处理器外部的I/O设备的信号的结果. 中断处理程序——异步异常——由处理器外部I/O设备中的事件产生的.同步异常是执行一条指令的直接产物. 中断通过向处理器芯片上的一个引脚发信号(高低电平),并将异常号放在系统总线上,以触发中断,很清楚. 其中断处理

信息安全系统设计基础第十一周学习总结—20135227黄晓妍

第8章异常控制流 控制流:控制转移序列. 控制转移:从一条指令到下一条指令. 异常控制流:现代操作系统通过使控制流发生突变来对系统状态做出反应,这些突变称为异常控制流. 一.异常 1.异常的剖析,如下图所示: 异常:控制流中的突变,用来响应处理器状态的某些变化. Icurr:当前指令 事件:状态变化 2.异常处理 异常表:当处理器检测到有事件发生时,它会通过跳转表,进行一个间接过程调用(异常),到异常处理程序. 异常号:系统中可能的某种类型的异常都分配了一个唯一的非负整数的异常号.异常号是到异常

20135213——信息安全系统设计基础第十一周学习总结

一.学习目标 掌握进程控制掌握信号处理的方法掌握管道和fifo进行进程间通信的方法 二.学习任务 编译.运行.阅读.理解process.tar.gz压缩包中的代码 三.参考资料及实验环境 参考资料:process.tar.gz压缩包中的代码. 课本<深入理解计算机系统>. 百度.20135202闫佳歆 环境:实验楼 四.学习过程 exec1 #include <stdio.h>#include <unistd.h> int main(){ char *arglist[3

20135205信息安全系统设计基础第十一周学习总结

第八章 异常控制流 异常及其种类 异常:就是控制流中的突变,用来响应处理器状态中的某些变化. 在处理器中,状态被编码为不同的位和信号.状态变化称为事件.事件可能和当前指令的执行没有关系. 在任何情况下,当处理器检测到有事件发生时,它就会通过一张叫做异常表的跳转表,进行一个间接调用异常,到一个专门设计用来处理这类事件的操作子程序(异常处理程序) 当异常处理程序完成处理后,根据引起异常的事件的类型,会发生以下三种情况中的一种: 1)处理程序将控制返回当前指令,即当事件发生时正在执行的指令. 2)处理

20145216 史婧瑶《信息安全系统设计基础》第一周学习总结

20145216 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 Linux基础 1.ls命令 ls或ls .显示是当前目录的内容,这里“.”就是参数,表示当前目录,是缺省的可以省略.我们可以用ls -a .显示当前目录中的所有内容,包括隐藏文件和目录.其中“-a” 就是选项,改变了显示的内容.如图所示: 2.man命令 man命令可以查看帮助文档,如 man man : 若在shell中输入 man+数字+命令/函数 即可以查到相关的命令和函数:若不加数字,那man命令默认从数字较

20145311 《信息安全系统设计基础》第一周学习总结

20145311 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 常用的部分命令 CTRL+SHIFT+T:新建标签页,编程时有重要应用: ALT+数字N:终端中切换到第N个标签页,编程时有重要应用: Tab:终端中命令补全,当输入某个命令的开头的一部分后,按下Tab键就可以得到提示或者帮助完成: CTRL+C:中断程序运行 Ctrl+D:键盘输入结束或退出终端 Ctrl+S: 暂定当前程序,暂停后按下任意键恢复运行 Ctrl+A: 将光标移至输入行头,相当于Home键 Ctrl+E

20145216史婧瑶《信息安全系统设计基础》第九周学习总结

20145216史婧瑶<信息安全系统设计基础>第九周学习总结 教材内容总结 第十章 系统级I/O 输入/输出(I/O)是在主存和外部设备之间拷贝数据的过程. 第一节 Unix I/O 这一节涉及到操作系统的基本抽象之一--文件.也就是说,所有的I/O设备都被模型化为文件,而所有的输入输出都被当做对相应文件的读/写.相关的执行动作如下: 1.打开文件: 应用程序向内核发出请求→要求内核打开相应的文件→内核返回文件描述符 文件描述符:一个小的非负整数,用来在后续对此文件的所有操作中标识这个文件.有

20145311 《信息安全系统设计基础》第二周学习总结

20145311 <信息安全系统设计基础>第二周学习总结 教材学习内容总结 重新学习了一下上周的一部分命令:grep main wyx.c(grep的全文检索功能)ls > ls.txt :ls内容输出到文本find pathname -mtime -n/+nfind -size -n/+n (find的功能还是比较强大) 简单地学习了一下vim编辑器,跟着vimtutor简单地学了一些,在linux bash中使用vim能够极大地提高效率, vim的用法比较多,只学习了其中简单的一部分