从程序员的角度用人话介绍一下计算机

目的

本文主要目的是做一次计算机知识的科普,把自己对于计算机的理解以及平时使用过程中一些比较重要的要点传播出去,毕竟计算机现在已经深入到了生活的方方面面不简单的是电子产品,更像是新世纪的纸、笔,更加灵活以及熟练的应用以及解决平时的问题将会大大提升工作、生活效率:)

计算机硬件层面的介绍

这里强调一下,本人对于硬件的研究有限在描述自己的理解是可能会有出入,各位求同存异随时指出。

主板

主板上值得介绍的一个是BIOS,一个是CPU,那些南桥北桥之类的东西就不多加介绍了(因为我也不懂),BIOS(Basic Input/Output System)顾名思义它是最基础的输入输出系统,任何电脑在最开始加电启动的瞬间都是这个部位在进行运行、读取、引导。在安装系统的时候选择从U盘启动就是修改的BIOS,可以理解成是这个东西引导了操作系统的启动。之后,当引导权交给操作系统之后,BIOS也就没什么事儿了。可以说BIOS是计算机相当底层的部件,这玩意儿要是整坏了电脑就真的废了。

主板之上另外一个重要的部件就是CPU了,它是计算机的运算器负责了所有的逻辑运算,简单的理解CPU的功能就是加、减、乘、除、与、或、非这些运算操作+逻辑操作,计算机的任何输入都是它来处理之后输出运算结果。

硬盘

硬盘的功能很简单啦,就是存储数据,包括我们的操作系统,各种文档、游戏之类的,这些东西在硬盘上面统一都算作数据,就是简单的0,1的分布排列,包括最开始的系统启动就是BIOS从硬盘读取了系统的引导数据然后加载硬盘上的操作系统内核到内存当中进行,这个过程和后续所有启动进程的过程是类似的,CPU从硬盘读取数据加载到内存,因此硬盘的性能直接影响到了程序/操作系统的启动时间,在某些情况下还会影响到系统使用的流畅度。

内存

内存在某种程度上可以算作是硬盘到CPU的缓存媒介,因为硬盘虽然容量大但是读取速度不够快,内存的读写速度和硬盘是差了数量级别的,CPU本身的cache更快,但是容量又小,所以才有了内存这个缓冲层的存在,所以从这里也能看出来内存的大小、性能直接影响了电脑的运行速度。

显卡

显卡可以与CPU进行类比,CPU擅长的是线性的一维运算,但是对于图形相关的这种二维以及以上的运算(例如游戏)则显得效率有点低下了,因此显卡便应运而生,同时由于近些年AI、区块链、大型游戏的带动,甚至导致了对于显卡的需求高于CPU…

杂项

说完了以上几个大块,剩下的就是一些其他不太重要的设备了,例如网卡、IO设备

操作系统

其实操作系统和我们平时日常使用的软件并没有本质区别,只是各自的功能不同,这句话好好体会一下。以Office为例,其软件本体提供了各种办公工具包括:“文字编辑、图表、幻灯片、数据统计计算等”,而一般使用Office之后的产出就是一个文档,这个文档说白了就是当前在Office基础上做的操作的存档(从这个层面来看,这和大型游戏其实更加贴近)。

而对于操作系统来说,它的主要功能包括:“管理内存、管理硬盘”,这样在操作系统之上进行开发就不用在去关心程序运行过程中的内存管理了,例如什么时候我要把内存放到硬盘、那些内存应该被释放啊之类的,这些东西通通由操作系统来解决了,更严格一点来说,操作系统可以理解为一层软件层,它在硬件和我们日常使用的软件之间作为中间层,因为毕竟对于程序来说他有很多共性,例如申请/释放内存、读写硬盘,在最初计算机诞生的时候是没有操作系统的,那时候的程序员如果要编写一个程序,就需要自己来管理内存、硬盘,久而久之有一些大神程序员慢慢的把这些功能抽象出来,于是便有了这个大型软件操作系统。如果当年的程序员放现在,那个个都是大神级别的人物了。

所以你看,操作系统和我们日常使用的软件是没有什么本质区别吧?

Windows

这里以Windows为例简单说一下操作系统使用过程中的一些概念。

运行速度

大家最关心的应该就是运行速度了,上面也有简单介绍,这里再详细讲解一下,决定电脑运行速度的主要就是已下三个指标:

  • CPU
    • 得益于CPU的飞速发展,在日常使用中已经很少是运行的瓶颈了,只有在电脑进行密集型操作的时候才会有所影响,例如打开大型游戏时需要加载游戏本体以及游戏的大型模型,或者是打开有几百万 X 几百万数量级的Excel
  • 内存
    • 对于系统、软件的运行其表现形式就是被加载到了内存当中,除了内存本身的质量会影响内存速度以外,对于我们用户来说最明显的指标就是内存大小了,因为内存越大表明了程序可使用的空间越大,如果内存不足,操作系统就会将不常用的内存写入硬盘保存起来,加载目前最迫切需要的数据到内存,之后如果写入硬盘的内存数据需要使用,就有需要将其从硬盘加载进来,刚才也说了硬盘的读写速度和内存是差距很大的(固态硬盘好很多),所以内存的大小会直接影响我们使用过程中的速度。
  • 硬盘
    • 所有的数据包括操作系统、Office、游戏这些本体都是在硬盘中保存,所以当他们开始运行的时候都是首先从硬盘进行读取,硬盘的性能直接决定了系统的启动时间、以及其它软件在首次运行时的加载速度,并且当物理内存不足时也会影响到系统的运行速度。

盘符

操作系统默认都是放在C盘的,结合上文也就能知道对于一块SSD一块普通硬盘的机器为什么将SSD作为C盘,并且将操作系统装入了。

分区

分区是为了更好的管理硬盘,包括分类,以及出问题时的数据修复,这块儿忘得差不多了就不多说了。

注册表

对于大型软件往往其会包含很多配置项,有的配置项会放在软件安装目录下面以文本形式保存,这样的好处就是便于查看、编辑。但坏处也很明显,如果有人误删了,或者这是一个付费软件,我只需要改一个配置他就免费了!

微软的设计师就想,我能不能引入一种机制,所有系统的关键性配置我都放在这个里面,并且这个东西要开放给全世界的编程人员使用,大家把自己重要的配置都用这种方式保存起来,于是,为了实现一个美好的愿想我们才华横溢的设计师就发明了注册表,从此以后系统的关键配置,以及各种软件的配置信息都存在了这个里面。

等等,我们是不是忘了啥?对应注册表配套的清理机制有吗?没有。使用注册表不是为了让关键配置更加隐秘吗?但是直接运行regedit这不还是可以直接查看、编辑吗!!!

所以,注册表这个奇葩的东西会随着系统使用越来越大,因为很多二流的开发人员只管往里面写入配置,而当软件被卸载的时候。。。你都不用我了!?我还管你这个?呸!当注册表越来越大的时候,对其的读取自然也就越来越慢了。。。

所以你看系统的运行速度是取决于很多东西的,既有硬件层面的,也有软件层面的

网络

网络比较复杂这里就简单说一下了。

电脑发明的初期是作为单点来使用的,后来为了让电脑与电脑之间进行交互便发明了网络,计算机之间沟通只需要接入同一个路由器下面,并且配置上正确的IP地址就OK了,这个IP地址就理解成手机号,因为沟通的前提是彼此需要有一个唯一标示的记号,这个IP便是了。在我们的局域网当中一般来说需要两个东西来进行唯一标示,那就是IP地址+子网掩码,例如地址是192.168.1.1掩码是255.255.255.0,他还有一种写法是192.168.1.1/24,因为255.255.255.0的二进制标示就是24个1。正确分配了IP地址之后,这样局域网内部的通讯就没有问题了,这个时候就可以联机开黑打游戏啦。

但是如果想要访问外面的世界,我们还需要有争取的DNS服务器配置,这个配置各个地区不一样,可以填写路由器的内网ip,或者自己手动填写当地网络运营商的官方IP,之后才能愉快的上网。

这里简单说一下上网的过程,例如我们请求qq.com,这个时候我们会发送网络请求到DNS服务器寻味qq.com对应的ip地址是什么,例如我们得到的应答是1.1.1.1,这个时候我们就会去请求1.1.1.1,之后就建立了网络连接,这里需要注意的是我们所有对外的请求都是经过路由器转发出去的,因此想要正常的上网需要有三个条件:

  1. 内部局域网之间的通讯正常
  2. 路由到外部网络的通讯正常
  3. DNS服务器正确配置

所以上不了网也是有很多种情况出问题的,对于那种只会嚷嚷我上不了网了的程序○真是无力啊o(╯□╰)o

就先简单说这些吧,后面想到其他再补充

转载请注明来源链接 http://just4fun.im/2018/02/16/从程序员的角度用人话介绍一下计算机/ 尊重知识,谢谢:)