操作系统实践之路——三、硬件(3.Cache与内存)

前言

​ 在前面的课程里,我们已经知道了 CPU 是如何执行程序的,也研究了程序的地址空间,这里我们终于到了程序的存放地点——内存。
​ 什么是 Cache 吗?真实的内存又是什么样子呢?今天来重新认识一下 Cache 和内存,这对我们利用 Cache 写出高性能的程序代码和实现操作系统管理内存,有着巨大的帮助。
​ 通过这节课的内容,来看看内存到底是啥,它有什么特性。有了这个认识,你就能更加深入地理解我们看似熟悉的局部性原理,从而搞清楚,为啥 Cache 是解决内存瓶颈的神来之笔。最后,我还会带你分析 x86 平台上的 Cache,规避 Cache 引发的一致性问题,并让你掌握获取内存视图的方法。

一、内存

1.1程序局部性原理

​ 以下是一段C语言打印九九乘法表的主要代码:

for(i=1;i<=9;i++){
           
        for(j=1;j<=i;j++){
   
            printf("%d*%d=%2d  ",i,j,i*j);
        }
        printf("\n");
    }

​ 这里我们主要是观察这个结构,代码的结构主要是顺序、分支、循环,这三种结构可以写出现存所有算法的程序。

​ 我们常规情况下写的代码是顺序和循环结构居多。可以看到,这个代码大数时间在执行一个乘法计算和调用一个 printf 函数,而程序一旦编译装载进内存中,它的地址就确定了。也就是说,CPU 大多数时间在访问相同或者与此相邻的地址,换句话说就是:CPU 大多数时间在执行相同的指令或者与此相邻的指令。这就是大名鼎鼎的程序局部性原理

1.2内存

​ 内存也可称为主存,不管硬盘多大、里面存放了多少程序和数据,只要程序运行或者数据要进行计算处理,就必须先将它们装入内存。

​ 从专业角度讲,内存应该叫 DRAM,即动态随机存储器。内存储存颗粒芯片中的存储单元是由电容和相关元件做成的,电容存储电荷的多、少代表数字信号 0 和 1。而随着时间的流逝,电容存在漏电现象,这导致电荷不足,就会让存储单元的数据出错,所以 DRA

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值