以单片机思维理解书籍《程序是如何跑起来的》-05章

 计算机中的磁盘相当于单片机的ROM-Flash。计算机的CPU从磁盘中获取内容也是存在速度的,有些可能是G/s,这个根据磁盘不同,速度不同

同样的单片机的CPU从ROM取内容(指令等其他内容),也是有速度的100MB/S等

 

 通过使用内存来提高磁盘访问速度的机制称为什么?

        答:磁盘缓存是指, 把从磁盘中读出的数据存储在内存中, 当该数据再次被读取时, 不是从磁盘而是直接从内存中高速读出。

把磁盘的一部分作为假想内存来使用的机制称为什么?
        答:借助虚拟内存, 哪怕是内存容量不足的计算机, 也可以运行很大的程序
 

简单的单片机是没有虚拟内存这个概念的,它也不支持MMU设置,但是有些高性能的是支持的。我接触到了A7的板子,需要使用Linux,才能使用虚拟地址。越是高性能的芯片,你使用的地址就不再是真实的物理地址了,而是虚拟地址

小知识:当你学C语言敲代码的时候,使用%p打印的地址就是虚拟地址

虚拟地址的存在就是为了保护硬件,你想想单片机我们直接操作P0 = 0X00就可以实现硬件的控制,这个我们是可以直接看的到的,但是电脑的硬件地址如果你直接操作的话,可能会发生一些很危险的事情

 在计算机的 5 大部件中,内存和磁盘也都被归类为存储部件。不过,利用电流来实现存储的内存,同利用磁效应来实现存储的磁盘,还是有差异的。而从存储容量来看,内存是高速高价,而磁盘则是低速廉价

 不读入内存的程序就无法运行

 在操作系统中,程序和进程是两个概念,但是进程却是运行在内存的程序,他们之间还是有着一定的关系的

 当单片机使用外部存储器的时候,当代码在外部存储器的时候,此时你就需要将此代码转移至ROM中(内存中),否则是无法运行的,原因就是CPU的程序计数器指定的地址是内存的地址而不是外部存储器的地址

计算机中主要的存储部件是内存和磁盘。 磁盘中存储的程序, 必须要加载到内存后才能运行。 在磁盘中保存的原始程序是无法直接运行的。 这是因为, 负责解析和运行程序内容的 CPU, 需要通过内部程序计数器来指定内存地址, 然后才能读出程序

 即使 CPU 可以直接读出并运行磁盘中保存的程序, 由于磁盘读取速度慢, 程序的运行速度
还是会降低。 总之, 存储在磁盘中的程序需要读入到内存后才能运行

 磁盘缓存加快了磁盘访问速度

磁盘缓存指的是把从磁盘中读出的数据存储到内存空间中的方式。 这样一来, 当接下来需要读取同一数据时, 就不用通过实际的磁盘, 而是从磁盘缓存中把内容读出。 使用磁盘缓存
可以大大改善磁盘数据的访问速度

 缓存这个概念其实在我们平时的生活中还是挺常见的

就是在 Web 浏览器中的使用。 由于 Web 浏览器是通过网络来获取远程 Web 服务器的数据并将其显示出来的。 因此, 在显示较大的图片等文件时, 会花费不少时间。 于是, Web 浏览器就可以把获取的数据暂时保存在磁盘中, 然后在需要时再显示磁盘中的数据。 也就是说,把低速的网络数据保存到相对高速的磁盘中

虚拟内存把磁盘作为部分内存来使用

 虚拟内存是指把磁盘的一部分作为假想的内存来使用。 这与磁盘缓存是假想的磁盘( 实际上是内存) 相对, 虚拟内存是假想的内存( 实际上是磁盘)

通过借助虚拟内存, 在内存不足时也可以运行程序。 例如, 在只剩下 5MB 内存空间的情况下也能运行 10MB 大小的程序。 不过, 就如本章开头所讲述的那样, CPU 只能执行加载到内存中的程序。 虚拟内存虽说是把磁盘作为内存的一部分来使用, 但实际上正在运行的程序部分, 在这个时间点上是必须存在在内存中的。 也就是说, 为了实现虚拟内存, 就必须把实际内存( 也可称为物理内存) 的内容, 和磁盘上的虚拟内存的内容进行部分置换( swap), 并同时运行程序
 

 个人觉得后面的知识离单片机太远了,因此省略

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值