作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。为使更多童鞋受益,现给出开源框架地址:
https://github.com/sunshinelyz/mykit-delay
PS: 欢迎各位Star源码,也可以pr你牛逼哄哄的代码。
写在前面
很多小伙伴认为程序员就是写写代码,不需要了解计算机底层的知识和原理。其实,这种观点是错误的。如果你想突破程序员的职业发展瓶颈,计算机硬件、操作系统原理、编译原理等是一定要掌握的知识。而【冰河技术】微信公众号的【程序员进阶系列】专题就是要系统的向大家分享程序员进阶需要掌握的各项知识技能。今天,我们来聊聊一个让程序员很头疼的话题:计算机中的主存是如何进行编址和计算的?以及串并联系统的可靠度如何计算?
文章已收录到:
https://github.com/sunshinelyz/technology-binghe
https://gitee.com/binghe001/technology-binghe
主存编址与计算
这里,小伙伴们首先要区分两个概念,一个是编址,一个是寻址。
编址: 存储器是由一个个存储单元构成的,为了对存储器进行有效的管理,就需要对各个存储单元编上号,即给每个单元赋予一个地址码,这叫编址。经编址后,存储器在逻辑上便形成一个线性地址空间。
寻址: 存取数据时,必须先给出地址码,再由硬件电路译码找到数据所在地址,这叫寻址。
编址可以分为两种:按字编址和按字节编址。
- 按字编址:存储体的存储单元是字存储单元,即最小寻址单位是一个字。
- 按字节编址:存储体的存储单元是字节存储单元,即最小寻址单位是一个字节。
对于主存编址中最常见的计算形式为:根据存储器所要求的容量和选定的存储芯片的容量,就可以计算出所需要的芯片的数量。公式如下所示。
代码语言:javascript复制总片数 = 总容量 / 每片的容量
这里,给小伙伴们举一个例子:若内存地址区间为4000H ~ 43FFH,每个存储单元可存储16位二进制数,该内存区域使用4片存储器芯片构成,则构成该内存所用的存储器芯片的容量是多少?
解题思路也比较简单,我们一起来看看如何解题:
(1)首先,我们来求解4000H ~ 43FFH地址空间的总容量,使用终止地址-起始地址 1即可得到总容量,也就是43FFH - 4000H 1 = 43FFH 1 - 4000H = 4400H - 4000H = 400H。
注意:在计算机中,以H结尾的数字是十六进制,逢16进1,而F在十六进制中表示15,所以,43FFH 1 = 4400H。
所以,4000H ~ 43FFH地址空间的总容量为400H。
(2)接下来,我们要把400H转换成二进制,对于十六进制数转换成二进制数来说,每一位十六进制数对应着四位的二进制数,我们可以把400H拆分成4、0、0三部分,4转换成二进制数就表示0100,十六进制的0转换成二进制为0000。所以,400H转换成二进制的结果为:0100 0000 0000。
0100 0000 0000也就是2的10次方,即为2^10^。
(3)题目中说的每个存储单元可存储16位二进制数,所有总共可以存储的二进制数就是:2^10^ * 16。
(4)该区域使用4片存储器芯片构成,所以,存储芯片的容量为:2^10^ * 16 / 4 = 2^10^ * 4 = 2^12^,最终的结果单位为bit。
总线
一条总线同一时刻只允许一个设备发送数据,但允许多个设备接收数据。
总线的分类
总线可以分为数据总线、地址总线和控制总线。
- 数据总线(Data Bus):在CPU和RAM之间来回传送需要处理或是需要存储的数据。
- 地址总线(Address Bus):用来指定在RAM(Random Access Memory)之中存储的数据的地址。
- 控制总线(Control Bus):将微处理器控制单元(Control Unit)的信号传送到周边设备,一般常见的为USB Bus和1394 Bus。
串联系统与并联系统
这里,先给小伙伴们简单介绍下什么是串联系统,什么是并联系统。
串联系统
串联系统是组成系统的所有单元中任一单元失效就会导致整个系统失效的系统。把用电器各元件逐个顺次连接起来,接入电路就组成了串联电路。我们常见的装饰用的"满天星"小彩灯,常常就是串联的。串联电路有以下一些特点:⑴电路连接特点:串联的整个电路是一个回路,各用电器依次相连,没有"分支点"。⑵用电器工作特点:各用电器相互影响,电路中一个用电器不工作,其余的用电器就无法工作。⑶开关控制特点:串联电路中的开关控制整个电路,开关位置变了,对电路的控制作用没有影响。即串联电路中开关的控制作用与其在电路中的位置无关。
注:以上对于串联系统的描述来源于网络。
接下来,我们来看一个关于串联系统的图形表示,这里我们假设串联系统中每个部分的可靠度依次为R1,R2,...Rn,如下所示。
则整个系统的可靠度为:R = R1 * R2 * ... * Rn。
并联系统
并联系统指的是组成系统的所有单元都失效时才失效的系统。把电路中的元件并列地接到电路中的两点间,电路中的电流分为几个分支,分别流经几个元件的连接方式叫并联。并联电路是使在构成并联的电路元件间电流有一条以上的相互独立通路,为电路组成二种基本的方式之一。例如,一个包含两个电灯泡和一个9 V电池的简单电路。若两个电灯泡分别由两组导线分开地连接到电池,则两灯泡为并联。
即若干二端电路元件共同跨接在一对节点之间的连接方式。这样连成的总体称为并联组合。其特点是:①组合中的元件具有相同的电压;②流入组合端点的电流等于流过几个元件的电流之和;③线性时不变电阻元件并联时,并联组合等效于一个电阻元件,其电导等于各并联电阻的电导之和,称为并联组合的等效电导,其倒数称为等效电阻
注:以上对于并联系统的描述来源于网络。
接下来,我们来看一个关于并联系统的图形表示,这里我们假设并联系统中每个部分的可靠度依次为R1,R2,...Rn,如下所示。
则整个并联系统的可靠度R = 1 - (1 - R1) * (1 - R2) * ... * (1-Rn)。
混合型系统
混合型系统就是既有串联系统,又有并联系统的系统,这里,我们也使用一个图形进行表示,如下所示。
所以,上图并联系统的可靠度为:R * (1 - (1 - R) ^3^) * (1 - (1 - R) ^2^)
好了,今天就到这儿吧,我是冰河,大家有啥问题可以在下方留言