对于程序员,那些既陌生又熟悉的计算机硬件
Posted 架构师修行之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对于程序员,那些既陌生又熟悉的计算机硬件相关的知识,希望对你有一定的参考价值。
程序员一步入中年,不知不觉便会被铺天盖地的“危机感”上身,曾经的那个少年已经不在,时间就是这样公平。就算你能发明c语言,随着时间的推移,你注定还是要成为慢慢变蔫的茄子,缓缓变黑的葡萄。
看着乐视退市的消息,周末我赶紧拉着儿子的小手,复习起了大学那曾经考试”满分“的计算机基础,你别说,只读了一小部分我就发现一个事实,记忆力果然指数级下降,儿子一遍就可以熟记,我却衰退的就像没上过大学。
原来程序员写的程序实际上就是一个由0和1组成的位序列,或者说是比特序列,8个比特(bit)被分为一组,称为字节。系统中所有的信息,包括网络传送的数据,内存中的数据以及磁盘文件,程序等,都是由一串比特(bit)表示的。如果你要问为什么非要8个字节呢?难道不会百度吗?我又不是计算机发明者^_^。可能有一点非常重要,你可以拿去和面试官吹水:一个同样的字节可能代表一个整数,浮点数,甚至字符串,区分他们的唯一方法是这些数据的上下文信息。
顺便提一下,在计算机中数字的表示方式其实是对实际值的有限近似值,只不过一些高级语言对这些值处理的很好而已,不得不吐槽,javascript在处理这个问题上做的不是太好,不信你可以浏览器的F12 运行一下
0.1+0.2
0.30000000000000004
0.01 + 0.05
0.060000000000000005
言归正传,作为一个有着”代码改变世界“梦想的程序员,对自己手艺要精益求精,就必须了解你的真爱的物力构成。无论多diao的软件都运行在硬件基础之上,虽然近几年硬件的发展速度比你衰老的速度还要快,但是核心内容几乎没变,这才是你真爱的裸妆。
先撸一下这个不成熟的百度百科
中央处理器(CPU,central processing unit)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元
CPU表面上是按照一个特定的模型去执行指令,这个模型由指令集的架构来决定的(每个架构类型都不一样,所以才会有AMD,Intel)。自系统通电开始,直到系统断电,CPU一直都在不断的执行指令。如果没有实际的软件执行指令呢?拿windows来说,软件层虚拟出来了一个“System Idle Process”进程,被称为系统空闲进程,这个进程会告诉cpu挂起(停止工作),所以这个进程的cpu使用率和其他进程是相反的意思,它的使用率越高说明CPU的压力越小。
1. 数据加载:从主存复制一段数据到寄存器,以覆盖寄存器中原来的内容。
2. 数据存储:把寄存器中的一段数据复制到主存的一个位置,以覆盖主存原来位置上的内容。
3. 指令操作:把两个寄存器的内容复制到逻辑计算单元,逻辑计算单元会对这两段数据做指令运算,并将结果存储在一个寄存器中。
4. 指令跳转:从指令本身抽取一段内容并复制到程序计数器中,以覆盖程序计数器中原来的值。
老规矩,没有百度不到的知识,一个没有百度百科的名词,说明不是很有名
当年计算机第一堂课,那个地中海的老师就讲过这个概念,虽然具体内容现在已经和我的秀发一并褪去,但是每天的工作中还是能偶尔看到IO这个词。
IO(输入输出)是系统与外部世界的连接通道,像我们每天撸王者农药的鼠标键盘,释放压力看小电影的高清显示器,存储苍老师的磁盘等等,这些都隶属于输入输出设备。
每个IO设备都有一个控制器或者适配器,它是和系统交互的途径,一般都和IO总线连接。说直白一点,每个IO设备都有它的驱动程序,要不然系统不可能无缘无故就能使用键盘鼠标这些设备的,即使现在的外设都是免驱的。
总线是连接整个系统的桥梁,物理上是一组电子管道。他负责携带信息字节并在各个组件之间进行传递,就像我们软件系统设计SOA中的总线。总线根据系统定义的位数来传输定长的数据,每个系统都不一样,不过现在主流的长度要么是四个字节(32位),要么是8个字节(64位)。从这里就可以联想到,64位的系统在数据传输速度上要比32位的系统快一倍,也许将来很快会迈入128,256时代呢
如果非要加一张图的话,此图最有代表性
完
以上是关于对于程序员,那些既陌生又熟悉的计算机硬件的主要内容,如果未能解决你的问题,请参考以下文章