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

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

课程内容总结

物理地址和虚拟地址

  • 物理地址:计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组。每个字节都有唯一的物理地址。
  • 虚拟寻址:使用虚拟寻址时,CPU通过生成一个虚拟地址来访问主存,这个虚拟地址在被送到存储器前被转换为适当的物理地址。

地址空间

  • 一个地址空间的大小是由表示最大地址所需要的位数来描述的。
  • 虚拟存储器的基本思想:允许每个数据对象有多个独立的地址,其中每个地址都选自一个不同的地址空间。

虚拟存储器作为缓存的工具

  • VM系统将虚拟存储器分割为称为虚拟页的大小固定的块。
  • 物理存储器被分割为物理页(页帧),大小也为P。
  • 在任意时刻,虚拟页面的集合都被分为三个不相交的子集:

    1. 未分配的:没有任何数据与它们相联,不占任何磁盘空间。
    2. 缓存的:当前缓存的物理存储器中的已分配页。
    3. 未缓存的:没有缓存在物理存储器中的已分配页。
  • DRAM缓存的组织结构:

    1. 由于大的不命中处罚,DRAM缓存是全联的。
    2. 与硬件SRAM相比,操作系统对DRAM缓存使用了更加复杂精密的替换算法。
    3. 对磁盘的访问时间很长,DRAM缓存总是使用写回,而不是直写。

      页表

      页表:将虚拟页映射到物理页。

每次地址翻译 硬件将虚拟地址转换为物理地址时都会读取页表。

页表就是一个页表条目(PTE)的数组。

虚拟地址空间中每个页中一个固定偏移量处都有一个PTE。

DRAM缓存不命中称为缺页。

虚拟存储器作为存储管理工具

VM简化了链接和加载,代码和数据共享,以及应用程序的存储器分配。

虚拟存储器作为存储器保护的工具

SUP位表示进程是否必须运行在内核模式下才能访问该页。READ和WRITE位控制对页面的读和写访问。

如果一条指令违反了这些许可条件,那么CPU就触发一个一般保护故障,将控制传递给一个内核中的异常处理程序。

地址翻译

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

  • 当前页命中的执行步骤(完全由硬件处理):

    1. 处理器生成虚拟地址,传给MMU
    2. MMU生成PTE地址,并从高速缓存/主存请求得到他
    3. 高速缓存/主存向MMU返回PTE
    4. MMU构造物理地址,并把它传给高速缓存/主存
    5. 高速缓存/主存返回所请求的数据给处理器。
  • 处理缺页(要求硬件和操作系统内核协作完成):

    1. 处理器生成虚拟地址,传给MMU
    2. MMU生成PTE地址,并从高速缓存/主存请求得到他
    3. 高速缓存/主存向MMU返回PTE
    4. PTE中有效位是零,MMU触发异常,传输CPU中的控制到操作系统内核中的缺页异常处理程序。
    5. 缺页异常处理程序确定牺牲页,如果这个页面已经被修改了,则把它换出磁盘。
    6. 缺页异常处理程序调入新的页面,更新存储器中的PTE
    7. 缺页异常处理程序返回原来的进程,再次执行导致缺页的指令。CPU将引起缺页异常虚拟地址重新发送给MMU。因为虚拟页面现在缓存在物理存储器中,所以就会命中。

      TLB加速地址翻译

      翻译后备缓冲器(TLB):是一个小的、虚拟存储的缓存,其中每一行都保存着一个由单个PTE组成的块,TLB通常具有高度的相关性。

      存储器映射

  • 存储器映射:Linux通过将一个虚拟存储器区域与一个磁盘上的对象关联起来,以初始化这个虚拟存储器区域的内容的过程。
  • 一个对象可以被映射到虚拟存储器的一个区域,要么作为共享对象,要么作为私有对象。

存储器动态分配

分配器的两种基本风格:

  • 显示分配器-malloc和free
  • 隐式分配器/垃圾收集器

碎片

虽然有未使用的存储器,但是不能用来满足分配请求时,发生这种现象。

  • 内部碎片:发生在一个已分配块比有效载荷大的时候

  • 外部碎片:发生在当空闲存储器合计起来足够满足一个分配请求,但是没有一个单独的空间块足以处理这个请求时发生。

垃圾收集

垃圾收集器是一种动态存储分配器,它自动释放程序不再需要的已分配块,这些块被称为垃圾。

自动回收堆存储的过程叫做垃圾收集。

当存在一条从任意根节点出发并到达p的有向路径时,说节点p是可达的,不可达点就是垃圾。

存储器有关错误

  • 间接引用坏指针
  • 读未初始化的存储器
  • 允许栈缓冲区溢出
  • 假设指针和它们指向的对象是相同大小的
  • 造成错位错误
  • 引用指针,而不是它所指向的对象
  • 误解指针运算
  • 引用不存在的变量
  • 引用空堆块中的数据
  • 引起存储器泄露

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周20/2001/220/20
第二周30/2002/418/38
第三周50/2001/422/30
第四周0/2000/00/30
第五周100/2002/225/30
第六周100/2002/225/30
第七周100/2001/225/30
第九周100/2001/225/30
第十周100/2001/225/30
第十一周100/2001/225/30
第十二周100/2001/225/30
第十三周943/2001/225/30
第十四周0/2001/225/30

参考资料

  • 《信息安全系统设计基础》教学进程
  • ...

转载于:https://www.cnblogs.com/5315hejialei/p/6195618.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402471.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Moment.js常见用法总结

From: https://www.jianshu.com/p/9c10543420de Moment.js常见用法总结 Moment.js是一个轻量级的JavaScript时间库,它方便了日常开发中对时间的操作,提高了开发效率。 ​ 日常开发中,通常会对时间进行下面这几个操作:比如获取时间…

CSDN并购博客园遐想

我要打“假想”,打成了“遐想”,不过确实这篇文章属于我个人YY出来的。主要晚上写博客,用live writer发布好多次都不成功,然后用浏览器访问博客园首页,出现了下面画面。估计很多人都很熟悉这个界面,因为阿里…

Linux C 深入分析结构体指针的定义与引用

关于结构体的基础知识&#xff0c;网上书上都一大堆&#xff0c;这里就不赘述了&#xff0c;下面我们要学习的是结构体指针。 介绍结构体指针之前&#xff0c;先给大家看一个小程序&#xff1a; [cpp] view plaincopy #include <stdio.h> #include <string.h> …

20155313 预备作业二

你有什么技能比大多人&#xff08;超过90%以上&#xff09;更好&#xff1f;针对这个技能的获取你有什么成功的经验&#xff1f;与老师博客中的学习经验有什么共通之处&#xff1f; 说到一个比90%的人要强的技能&#xff0c;我一下子很惆怅&#xff0c;说起来&#xff0c;从小家…

react 父子组件之间相互传值

From: https://blog.csdn.net/luzhaopan/article/details/85003362 1、定义父组件 import React, { PureComponent } from react; export default class Father extends PureComponent { render(){ return( <div> …

android 多线程概述

android多线程&#xff0c;一直是一个麻烦的事情&#xff0c;要掌握它的本质&#xff0c;我们需要搞清楚一个问题&#xff0c;linux多线程的本质。 我们这篇文章&#xff0c;来讨论以下的议程&#xff1a; 了解linux的历程&#xff0c;了解android的异步任务机制&#xff0c;了…

Linux 进程间通讯详解一

进程间的通讯 两台主机间的进程通讯 --socket一台主机间的进程通讯 --管道&#xff08;匿名管道&#xff0c;有名管道&#xff09; --System V进程间通信&#xff08;IPC&#xff09;包括System V消息队列&#xff0c;System V信号量&#xff0c;System V共享内存 --socket 进程…

Linux C 函数指针应用---回调函数

&#xff08;这里引用了知乎上一些知友的回答&#xff0c;感觉不错&#xff0c;有助于理解&#xff0c;这里引用作为借鉴&#xff0c;如有冒犯&#xff0c;烦请告知&#xff09; 我们先来回顾一下函数指针&#xff0c;函数指针是专门用来存放函数地址的指针&#xff0c;函数地址…

laravel+vue开发环境搭建

From: https://www.jianshu.com/p/1c2cc11ba46f 描述 最近通过laravel在公司做了一些项目&#xff0c;但本身前端出身的我&#xff0c;总是感觉lphp开发过程中,前端写好页面&#xff0c;然后后端还需要再套blade模板&#xff0c;感觉这样开发效率太慢&#xff0c;太low。于是自…

GC Blocks Lost等待事件

在Oracle RAC环境中&#xff0c;无论我们从AWR自动负载性能报告、Statspack或者Grid Control中都可以找到Oracle数据库软件所收集的全局缓存工作负载统计信息(global cache work load statistics)&#xff1b;其中就包含了全局缓存块丢失(Global cache lost blocks)的统计信息(…

What's VPC (by quqi99)

作者&#xff1a;张华 发表于&#xff1a;2014-12-09版权声明&#xff1a;可以任意转载&#xff0c;转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) VPC&#xff08;virtual private cloud&#xff0c;虚拟私有云&#xff…

WCF简单教程(5) 用IIS做Host

第五篇&#xff1a;用IIS做Host之前几篇的Demo中&#xff0c;我们一直在用控制台程序做Server&#xff0c;今天换IIS来做Host&#xff0c;在Web Application中添加WCF的服务。其实在Web Application中添加WCF服务是最简单的&#xff0c;“新建项”中有专用的“WCF服务”&#x…

黑苹果折腾记

From: https://fishedee.com/2018/10/04/%E9%BB%91%E8%8B%B9%E6%9E%9C%E6%8A%98%E8%85%BE%E8%AE%B0/ 1 概述 黑苹果折腾记&#xff0c;原来的Macbook Pro已经不太好用了&#xff0c;运行编译时就开始风扇呼呼声的响&#xff0c;我只有想办法将苹果安装上现有的台式机上了。 类…

解决爬虫中文乱码问题

解决爬虫中文乱码问题 今天群里有个人反映某个网址爬出来的网页源代码出现中文乱码&#xff0c;我研究了半天&#xff0c;终于找到了解决方法。 一开始&#xff0c;我是这样做的&#xff1a; import requestsurl http://search.51job.com/jobsearch/search_result.php?fromJs…

记录每个用户的操作记录(命令)

通过设置日志文件可以对每个用户的每一条命令进行记录&#xff0c;这一功能默认是不开放的&#xff0c;为了打开它&#xff0c;需要安装pacct工具&#xff0c;并执行以下命令&#xff1a; #touch /var/log/pacct #accton /var/log/pacct 执行读取命令lastcomm [user name] –f …

多进程 VS 多线程

在Linux下编程多用多进程编程少用多线程编程。 IBM有个家伙做了个测试&#xff0c;发现切换线程context的时候&#xff0c;windows比linux快一倍多。进出最快的锁&#xff08;windows2k的 critical section和linux的pthread_mutex&#xff09;&#xff0c;windows比linux的要快…

黑苹果SSDT使用

From: https://blog.csdn.net/qq_33544860/article/details/77320073 1.在Clover引导界面&#xff0c;按一下&#xff3b;F4&#xff3d;,就会在EFI\CLOVER\ACPI\origin\生成好多*.aml的文件&#xff0c;例如APIC.aml&#xff0c;BGRT.aml&#xff0c;DSDT.aml&#xff0c;HPE…

c# 如何在webbrowser控件执行一段JS代码

var doc this.WebBrowser.Document.DomDocument as IHTMLDocument2; var win doc.parentWindow as IHTMLWindow2;string jscode "//这里写JS代码";win.execScript(jscode, "javascript");转载于:https://www.cnblogs.com/pasijiubiehuozhe/p/6201439.ht…

一夜暴富之前的漫漫长路

一夜暴富之前的漫漫长路发布于&#xff1a;2013-08-05 09:50阅读数&#xff1a;987那你现在在做什么&#xff1f; 唉&#xff0c;我讨厌这个问题。 事实上&#xff0c;我正在努力做一个新的项目&#xff0c;但没有取得任何的进展。 但是&#xff0c;我并没有抱怨什么&#xff0…

java开发过程中,报错Dangling meta character '*' near index 0,解决办法

From: https://blog.csdn.net/zhouzhiwengang/article/details/53493810 1、split方法转化字符串为数组&#xff1a; String[] strPicArr map.get("hw_pic").toString().split("*"); 报错&#xff1a; java.util.regex.PatternSyntaxException: Dangling…