穿越计算机迷雾

首先,这是一本书,大概20-30块钱,还算便宜,口碑也不错
其实我也不喜欢就是看书,看书完全是因为有些知识确实看不懂了,难以理解,我看这本书的时候,就是因为看不懂
java的一个框架的运行原理,其实不需要看这么深入的,但是不知不觉的就看了。

促使立即看这本书的原因是:我在今日头条上看见一个问题,JAVA面试官,问int占多少个字节。
然后下面好多程序员都在讨论了
    有说这个问题都不知道不配做程序员
    有说java里是4个字节
    还有说2个字节的。
    千奇百怪~~~ 
    
其实这个问题是没有太大意义的,因为大多数公司的JAVA程序员其实都用不到这个知识,就好比问农民伯伯汽车的方向盘有什么用一样,虽然是扩展知识,但却是不搭嘎

---

我就是因为看不懂java的一个框架的运行原理,就去看了java生成的原理,深入理解jvm虚拟机,结果还是有看不懂的,
想着jvm是C写的,我去学了C语言,发现了内存管理,最终发现计算机的数据是由0和1的二进制组成,虽然总是听说
计算机都是由0-1组成,但是还是不知道为什么,最终发现了电的开关就是二进制0和1的表现方式,然后看到了电是
如何产生的,发现了自由电子,然后推导出了热能生电,只是这么想着,结果百度了一下,热还真能直接生电,说过了
,我今天想说的不是能量由波传播,也不是利用太空的波,因为我也只是逻辑上的猜想,我今天只想说一些,计算机的事。

计算机发展,离不开200多年前发现电的富兰克林。

计算机的运行完全是由电支撑,所以一切都要从电开始,电的开关就可以表示二进制的1-0两个数(先不说如何用电来这
么快速的表示1-0,并计算),我们再来说说电报(电生磁,磁生电的原理,让另一头机械跳动,相同的跳动形式表示同一个意思)
、无线电通信[ 电磁波,电的传播其实是自由电子的运动,如果让一端电压特别高(电子多),一端电压很低(电子少),
然后两端接近,能量要平衡,则能量由波的形式传输出去,则形成了电磁波 ]

----

从上面看,目前所有的一切都离不开电。

如果仅仅用电是否流动表示二进制1-0,那么计算机什么都做不了,最多可以运用电器元件和数学知识模拟加法运算,
再或者仅仅传播1-0的二进制数据。

我们再想想,电的是否连通表示1-0的数据模拟,我们想让计算机做加法,是不是要自己控制开关呢 ?那么自己控制开关,
我觉得是不可能实现的,所以出现了二极管但是没太大用,最终出现了我们电脑需要的三极管
(三极管的运行+数学知识 让三级管仿佛有了计算能力),以及发展到现在的晶体管(计算机的主要组成部分CPU)。


说到这里差不多了, 计算机的组成 = CPU + 声卡 + 显卡 + I/O + 存储

他们其实都是独立的!!!!!
他们共同配合,所以才有了现在功能如此全面的计算机。

CPU:目前先进的CPU是由数十亿个晶体管组成,晶体管主要是用于计算,其实三极管也是用于计算的,就是因为
电器元件的限制,所以计算机只能做加法,这是总所周知的。8位的CPU,做个不恰当的水管流水的比喻(实在不好解释),
8位代表有8个进水口,16位代表有16个进水口,32位代表有32个进水口,计算速度更快。
而目前市面大多,32位系统、64位系统,这个其实是指软件上的,比如用C语言写好程序,用64位编译,最终就会导致,
这个程序某个地方做加法,需要64个水管同时运行,但如果CPU其实只有32根水管,这样下来,程序是不能运行的。所以现在的程序员
为了兼容,其实都是用32位系统进行代码编译的。这也是32位CPU不能装64位系统的原因,但目前市面上几乎全部都是64位的CPU了。

所以,不管多少位CPU其实都是用来计算的,int所占内存大小也是人为规定的。
16位的操作系统int占2个字节,int不管是在64、32位操作系统都是4个字节,但是这个指的是C语言写的程序,C语言是其它语言的母语。
但是,严谨的来说,int所占内存大小分为两种情况: 
一、只看操作系统(操作系统也是C语言写的,不要问我C语言是怎么写出来的),目前的电脑 int 都只占4个字节。
二、与编译器有关 (C 语言标准中没有明确规定整型数据的长度,但是上层高级语言,如JAVA的int类型,创始人依然可以自定义)
假如:我重新编写一个F语言,也是用C语言编写的,我还是可以定义F语言的int类型为8个字节。大不了对应成C语言的long类型
(当然没那个语言设计师这么无聊,但是这种情况又不得不承认存在)

所以该这么回答:以java、C语言为例,整型数据在内存中占的字节数与所选择的操作系统有关,int在32位和64位操作系统中,
都是占4个字节。


声卡:I/O声卡的作用就是将声波转为的电信号转换为二进制/或者将二进制转换为电信号。振荡器让声卡频率越高,
就代表一瞬间能处理到更多的电信号,声音就更加保真。

显卡:I/O显卡,专门用来处理图像,一张超大的图片,需要快速的更加细腻的展示出来,就需要显卡,将图片二进制快速的临时
保存起来,再将二进制与图片的色彩位数一一对应。

I/O: 其实就是数据的读写,I/O越好,读写数据越快。

存储: 就是数据的保存,保存数据的速度也有快慢与大小。


另外,还有键盘、显示器、温度计等。。。。

这些都是通过驱动器将数据转换为专门的二进制,或者将二进制转换为的我们看的懂得数据。

作为程序员最重要的是了解计算机的内存,知道内存条、内存、堆内存、栈内存、寄存器、常量区等他们的关系及运行原理。

我们主要的目的,是搞懂这个问题,可惜的是,这个本书关于内存,只是讲了硬件上是如何实现存储,并没有讲我想知道的知识。

  1. 寄存器是CPU内部最基本的存储单元
  2. CPU对外是通过总线(地址、控制、数据)来和外部设备交互的,总线的宽度是8位,同时CPU的寄存器也是8位,那么这个CPU就叫8位CPU
  3. 如果总线是32位,寄存器也是32位的,那么这个CPU就是32位CPU
  4. 有一种CPU内部的寄存器是32位的,但总线是16位,准32为CPU
  5. 所有的64位CPU兼容32位的指令,32位要兼容16位的指令,所以在64位的CPU上是可以识别32位的指令
  6. 在64位的CPU构架上运行了64位的软件操作系统,那么这个系统是64位
  7. 在64位的CPU构架上,运行了32位的软件操作系统,那么这个系统就是32位
  8. 64位的软件不能运行在32位的CPU之上

寄存器、缓存、内存三者关系:

1. 按与CPU远近来分,离得最近的是寄存器,然后缓存(CPU缓存),最后内存。

2. CPU计算时,先预先把要用的数据从硬盘读到内存,然后再把即将要用的数据读到寄存器。于是 CPU<--->寄存器<--->内存,这就是它们之间的信息交换。

3. 那为什么有缓存呢?因为如果经常操作内存中的同一址地的数据,就会影响速度。于是就在寄存器与内存之间设置一个缓存。

4. 因为从缓存提取的速度远高于内存。当然缓存的价格肯定远远高于内存,不然的话,机器里就没有内存的存在。

5.由此可以看出,从远近来看:CPU〈---〉寄存器〈---> 缓存 <---> 内存。

后面探索~~~


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值