小白的CTF学习之路7——内存与硬盘

时间:2022-10-23 15:04:56

前天去网吧跟朋友包宿,导致昨天一整天都报废,今天早上研究了一下nethunter导致手机成功变砖,感冒不停地咳嗽,这些理由应该足够我前两天拖更了吧,下面开始正题

磁盘学习路线

虚拟缓存

虚拟内存

节约内存的编程方式

函数公用

被调用方清理栈

数据压缩

让我们带着问题来学习:

存储程序方式是指什么?

如何通过内存来提高磁盘的访问速度?

windows为例,他为了节约内存用了哪些手段?

首先我们来了解下磁盘这个部件

磁盘是我们电脑中必不可少的硬件,他近几年的发展非常迅猛,但同时磁盘也是我们现在计算机运算速度的瓶颈

我们知道CPU的运算速度是以GHz来计算的,也就是每GHz=10亿次运算,内存也同样是以GHz来计算,但我们的磁盘的运算速度却仅以MB来计算

再来看下磁盘的历史:

最开始的磁盘是软盘,以碟片方式来存储,理论速度可以达到100MB(理论上,现实不成立)

之后发展为现在的SSD芯片式磁盘,民用的运算速度可达到500MB,商用可达到2000MB

磁盘与内存的关系:

电脑中能够存储数据的硬件:

寄存器:存在于CPU的内部,速度最快,容量最少,价格最贵

内存:一般快,一般多,一般贵

磁盘:速度最慢,容量最多,最便宜

电脑执行程序的过程:

小白的CTF学习之路7——内存与硬盘

CPU向硬盘取出数据,放入寄存器中进行运算,运算结束后放回数据,这是最早的操作方式,但是我们知道硬盘的读取操作非常慢,所以加入了内存这一概念:

小白的CTF学习之路7——内存与硬盘

程序在使用前从硬盘加载到内存中,cpu在使用时直接访问内存,结束后再讲数据传送到cpu中

以上统称为存储程式计算机,将程序存储在一个固定的地方,运行时加载就可以了

在此之前使用外部介质来存储,典型的是图灵机

但是我们还有一个问题,内存从硬盘中读取数据也要花时间,我们如何节省?

通过磁盘缓存技术:

小白的CTF学习之路7——内存与硬盘

这里我们分为第一次读取和第二次读取,第一次读取硬盘会同时将数据发送到我们使用数据的地方和内存上,这样在下次使用的时候就会直接访问内存来执行程序

磁盘缓存技术很大程度上解决了访问速度的问题,相当于把内存当做了磁盘使用,我们只需访问一次磁盘下次就可以直接访问内存

磁盘缓存技术的使用范围:win95,98,浏览器,数据库,服务端

但是磁盘并不能一次性的将数据写入到内存上面,因为内存的空间是有限的,这时引入了虚拟内存

虚拟内存:

分为物理内存和虚拟内存

将磁盘中的一块当成内存使用,使cpu在访问有限的内存空间时能够把物理内存和虚拟内存的空间结合起来,最终达到程序的运行目的

举例:

若可用内存5mb

程序运行需:10mb

在磁盘中划分5mb用于加载程序所使用的的内存

小白的CTF学习之路7——内存与硬盘

cpu向内存调用程序数据中的123,物理内存123与虚拟内存456互换,cpu再次向程序中调用程序数据中的456,程序成功运行

虚拟内存的置换算法:

分页式

分段式

分段式:将需要运行的程序内的逻辑(算法,数据)分段,物理内存只执行当前使用的段,cpu处理完物虚置换,此方法有点类似磁盘缓冲

分页式:将数据做成一页一页(页:一个固定的大小),例如:

10mb=4kb,4kb,4kb......

4kb=一页

以页为单位,在虚拟内存和物理内存间进行交互

小白的CTF学习之路7——内存与硬盘的更多相关文章

  1. 小白的CTF学习之路5——内存的逻辑结构

    很衰的一天,各种意料之外的问题,但都挡不住我每日一更的步伐 内存的逻辑结构大致分为以下几种: 数组 栈与队列 链表 二叉树 以上,数组,栈,链表是我这章要说明的 在学习前需要了解的两个问题: 1.内存 ...

  2. 小白的CTF学习之路4——内存

    明天要进行二模考试了,沉住气,加油,能过 内存是学C路上必不可少的一环,一定要非常认真的去学 内存的物理结构: ROM:只读内存——早期的手机 RAM:读写(数据断点既消) DRAM:经常更新 SRA ...

  3. 小白的CTF学习之路2——二进制数据基础与运算(上)

    今天的第二更,被我拖到了傍晚,嘿嘿,二进制这方面让本就数学不好的我很头疼,所以研究了一段时间 在学习之前我们先了解几个问题: 32位是几个字节? 01011100对于十进制是多少? 00001111向 ...

  4. 小白的CTF学习之路8——节约内存的编程方式

    今天第二更,废话不说上干货 上一章我们学习了内存和cpu间的互动方式,了解到内存的空间非常有限,所以这样就需要我们在编程的时候尽可能的节省内存空间,用最少的空间发挥最大的效果,以下是几种节约内存的方法 ...

  5. 小白的CTF学习之路1——程序与CPU

    刚刚注册了这个博客园,尽量保持每日一更(*/ω\*) 今天看了po学院的教学视频,了解了程序是什么,如何在CPU当中工作的等各种之前未曾想过的问题,特此记录,以防忘记 首先我们学习程序与CPU之前需要 ...

  6. 小白的CTF学习之路6——阶段测评

    刚才考了自己一次,下面我把题和答案放到下面 CPU中不含有以下选项中的  C A:     运算器 B:      寄存器 C:     内存 D:     时钟 这是一道送分题,CPU包含以下几种原 ...

  7. 小白的CTF学习之路3——二进制数据基础与运算(下)

    处理了二进制的整数运算,下面我们来进行令人绝望的浮点数运算 我们先来看一下float事列程序: #include<"stdio.sh"> int main() { fl ...

  8. 新手小白的Linux学习之路

    大家好,我是一个零基础的新手小白,在此和大家分享一下新手小白的学习之路.欢迎各位大神指教!谢谢 Linux简介: Linux操作系统诞生于1991年10月,由芬兰赫尔辛基大学的在校生Linus Tor ...

  9. 小白的mapbox学习之路-显示地图

    刚接触mapbox,只是简单记下自己的学习之路,如有错误,欢迎大神指正 1-头部引入链接 2-body中定义一个div块,用来显示地图 3-在script中创建一个map对象,并设置相关参数 mapb ...

随机推荐

  1. DFS经典题,reachable or not in a 2D maze

    [[0, 0, 0, 0, 0, 1], [1, 1, 0, 0, 0, 1], [0, 0, 0, 1, 0, 0], [0, 1, 1, 0, 0, 1], [0, 1, 0, 0, 1, 0], ...

  2. Ubuntu下快速安装LAMP server

    Ubuntu下可快速安装LAMP server(Apache+MySQL+PHP5). 首先,打开Ubuntu虚拟机,Terminal打开root权限:“sudo -s”. 一.安装LAMP serv ...

  3. group by和order by的错误

    select  u.Col_Name from hs_user u left join ( select tuid,count(*) as 'col_sumtopic' from BBS_Topic ...

  4. C&num;23种开发模式,陆续完善中

    #region 单例模式 #region 线程非安全单例模式 public class Singleton1 { private Singleton1() { } private static Sin ...

  5. FFPLAY的原理

    概要 电影文件有很多基本的组成部分.首先,文件本身被称为容器Container,容器的类型决定了信息被存放在文件中的位置.AVI和Quicktime就是容器的例子.接着,你有一组流,例如,你经常有的是 ...

  6. Unity 特写镜头

    using UnityEngine; public class Camera_Feature : MonoBehaviour { public static Camera_Feature instan ...

  7. 第七周学习总结-C&num;

    2018年8月26日 这个周二突然得知另一位老师留的暑假作业,群文件里早就上传了,我居然一直没翻到那里,要不是同学问作业做完没,我可能开学就要“真●裸考”了

  8. IDEA中部署tomcat,运行JSP文件,编译后的JSP文件存放地点总结

    首先保证你正常部署了Tomcat,并且正常在浏览器中运行了JSP文件. 那么Tomcat编译后的JSP文件(_jsp.class 和 _jsp.java)的存放地点: (一)一般存放在你安装的Tomc ...

  9. DNS 预解析

    DNS 解析也是需要时间的,可以通过预解析的方式来预先获得域名所对应的 IP. <link rel="dns-prefetch" href="//yuchengka ...

  10. nextcloud私有云盘的部署

    nextcloud在centos系统下搭建自己的私有云盘 搭建一套自己的私有云盘,让数据存储更加方便.可靠.自己搭建的云存储,首先没有什么容量.下载速度的限制,而且本地访问速度很快.一开始以为Next ...