计算机系统漫游

最近开始读深入理解计算机系统这本书,输出一些笔记,以加深自己的理解,如果能让你学到一点知识,那就更好了。

计算机发展这么多年,虽然各种新技术层出不穷,让人眼花缭乱,但底层的原理一直都未曾变化。

信息 = 位 + 上下文

在计算机的世界,只有 0 和 1。然而就是这些简单的 0 与 1 的组合得以保证计算机可以按照人类的意愿有条不紊的运行。一切存储在计算机系统中的数据都会被转化为一串比特位。

一个位可以是 0,也可以是 1,。表示两种状态,开或关,真或假。

上下文是一个很抽象的概念,可以简单理解为可以理解为系统运行时的环境,比如内存中某个变量的值,文件的位置大小,下一条指令指向的地址等都可以称作为上下文。

就像我们读书时总是会遇这样子的课后习题,“请联系下文来解释如下词语的意思”。每当遇到这种题目我都很崩溃,因为这是不像数学题一就是一二就是二,有一个明确的答案。这种题根本没有确定答案的好嘛,完全靠自我发挥,只要大概意思对的上就 OK。

同样的信息在不同的上下文中可能会有不同的意思。好比说你的小女朋友跟你说“你就等着吧‘。很简单的一句话,如果是你们出去游玩你先到了目的地那意思是说让你在那里等一下她。如果你做错了什么事惹她生气了,那意思就是你要倒霉了,等着被收拾吧。你看,同样的一句话,在不同的环境居然表示完全不同的两个意思。这就是上下文的作用 。

编译器

其实可以把它理解为现实世界的翻译官,它负责把人类写的代码翻译成低级机器语言指令。也就是各种 0 和 1 的组合。为啥要翻译成机器语言指令呢,因为计算机只认识这些指令,其他指令它执行不了,就像你跟老外讲家乡话他们听不懂一个道理。那为啥不直接用机器指令来编程呢?因为学习成本太高了,一个简单的加法操作都需要好几条指令配合才能完成。所以才出现了对人类比较有好的高级语言。

计算机硬件

Intel 系统产品族的模型,概述了一个典型系统的硬件组成。

  • 总线
  • IO 设备,即输入输出设备
  • 主存
  • 处理器,通常我们说的 CPU

高速缓存

计算机之所以严格区分硬盘,内存,CPU 是因为容量和存取速度的不匹配致导致的。从硬盘到内存再到 CPU 容量越来越小,存取速度越来越快,价格越来越高。当有一天硬盘的存储速度可以做到和内存相媲美那估计也就不需要内存了。

为了解决 CPU 和内存之间的速度与容量差异,系统引入了高速缓存的概念,主要用于存放处理器近期可能会需要的信息。这点利用了时间局部性原理和空间局部性原理。时间局部性是指如果一个数据或指令被访问,那么在不远的将来很有可能被再次访问。空间局部性是指即现在正在访问的指令,其临近的指令很可能在不远的将来会被访问。利用这点,高速缓存存放处理器近期可能需要的数据和指令,可以将程序的性能提高一个数量级。达到更快更好的效果。

抽象

计算机的世界无处不充满着抽象的概念。例如进程是操作系统对正在运行的应用程序的抽象,文件是对各式各样的 IO 设备的抽象,虚拟内存是对程序存储器的抽象。相比抽象出来的描述,底层的实现更为复杂,通过抽象,我们可以屏蔽繁杂的细节。以达到简化操作提高效率降低出错率的目的。

并发和并行

程序是数据和指令的集合,任何可执行程序在操作系统中都会被抽象为进程。操作系统允许同时执行多个进程,从人类的角度来看这些进程都好像在独自使用硬件一样。这是因为在系统中进程的指令和另外的进程的指令是交替执行的,只是交替时间非常快,快到人类无法察觉罢了。

我们把操作系统实现这种指令交替执行的机制成为上下文切换。

对单核 CPU 来讲,这种情况叫做并发执行,因为严格意义上来讲,在同一时间点只有一个指令在执行,属于交替执行。

但是对于多核 CPU 来讲,不同核心可以在同一时刻执行不同的指令,在同一时间点有多个线程在多个 CPU上同时执行,称为并行执行。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值