当前位置:网站首页>对于程序员,那些既陌生又熟悉的计算机硬件
对于程序员,那些既陌生又熟悉的计算机硬件
2020-11-09 23:53:00 【架构师修行之路】
程序员一步入中年,不知不觉便会被铺天盖地的“危机感”上身,曾经的那个少年已经不在,时间就是这样公平。就算你能发明c语言,随着时间的推移,你注定还是要成为慢慢变蔫的茄子,缓缓变黑的葡萄。
看着乐视退市的消息,周末我赶紧拉着儿子的小手,复习起了大学那曾经考试”满分“的计算机基础,你别说,只读了一小部分我就发现一个事实,记忆力果然指数级下降,儿子一遍就可以熟记,我却衰退的就像没上过大学。
原来程序员写的程序实际上就是一个由0和1组成的位序列,或者说是比特序列,8个比特(bit)被分为一组,称为字节。系统中所有的信息,包括网络传送的数据,内存中的数据以及磁盘文件,程序等,都是由一串比特(bit)表示的。如果你要问为什么非要8个字节呢?难道不会百度吗?我又不是计算机发明者^_^。可能有一点非常重要,你可以拿去和面试官吹水:一个同样的字节可能代表一个整数,浮点数,甚至字符串,区分他们的唯一方法是这些数据的上下文信息。
顺便提一下,在计算机中数字的表示方式其实是对实际值的有限近似值,只不过一些高级语言对这些值处理的很好而已,不得不吐槽,JavaScript在处理这个问题上做的不是太好,不信你可以浏览器的F12 运行一下
0.1+0.2
0.30000000000000004
0.01 + 0.05
0.060000000000000005
言归正传,作为一个有着”代码改变世界“梦想的程序员,对自己手艺要精益求精,就必须了解你的真爱的物力构成。无论多diao的软件都运行在硬件基础之上,虽然近几年硬件的发展速度比你衰老的速度还要快,但是核心内容几乎没变,这才是你真爱的裸妆。
CPU
先撸一下这个不成熟的百度百科
中央处理器(CPU,central processing unit)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元
说的直白一点,这个家伙几乎是软件运行的核心,是解释和执行指令的引擎。目前主流的cpu的核心是一个32位或者64位(未来还可能更大)长度的存储设备或者寄存器,被称为程序计数器(PC,一个蛋疼的简称)。在任何时刻,程序计数器都指向内存中某条指令的地址。
CPU表面上是按照一个特定的模型去执行指令,这个模型由指令集的架构来决定的(每个架构类型都不一样,所以才会有AMD,Intel)。自系统通电开始,直到系统断电,CPU一直都在不断的执行指令。如果没有实际的软件执行指令呢?拿windows来说,软件层虚拟出来了一个“System Idle Process”进程,被称为系统空闲进程,这个进程会告诉cpu挂起(停止工作),所以这个进程的cpu使用率和其他进程是相反的意思,它的使用率越高说明CPU的压力越小。
CPU从程序计数器指向的内存地址读取指令内容,并解释该指令执行指令的操作,然后更新程序计数器,使他指向下一条指令,而这条指令很有可能和上条指令并非相邻。简单来说,cpu可能会频繁的执行以下操作
- 数据加载:从主存复制一段数据到寄存器,以覆盖寄存器中原来的内容。
- 数据存储:把寄存器中的一段数据复制到主存的一个位置,以覆盖主存原来位置上的内容。
- 指令操作:把两个寄存器的内容复制到逻辑计算单元,逻辑计算单元会对这两段数据做指令运算,并将结果存储在一个寄存器中。
- 指令跳转:从指令本身抽取一段内容并复制到程序计数器中,以覆盖程序计数器中原来的值。
主存
老规矩,没有百度不到的知识,一个没有百度百科的名词,说明不是很有名
主存储器(Main memory),简称主存。是计算机硬件的一个重要部件,其作用是存放指令和数据,并能由中央处理器(CPU)直接随机存取。现代计算机是为了提高性能,又能兼顾合理的造价,往往采用多级存储体系。即由存储容量小,存取速度高的高速缓冲存储器,存储容量和存取速度适中的主存储器是必不可少的。主存储器是按地址存放信息的,存取速度一般与地址无关。
主存是一个临时的存储设备,在程序被执行过程中用来临时存放程序内容和处理结果。从物理来讲,主存是由一组动态随机存取存储器芯片组成(你可以想象成一大排二极管),从逻辑上来讲,主存是一个线性的字节数组,每个字节都有一个唯一的地址,这些地址是从0开始的,现在主流的主存在个人计算机上已经是16G的大小,让我这个还在用4G主存的老人无言以对呀。
输入输出设备
当年计算机第一堂课,那个地中海的老师就讲过这个概念,虽然具体内容现在已经和我的秀发一并褪去,但是每天的工作中还是能偶尔看到IO这个词。
IO(输入输出)是系统与外部世界的连接通道,像我们每天撸王者农药的鼠标键盘,释放压力看小电影的高清显示器,存储苍老师的磁盘等等,这些都隶属于输入输出设备。
每个IO设备都有一个控制器或者适配器,它是和系统交互的途径,一般都和IO总线连接。说直白一点,每个IO设备都有它的驱动程序,要不然系统不可能无缘无故就能使用键盘鼠标这些设备的,即使现在的外设都是免驱的。
系统总线
总线是连接整个系统的桥梁,物理上是一组电子管道。他负责携带信息字节并在各个组件之间进行传递,就像我们软件系统设计SOA中的总线。总线根据系统定义的位数来传输定长的数据,每个系统都不一样,不过现在主流的长度要么是四个字节(32位),要么是8个字节(64位)。从这里就可以联想到,64位的系统在数据传输速度上要比32位的系统快一倍,也许将来很快会迈入128,256时代呢
如果非要加一张图的话,此图最有代表性
更多精彩文章
版权声明
本文为[架构师修行之路]所创,转载请带上原文链接,感谢
https://my.oschina.net/caicaijun/blog/4710340
边栏推荐
- Formal class D25
- 会展云技术解读 | 面对突发事故,APP 如何做好崩溃分析与性能监控?
- 2018中国云厂商TOP5:阿里云、腾讯云、AWS、电信、联通 ...
- Exception: invalid or unexpected token
- CUDA_存储器模型
- 推动中国制造升级,汽车装配车间生产流水线3D可视化
- C++异常实现机制
- Python中[:]与[::]的用法
- Software engineering in code -- source code analysis of menu project
- Assign the corresponding key and value in the map to the object
猜你喜欢
Function calculation advanced IP query tool development
Unemployment after graduation? How do college students allocate their study time and have a complete computer knowledge system?
Python提示AttributeError 或者DeprecationWarning: This module was deprecated解决方法
DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
Must see! RDS database all in one
SQL intercepts the data before and after the '.'
Hand in hand to teach you to use container service tke cluster audit troubleshooting
Application of V7 version of lvgl Library
Using tail as time series to identify whales
会展云技术解读 | 面对突发事故,APP 如何做好崩溃分析与性能监控?
随机推荐
获取List集合对象中某一列属性值
Unity使用transform.Rotate进行三维旋转角度出现偏差
公网IP地址和SSL证书可以提升SEO吗?
代码中的软件工程--对menu项目的源码分析
Problems of input and button (GAP / unequal height / misalignment) and Solutions
Exhibition cloud technology interpretation | in the face of emergencies, how does app do a good job in crash analysis and performance monitoring?
PL/SQL Developer临时用户和新手的功能指南
Python提示AttributeError 或者DeprecationWarning: This module was deprecated解决方法
sql 截取数据中 ‘.’的前后数据
Raspberry pie drum set WiFi
Common concepts and points for attention of CUDA
Optimization of commodity backstage system
CUDA_获取指定设备
The number of more than half of the array is printed by the sword
Top 5 Chinese cloud manufacturers in 2018: Alibaba cloud, Tencent cloud, AWS, telecom, Unicom
必看!RDS 数据库入门一本通(附网盘链接)
函数计算进阶-IP查询工具开发
Incomplete Polyfill of proxy
做个别人家的网页
Error running app:Default Activity not found 解决方法