带你读《跟老男孩学Linux运维:核心基础篇(上)(第2版)》之一:计算机硬件与组成基础

简介: 本书是一本以企业Linux运维需要的知识为基础的实战型教学图书,书的内容并非大而全,但处处可以体现实战二字,非常多的内容取自于企业实战案例,并结合老男孩十几年的运维经验和教学经验进行梳理。

Linux/Unix技术丛书
点击查看第一章
点击查看第二章
跟老男孩学Linux运维:
核心基础篇(上)(第2版)

image.png

老男孩 著

第0章 计算机硬件与组成基础

0.1 计算机硬件分类

1.家用台式电脑介绍
家用台式电脑主要分为主机和显示器两部分(如图0-1所示),一般用于家庭娱乐(例如,听音乐、打游戏、看电影等),优点是可以配置独立显卡、声卡、显示器等设备,因此配置会更高一些,娱乐时更让人享受;缺点就是设备的体积和重量都太大,占地方且移动不方便,其在国内一二线城市已经逐步退出历史舞台了,被简便、小巧并且同样可以拥有高配置的笔记本电脑所取代。
2.笔记本电脑介绍
笔记本电脑以简便、轻巧、携带方便等优点被更多人选择使用(如图0-2所示),其早期多用于办公,现在已经逐步走进千家万户,成为国内计算机用户的主流选择。与早期的产品不同,现在的笔记本电脑的部件配置也可以很高,并且价格早已下降到普通用户可以接受的程度了。

image.png

0.2 运维与服务器

90%以上的Linux基础图书,都只讲解了Linux基础以及Linux开发,而未提及Linux运维这个岗位名词,其实学Linux最直接的目的就是维护Linux服务器,哪怕是开发人员,学习的目的也是如此,因此本书不会只讲解Linux,而是根据企业Linux运维岗位真正的需求来讲解Linux基础及Linux运维核心知识,使得读者在学习Linux的同时,可以对未来企业里的Linux运维工作岗位所需的知识有一个很好的了解,这也是本书区别于其他Linux基础图书的核心所在。

0.2.1 运维人员的三个核心职责

下面来看一下运维人员的三大核心职责。

  • 企业数据安全(不丢失、不泄露)。
    企业数据是现代各个IT企业的生命线,作为Linux运维人员,不但不能丢失任何数据,同时,也不能向外部人员泄露公司的任何有用数据。读者可以搜索“拖库事件”以了解当下社会上的企业数据安全信息。
  • 企业业务7×24小时运行(永不停机)。
    互联网企业甚至是传统企业(例如,银行和电信),除了数据安全之外,还需要业务有持续运行的能力,这对Linux运维人员提出了更高的要求,也是运维人员高薪的原因。

如表0-1所列举的是企业网站和应用的可用性的衡量标准。

image.png

其中,一般中小企业的业务持续可用性级别至少应该是99.9%,中大型企业应达到99.99%甚至是99.999%。

  • 企业业务服务效率高(用户体验好)。
    一切的企业工作最终都是为了向用户提供高效、舒心的服务,如果网站打开的速度很慢,用户体验很差,那么这样的企业是没有任何生命力的,因此Linux运维人员需要不断地优化网站业务,使得用户能够进行高效的访问,这种能力是决定Linux运维人员是否能拿高薪的必备条件。

image.png

0.2.2 运维人员工作的主战场—服务器

1.什么是服务器?
服务器是提供计算和存储服务的设备(如图0-3所示)。由于服务器需要响应服务请求,并进行处理,因此一般来说,服务器应具备承担服务及保障服务的能力。服务器的构成包括处理器、硬盘、内存、系统总线等,这与通用的计算机架构类似,但是由于需要提供高性能高可靠的服务,因此,在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。

image.png

上述对于服务器的介绍比较复杂,一句话概括:服务器就是一台特殊的计算机,配置更高,设备更贵更好,主要用在企业的后台,为用户提供各种业务服务
服务器的功能:搭建网站(互联网企业常见应用)等应用服务所使用的机器,相对于其他台式电脑、笔记本电脑来说,使用服务器更加稳定可靠,其硬件有7×24小时的持续运行能力。
2.服务器的尺寸
就像笔记本电脑的显示器按照屏幕大小可分为14英寸、15.6英寸等一样,服务器也是有尺寸的,这个尺寸一般用于描述服务器的高度,即(U)(如图0-4所示)。

image.png

服务器的尺寸是按U计算的。1U服务器表示服务器的高度是4.45cm(1.75英寸)。
如图0-5所示,服务器的内部结构与台式电脑大同小异,基本零部件与台式电脑一样必须要有,例如,CPU处理器、内存、磁盘,所不同的是,服务器可以容纳的CPU处理器的数量更多,风扇也更多,可插拔的硬盘数量也可以多很多,后文将为大家详细讲解服务器的内部组件。

image.png

关于服务器,如有不了解或者存在疑问的地方,可以咨询相关的服务器销售人员,他们一定会很乐意回答。

0.2.3 服务器按外形分类

1.机架式服务器
机架式服务器的外形看起来不像计算机,而更像“抽屉”(如图0-6所示),有1U(1U=1.75英寸=44.45mm)、2U、4U等规格。机架式服务器一般安放在标准的19英寸机柜里面,是工作中使用最多的服务器类型。

image.png

2.刀片服务器
刀片服务器的外观类似于一个箱子里摆放整齐的书(如图0-7所示)。
所谓刀片服务器(准确地说应该叫作刀片式服务器),是指在标准高度的机架式机箱内插装多个卡式服务器单元,以实现高可用性和高密度。每一块“刀片”实际上就是一块系统主板。它们可以通过“板载”硬盘启动自己的操作系统,如Windows 8/10、Linux等,类似于一个个独立的服务器。在这种模式下,每一块母板均会运行自己的系统,服务于指定的不同用户群,相互之间没有关联,因此相对于机架式服务器和机柜式服务器,单片母板的性能较低。不过,管理员可以使用系统软件将这些母板集合成一个服务器集群。在集群模式下,所有的母板都可以连接起来,从而提供高速的网络环境,并且它们还会共享资源,为相同的用户群服务。在集群中插入新的“刀片”即可提高整体性能。而由于每块“刀片”都是热插拔的,所以,系统可以轻松地进行替换,并且将维护时间减少到最小。

image.png

3.塔式服务器—更强壮的计算机
塔式服务器(Tower Server)应该是最容易理解的一种服务器结构类型,因为它的外形及结构都与立式PC差不多(如图0-7所示)。当然,由于服务器的主板的扩展性较强,插槽也多出了若干个,所以外观会比普通主板大一些,因此塔式服务器的主机机箱也比标准的ATX机箱要大,一般都会预留足够的内部空间以便日后进行硬盘和电源的冗余扩展。但这种类型的服务器具有不少局限性,比如,在需要多台服务器同时工作以满足较高的服务器应用需求时,由于其个体比较大,占用空间比较多,也不方便管理,所以会显得很不适合。

image.png

0.3 互联网公司的服务器品牌

国内互联网公司使用的服务器品牌比较多,从笔者及同行和学员从事的互联网公司来看,DELL品牌的服务器是最多的,也是性价比较高的,下面笔者将比较了解的品牌整理成一个简表,见表0-2。

image.png

需要说明的是,现在越来越多的企业直接购买云服务了,因此,服务器硬件也逐渐落寞。随着云服务器的发展,中小企业直接购买硬件的机会也越来越少,各类硬件工程师的岗位和前景越来越不明朗,建议这部分人员加速转行到Linux运维或者Python开发的领域(在这两个领域上,他们之前用到的技术都可以叠加到Linux运维上)。

0.4 服务器品牌详解及对应型号

1. Dell服务器
如表0-3所示的是Dell服务器生产与使用的时间,以及对应的U数,读者可以参考。

image.png

下面推荐一些查询DELL服务器配置的方式。

图0-9~图0-12以Dell R720 2U服务器为例说明了服务器的外部结构。

image.png

2. IBM服务器
IBM服务器的型号及对应的U数见表0-4。

image.png

IBM服务器质量好,但价格贵,互联网公司不太常用,仅作了解即可。
目前来看,“IOE”代表了全球三个领域里最好的品牌,即IBM服务器、Oracle(甲骨文数据库)和Emc(存储厂商设备),但互联网公司从2010年起就在提倡去IOE,代表企业为阿里巴巴集团,企业去IOE的本质是企业变大以后,购买IOE的成本开销会成倍增加,而且IOE的设备都是黑盒运行,并不能为企业完全掌控,受限于厂商。

0.5 服务器(计算机)核心零部件介绍

图0-13为拆开盖子后的Dell服务器内部结构图,读者可以通过此图了解Dell服务器的内部结构信息,其中对相关区域做了简单标记。

image.png

0.5.1 电源

电源相当于人体的心脏,需保障电力供应,如果要买服务器,请选择质量好的电源。
在生产中,若是单个服务器负责核心业务,那么最好使用双电源,分别接机房A、B线路。如果服务器是集群中的一台(若干机器做一件事),那么可以不用双电源。除此之外,运维工作就不用再过多考虑电源的其他问题了。
电源的代表示例如图0-14和图0-15所示。

image.png

0.5.2 CPU处理器

CPU处理器相当于人体的大脑,负责整个计算机的运算和控制,是影响服务器性能效率的最核心部件(如图0-16所示)。
CPU常见的种类分为精简指令集和复杂指令集两类,具体说明如下。
精简指令集的CPU设计代表有SUN公司的SPARC系列和ARM系列等,这类CPU的设计特点是指令集精简,每个指令执行的时间很短,操作很简单、效率较高。

image.png

复杂指令集的设计代表有大家熟知的Intel至强系列(XEON)(应用广泛)和AMD系列(应用不多)等。这类CPU的设计特点是指令数量多、指令集复杂,且执行的时间较长,但能处理的事务更多、更丰富。
Intel、AMD作为x86架构的CPU,主要用于PC或DELL等常见品牌的系列服务器上。
服务器CPU的颗数,我们称为路数。例如,DELL R630 双路1U服务器、DELL R720 双路2U服务器、DELL R830四路2U服务器。
CPU一般通过频率吉赫兹(GHz)表示性能的好坏,频率越高速度越快,简单地说,CPU频率就是用来表示CPU每秒钟的工作次数,例如,笔者所用电脑的CPU是Intel (R)Core (TM) i7-6700HQ CPU @ 2.60Hz (8CPUs),~2.6GHz。
企业级常见的物理服务器配置包括如下两种。

  • 一般企业里的服务器,CPU个(颗)数为2~4颗,单个(颗)CPU是四核。内存总量一般是16~256GB(32GB、64GB比较常见)。
  • 用于虚拟化的宿主机(例如,应用VMware(虚拟化软件)、KVM的主机),CPU颗数可达4~8颗,内存总量一般是48~128GB,常规企业可以同时启动6~10个虚拟机,甚至更多,主要是根据业务需求决定虚拟机的配置大小。

CPU长时间运行会发热,因此需要配置降温的设备,即CPU风扇或散热片(如图0-17和图0-18所示),散热片主要是用金属铜或者铝制作的,目的是将热量快速传导出去。

image.png
image.png

在企业级系统运维中,选择CPU硬件配置,以及监测和优化服务器系统的CPU性能,是运维人员的常见工作之一。CPU的优化是一项复杂的工作,需要长期的实践和反复观察,由于这部分内容的难度很大且复杂,笔者在后期出版的系列高级技术图书中会加重笔墨,读者可以重点关注。

0.5.3 内存

内存(RAM)是CPU和磁盘之间的缓冲设备(如图0-19所示),是临时存储器(用于存放数据)。若断电,数据就会丢失。

image.png

程序运行的时候,一般会被调度到内存中执行,服务器关闭或程序关闭之后,数据将自动从内存中释放掉。
1.程序和进程的基本概念
这里简单介绍程序和进程的区别,具体见表0-5。

image.png

2.企业案例:提升用户体验的网站解决方案
(1)门户(大网站)极端案例:大并发写入案例(抢红包、微博)
遇到高并发、大数据量“写”数据的极端情况时,系统会将数据先写到内存中,在数据积累了一定的量后,再定时或者定量地写到磁盘中以减轻磁盘的压力,减少磁盘I/O(Input/Output,磁盘的输入/输出),最终再将数据加载到内存中以对外提供访问,目的还是为了减轻对磁盘的访问压力,相关流程如图0-20所示。

image.png

这种状况的特点具体如下。

  • 优点是写数据到内存时,性能高、速度快(适用于微博、微信、SNS(社交网)、秒杀等场景)。
  • 缺点是可能会丢失一部分在内存中还没有来得及存入磁盘的数据。

解决数据丢失的方法具体如下。

  • 在服务器主板上安装蓄电池,在断电后宕机前瞬间将内存数据回写到磁盘。
  • UPS(一组蓄电池)不间断供电(IDC数据中心机房一般都会用UPS持续供电)。UPS(Uninterruptible Power System/Uninterruptible Power Supply),即不间断电源,是将蓄电池(多为铅酸免维护蓄电池)与主机相连接,通过主机逆变器等模块电路将直流电转换成市电的系统设备。
  • 选双路电的机房,使用双电源、分别接不同路的电,以及将服务器放到不同的机柜中,将企业业务放置到不同的地区(异地)。
  • 柴油发电机+油罐,机房一般会与附近的加油站签订紧急供油协议。

(2)中小型企业案例
对于并发访问(可简单理解为同时访问的数量)不是很大、数据量也不是特别大的网站,若是业务读多写少,则会先将数据写入磁盘中,然后通过程序将写到磁盘的数据读到内存中,再对外通过读取内存提供访问服务(如图0-21所示)。绝大多数企业的业务逻辑还是读请求(例如,浏览页面)多于写请求(例如,写文章、发朋友圈)。

image.png

3.企业Linux面试题:计算机操作系统中,缓冲区和缓存区有什么区别?
对于新手,可参考如下说明来理解或解答。
(1)缓冲区
将数据写入内存,这个数据的内存空间在Linux系统里一般称为缓冲区(buffer),例如,写入到内存缓冲区,即写缓冲。
为了提高写操作性能,数据在写入最终介质或下一层级介质之前会合并放入缓冲区中。这样会增加数据持久写的延时,因为第一次写入缓冲区后,在向下写入数据之前,还要等待后续的写入,以便凑够数据或者定时写入到永久存储介质中。
(2)缓存区
从内存中读取数据,这个存数据的内存空间在Linux系统里一般称为缓存区(cache),例如,从内存缓存区读取,即读缓存。
操作系统利用缓存提高文件系统的读性能和内存的分配性能,应用程序使用缓存也是为了提高读访问效率。将经常访问的操作结果保存在缓存中可备随时使用,而非总是执行读磁盘以获取数据等开销较高的操作。
记住一句话:缓存无处不在,无论是电脑硬件、操作系统,还是企业网站集群及其他业务系统!

0.5.4 磁盘

1.磁盘的基础知识
磁盘就是永久存放数据的存储器(如图0-22、图0-23和图0-24所示),不过,磁盘上也是有缓存的(芯片)。

image.png

常用的磁盘(硬盘)都是3.5英寸的,常规的机械硬盘,读取(性能不高)性能相比内存差很多,所以,在企业中,我们才会将大量的数据缓存到内存中,写入到缓冲区中,这是当今互联网网站必备的解决网站访问速度慢的方案。
磁盘的接口包括IDE、SCSI、SAS、SATA等种类,其中IDE、SCSI已退出历史舞台。
磁盘的类型又分为机械磁盘和SSD(固态硬盘)两种。
性能与价格排序(从高到低):SSD(固态硬盘)>SAS> SATA。
2.磁盘的相关单位
现在生产的单块磁盘的容量越来越大,体积却越来越小,速度也越来越快,其中,常见的磁盘有300GB、600GB、1TB、3TB、4TB等规格。

image.png

3.计算机与服务器的各硬件I/O对比
I/O(Input/Output)即输入/输出,一般翻译为读写。衡量磁盘读写速度的单位是iops,即input/output per second(每秒的输入输出)。
通过图0-25不难发现,CPU的速度最快,其次是内存,最慢的就是硬盘和网卡了。图0-25可以帮助读者理解不同设备的性能差距,未来做运维工作的时候,可从速度慢、瓶颈大的设备进行改进和转化。
4.小结

image.png

  • 企业级硬盘适合7×24小时持续使用,一般较贵,与笔记本电脑以及家用台式电脑的硬盘有区别(工业级和家用)。
  • 对于企业高并发网站来讲,系统都会尽量让用户从内存中读取数据,而不是硬盘。
  • 企业运维和架构师做网站优化,以及服务器、软件优化的核心本质,几乎都是在调整磁盘和内存之间的使用比例。
    图0-26所示的是缓存在服务器各硬件上的速度和大小对比另类维度图解,从上到下由高速到低速,容量从小到大。

image.png

0.5.5 Raid卡(阵列卡)

当企业的网站(业务)数据量很大,单块盘装不下了的时候,若购买多块硬盘存放数据,则需要利用工具(Raid)将所有硬盘整合成一个大磁盘,再在这个大磁盘上分区(划分隔断、虚拟磁盘)存放数据,但是硬盘多了势必会有损坏,可数据是不能丢的。因此,Raid还具备另一大功能,就是多块硬盘放置在一起可以配置冗余(备份),即使若干硬盘有损坏,数据也不会丢失,又因为业务对多块硬盘存储的数据访问效率也有需求,因此,Raid分成了不同的级别。比如,Raid0、Raid1、Raid10、Raid5等,更多具体划分情况将在本书后文详细说明。
那么,什么是Raid呢?它其实是一种技术,称为磁盘冗余阵列,Raid的实现有软Raid(即软件实现)和硬Raid(即硬件实现),二者的主要区别就是,硬件Raid的实现性能、冗余都更好、更高。不过,在企业真正的重要服务器里,Raid几乎是不被采用的,请读者注意这点。
1. Raid卡(阵列卡)的好处

  • 可以将所有硬盘整合到一起(扩充容量)。
  • 可以使得数据更加安全(数据冗余)。
  • 可以获得更高的效率(读写性能)。

如果有Raid卡,则一般会将磁盘连接到Raid卡上,而不是直接插到主板上,Raid卡最终将插到主板对应的插槽里。
与Raid卡相关的内容如图0-27和图0-28所示。

image.png

前面已经提到过,Raid分软Raid和硬Raid,其中,硬Raid卡又分两种,具体如下:

  • 服务器板载Raid卡,缺点是只支持Raid0或Raid1级别。
  • 独立Raid卡,支持更多功能。

2. Raid的多种整合方式(Raid级别)
Raid级别有很多种,常见的Raid级别有Raid0、Raid1、Raid5、Raid10。
互联网公司的服务器一般都会购买独立Raid卡,Raid卡上也是有缓存的,具体说明如下:

  • 冗余从好到坏:Raid1、Raid10、Raid5、Raid0
  • 性能从好到坏:Raid0、Raid10、Raid5、Raid1
  • 成本从低到高:Raid0、Raid5、Raid1、Raid10

image.png

0.5.6 光驱

光驱作为一个设备也已经几乎退出历史舞台了,几乎所有的影视剧、音乐等也都不再使用光驱发行。
在企业应用中,光驱主要用于为服务器装系统,不过,出于为公司省钱考虑,可在购买服务器时淘汰光驱,换成下面的高效安装方式。

  • 用U盘做镜像来安装系统。
  • 还可以使用更高端的网络安装(ftp、http),无人值守批量安装系统(pxe+ kickstart)。

参考文档:
http://blog.oldboyedu.com/autoinstall-kickstart/
http://blog.oldboyedu.com/autoinstall-cobbler/
以下课程里提供了无人值守安装的面授课程和视频课程,读者有需要可以进入www.oldboyedu.com 咨询。

0.5.7 远程管理卡

远程管理卡是服务器特有的远程管理部件,在家用电脑及笔记本电脑上是不存在的,如图0-29所示。

image.png

远程控制卡的作用是通过网络远程(异地)开关服务器,并可以查看服务器开关的过程等信息,早期(2010年以前),服务器托管在IDC机房,如果出现问题,运维人员必须亲自到机房或者请机房中的人管理,有了管理卡之后,运维人员管理服务器的效率就大大提高了。
远程管理卡分为服务器自带远程管理卡和独立远程管理卡两类。服务器自带的远程管理卡,可以关机、开机,但是看不到开关服务器的过程。因此,建议为服务器配备独立的远程管理卡,成本上可能会多花人民币100元左右,但是好处是很明显的,当服务器出现问题时,不用打车或出差,也不用给机房人员打电话,而是可以利用管理卡快速查看服务器故障及恢复服务。

0.5.8 机房里的服务器

服务器一般是存放在机房的机柜里面的,一定要为服务器的各类线贴上规范标签,标记出每根线的用途等必要信息,如图0-30和图0-31所示。

image.png

作为一名专业的Linux运维人员,不仅要熟悉Linux运维基础,在工作中也需要更专业和规范,下面是关于运维人员专业性的一篇文章,希望能提供一些启发:http://blog.51cto.com/oldboy/2083789

0.5.9 主板(普通电脑)

主板实际上就是一块电路板,相当于人体的骨架,CPU、内存、磁盘、Raid卡等所有硬件设备最终都要连接在主板上,才能正常工作。图0-32展示的是普通台式电脑的主板示意。

image.png

这里主要介绍一下南桥芯片、北桥芯片和BIOS芯片。
南桥芯片(South Bridge)是主板芯片组的重要组成部分,一般位于主板上离CPU插槽较远的下方、PCI插槽的附近。这种布局是考虑到它所连接的I/O总线较多,离处理器远一点有利于布线。相对于北桥芯片来说,其数据处理量并不算大,所以南桥芯片一般都没有覆盖散热片。南桥芯片不与处理器直接相连,而是通过一定的方式(不同厂商的各种芯片组有所不同,例如,英特尔的英特尔Hub Architecture以及SIS的Multi-Threaded“妙渠”)与北桥芯片相连。
南桥芯片负责I/O总线之间的通信,如PCI总线、USB、LAN、ATA、SATA、音频控制器、键盘控制器、实时时钟控制器、高级电源管理等,这些技术相对来说一般比较稳定,所以在不同的芯片组中,它们的南桥芯片可能是一样的,不同的只是北桥芯片。南桥芯片的发展方向主要是集成更多的功能,例如网卡、Raid、IEEE 1394,甚至是Wi-Fi无线网络等。图0-32中,中间靠下的那个较大的芯片就是主板的南桥芯片。
北桥芯片(North Bridge)负责与CPU联系,并且会控制内存、AGP数据在北桥内部传输,提供对CPU的类型和主频、系统的前端总线频率、内存的类型(SDRAM、DDR SDRAM以及RDRAM,等)和最大容量、AGP插槽、ECC纠错等的支持,整合型芯片组的北桥芯片还集成了显示核心。北桥芯片就是主板上离CPU最近的芯片,这主要是考虑到北桥芯片与处理器之间的通信最为密切,因此,为了提高通信性能而缩短了传输距离。因为北桥芯片的数据处理量非常大,发热量也越来越高,所以现在的北桥芯片都覆盖着散热片以加强散热,有些主板的北桥芯片还会配合风扇进行散热。
BIOS(Basic Input Output System)芯片(CMOS芯片)(如图0-33所示)负责主板通电后各部件的自检、设置和保存,一切正常后才能启动操作系统。其记录了电脑最基本的信息,是软件与硬件打交道的最基础的桥梁,没有它,电脑就不能正常工作。

image.png

常见的三种BIOS分别为Award、AMI、Phoenix。

0.6 计算机和服务器的主要构成图解

一台计算机是由许许多多的零部件组成的,只有这些零部件组合在一起协调地工作,才能称之为计算机(如图0-34所示)。计算机发展到现在,虽然零部件都发生了很大的变化,但其工作原理却没有改变,其中包括主板、CPU、内存、硬盘、显卡、声卡等,其基本工作原理如图0-35所示。

image.png

首先,用户通过鼠标、键盘等输入设备,将文字、图形等传给计算机,通过CPU(复制控制和计算)进行处理,需要永久存储的数据将会存储到硬盘里,需要持久执行的程序将会调度到内存(RAM)里运行,需要显示的信息将会通过显示器等设备显示给用户。
图0-36所示的是计算机硬件设备的三角形图解,可为读者了解计算机设备提供参考。

image.png

上文有关电脑硬件的介绍纯属扫盲用的,读者了解一些硬件基础就够用了,下面将详细讲解服务器的核心部件组成及相关的知识点,这对于想了解企业Linux运维工作核心的读者来说就是关键的知识了。

0.7 计算机系统基础

0.7.1 冯·诺依曼计算机

提到计算机,就不得不提及在计算机的发展史上做出杰出贡献的著名应用数学家冯·诺依曼(Von Neumann),是他带领专家提出了一个全新的存储程序的通用电子计算机方案。这个方案规定了新机器由5个部分组成:运算器、逻辑控制装置、存储器、输入和输出(如图0-37所示)。并描述了这5个部分的职能和相互关系。这个方案与早期的ENIAC相比,有两个重大改进:一是采用二进制;二是提出了“存储程序”的设计思想,即用记忆数据的同一装置存储执行运算的命令,使程序的执行可以自动地从一条指令进入下一条指令。这个概念被誉为计算机史上的一个里程碑。计算机的存储程序和程序控制原理因此称为冯·诺依曼原理,按照上述原理设计制造的计算机称为冯·诺依曼机。

image.png

简单概括就是,冯·诺依曼计算机结构包含3条重要的设计思想,具体如下。

  • 计算机应由运算器、控制器、存储器、输入设备和输出设备5大部分组成。
  • 以二进制的形式表示数据和指令。
  • 程序预先存入存储器中,计算机在工作中能够自动地从存储器中取出程序指令并加以执行。

0.7.2 计算机系统的基本工作原理

1.计算机的指令系统
指令是指能被计算机识别并执行的二进制代码,它规定了计算机能够完成的某一种操作。一条指令通常由如下两个部分组成:

image.png

  • 操作码:它用于指明该指令要完成的操作,如存数、取数等。操作码的位数决定了一个机器指令的条数。当使用定长度操作码格式时,若操作码位数为n,则指令条数可有2n条。
  • 操作数:它是指操作对象的内容或者所在的单元格地址。在大多数情况下,操作数是地址码,地址码有0~3位。从地址代码得到的仅是数据所在的地址,既可以是源操作数的存放地址,也可以是操作结果的存放地址。

2.计算机的工作原理
计算机的工作过程实际上是快速地执行指令的过程。计算机在工作时,共有两种信息在流动,一种是数据流,另一种是控制流。
数据流是指原始数据、中间结果、结果数据、源程序等。控制流是由控制器对指令进行分析、解释后向各部件发出的控制命令,用于指挥各部件之间协调地工作。
下面通过指令的执行过程来认识计算机的基本工作原理吧!计算机的指令执行过程可分为如下几个步骤。
1)取指令。从内存储器中取出指令送到指令寄存器。
2)分析指令。对指令寄存器中存放的指令进行分析,由译码器对操作码进行译码,将指令的操作码转换成相应的控制电信号,并由地址码确定操作数的地址。
3)执行指令。它是由操作控制线路发出的完成该操作所需要的一系列控制信息,以完成该指令所需要的操作。
4)为执行下一条指令做准备。形成下一条指令的地址,指令计数器指向存放下一条指令的地址,最后控制单元将执行结果写入内存。
上述步骤执行完毕后,也就完成了一条指令,一条指令的执行过程称为一个“机器周期”。指令的执行过程如图0-38所示。

image.png

计算机在运行时,CPU从内存读取一条指令到CPU内执行,指令执行完毕,再从内存读取下一条指令到CPU执行。CPU不断地读取指令、分析指令、执行指令,再读取下一条指令,这就是程序的执行过程。
总之,计算机的工作就是执行程序,即自动连续地执行一系列指令,而程序开发人员的工作就是编制程序,使计算机持续地工作。

0.7.3 计算机数据记录单位

由于计算机是通过电位记录信息的,因此仅能识别0和1这两个数字,故而在计算机内部,数据都是以二进制的形式存储和运算的,下面就来介绍计算机数据的常用计量单位。
1.位(bit)
计算机存储数据的最小单位为位(bit),中文称为比特,一个二进制位只能表示0或1两种状态,若要表示更多的信息,则要将多个位组合成一个整体,一般以8位二进制组成一个基本单位。由于比特这个单位太小了,因此用比特作为单位的情况比较少,网络带宽速率一般用Mbit/s来表示,正常的下载速度就是1Mbit/s=128KBytes/s,这就是购买了1MB的带宽,而实际下载速度为128 KBytes/s的原因。
2.字节(Byte)
字节是计算机数据处理的基本单位。字节(Byte)简记为B,规定1字节为8位,即1B=8bit。每字节由8位二进制组成。一般情况下,一个ASCII码占用1字节,一个汉字占用2~4字节。
3.数据的换算关系
1Byte=8bit,1KB=1024B,1MB=1024KB,1GB=1024MB,1TB=1024GB,1PB=1024TB,1EB=1024PB,1ZB=1024EB

0.7.4 计算机常用计数制

用若干数位(由数码表示)的组合去表示一个数,各个数位之间是什么关系,即逢“几”进位,这就是进位计数制的问题,也就是数制问题。数制,即进位计数制,是人们利用数字符号按进位原则进行数据大小计算的方法。通常是以十进制来进行计算的,另外,还有二进制、八进制和十六进制等。
在计算机的数制中,读者需要掌握3个概念,即数码、基数和位权。下面简单介绍一下这3个概念。

  • 数码:一个数制中表示基本数值大小的不同数字符号。例如,八进制有8个数码,即0、1、2、3、4、5、6、7。
  • 基数:一个数值所使用的数码的个数。例如,八进制的基数为8,二进制的基数为2。
  • 位权:一个数值中某一位上的1所表示数值的大小。例如,八进制的123,1的位权是64,2的位权是8,3的位权是1。

1.十进制(Decimal notation)
十进制的特点具体如下。

  • 包含10个数码:0、1、2、3、4、5、6、7、8、9。
  • 基数:10。
  • 逢十进一(加法运算),借一当十(减法运算)。

十进制转换为十进制的计算式举例说明如下。
例如,将一个整数123456转换为十进制表示的计算式为:
123456=1×105+2×104+3×103+4×102+5×101+6×100
2.二进制(Binary notation)
二进制的特点具体如下。

  • 包含两个数码:0、1。
  • 基数:2。
  • 逢二进一(加法运算),借一当二(减法运算)。

二进制转换为十进制的计算式举例说明如下。
例如,将一个二进制数1101转换为十进制表示的计算式为:
1×20+0×21+1×22+1×23=13
3.八进制(Octal notation)
八进制的特点具体如下。

  • 包含8个数码:0、1、2、3、4、5、6、7。
  • 基数:8。
  • 逢八进一(加法运算),借一当八(减法运算)。

八进制转换为十进制的计算式举例说明如下。
例如,将一个八进制数123转换为十进制表示的计算式为:
3×80+2×81+1×82=83
4.十六进制(Hexadecimal notation)
十六进制的特点具体如下。

  • 包含16个数码:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
  • 基数:16。
  • 逢十六进一(加法运算),借一当十六(减法运算)。

在16个数码中,A、B、C、D、E和F这6个数码分别代表十进制的10、11、12、13、14和15,这是国际上通用的表示法。
十六进制转换为十进制的计算式举例说明如下。
例如,将一个十六进制数5F3A转换为十进制表示的计算式为:
10×160+3×161+16×162+5×163=24 634
二进制数与其他数之间的对应关系如表0-6所示。

image.png

0.8  计算机中数据的表示

0.8.1  数值数据的表示

1.机器数和真值
计算机中使用的是二进制,因此只有0和1这两种值。一个数在计算机中的表示形式,称为机器数。机器数所对应的原来的数值称为真值,由于采用二进制必须将符号数字化,因此通常是利用机器数的最高位作为符号位的,但仅用来表示数符。若该位为0,则表示正数;若该位为1,则表示负数。机器数也有不同的表示方法,常用的机器数共有3种:原码、补码和反码。
机器数的表示方法:用机器数的最高位代表符号(若为0,则代表正数;若为1,则代表负数),其数值位为真值数的绝对值。举例用8位二进制数表示一个数,如图0-39所示。

image.png

在数的表示中,机器数与真值的区别是:真值带符号如-0011100,机器数不带数符,最高位为符号位,如10011100,其中最高位1代表符号位。
例如,真值数为-0111001,其对应的机器数为10111001,其中最高位为1,表示该数为负数。
2.原码、反码、补码的表示
在计算机中,符号位和数值位都是用0和1来表示的,在对机器数进行处理时,必须考虑对符号位的处理,也就是对符号和数值的编码方法。常见的编码方法有原码、反码和补码这3种方法。下面分别讨论这3种方法的使用。
(1)原码的表示
一个数X的原码表示为:符号位用0表示正,用1表示负;数值部分为X的绝对值的二进制形式。这里将X的原码表示记为[X]原。
例如,当X=+1100001时,则[X]原=01100001。
当X=-1110101时,则[X]原=11110101。
在原码中,0有两种表示方式,分别如下。
当X=+0000000时,[X]原=00000000。
当X=-0000000时,[X]原=10000000。
(2)反码的表示
一个数X的反码表示方法为:若X为正数,则其反码与原码相同;若X为负数,则在原码的基础上,符号位保持不变,数值位各位取反。这里将X的反码表示记为[X]反。
例如,当X=+1100001时,则[X]原=01100001,[X]反=01100001。
当X=-1100001时,则[X]原=11100001,[X]反=10011110。
在反码表示中,0也有两种表示形式,具体如下:
当X=+0时,则[X]反=00000000。
当X=-0时,则[X]反=10000000。
(3)补码的表示
一个数X的补码表示方式为:当X为正数时,则X的补码与X的原码相同;当X为负数时,则X的补码,其符号位与原码相同,其数值位取反加1。这里将X的补码表示记为[X]补。
例如,当X=+1110001,则[X]原=01110001,[X]补=01110001。
当X=-1110001,则[X]原=11110001,[X]补=10001111。

0.8.2 非数值数据的表示

计算机中使用的数据有数值型数据和非数值型数据两大类。数值数据用于表示数量意义;非数值数据又称为符号数据,包括字母和符号等。计算机除了要处理数值信息之外,还需要处理大量字符信息。例如,将用高级语言编写的程序输入到计算机时,人与计算机通信时所用的语言就不再是一种纯数字语言而是字符语言。由于计算机中只能存储二进制数,这就需要对字符进行编码了,从而建立起字符数据与二进制串之间的对应关系,以便于计算机识别、存储和处理。这里介绍两种符号数据的表示。
1.字符数据的表示
计算机中用得最多的符号数据就是字符,它是用户和计算机之间的桥梁。用户使用计算机的输入设备,通过键盘上的字符键向计算机内输入命令和数据,计算机将处理后的结果以字符的形式输出到屏幕或打印机等输出设备上。字符的编码方案也有很多种,但使用最广泛的是ASCII码(American Standard Code for Information Interchange)。ASCII码开始时是美国国家信息交换标准字符码,后来被采纳为一种国际通用的信息交换标准代码。
ASCII码由0~9这10个数符,52个大、小写英文字母,32个符号及34个计算机通用控制符组成,共有128个元素。因为ASCII码总共有128个元素,因此使用二进制编码表示时需用7位。任意一个元素均由7位二进制数表示,从0000000到1111111共有128种编码,可用来表示128个不同的字符。ASCII码表的查表方式是:先查列(高三位),后查行(低四位),然后按从左到右的书写顺序完成,如B的ASCII码为1000010。在ASCII码进行存放时,由于它的编码是7位,且因1字节(8位)是计算机中常用的单位,故仍以1字节来存放1个ASCII码字符,每字节中多余的最高位取0。如表0-7所示为7位ASCII码字符编码表。

image.png

由表0-7可知,ASCII码字符可分为如下两大类。

  • 打印字符:从键盘输入并显示的95个字符,如大小写英文字母各26个,数字0~9这10个数字字符的高3位编码(D6D5D4)为011,低4位为0000~1001。当去掉高3位时,低4位正好是二进制形式的0~9。
  • 不可打印字符:共33个,其编码值为0~31(0000000~0011111)和(1111111),不对应任何可印刷字符。不可打印字符通常为控制符,用于计算机通信中的通信控制或对设备的功能控制。如编码值为127(1111111),是删除控制DEL码,它用于删除光标之后的字符。

ASCII码字符的码值可用7位二进制代码或2位十六进制代码来表示。例如字母D的ASCII码值为(1000100)2或84H,数字4的ASCII码值为(0110100)2或34H等。
2.汉字的存储介绍
英语是拼音文字,所有文字均由26个字母拼组而成,所以使用1字节表示一个字符就足够了。但汉字是象形文字,汉字的计算机处理技术比英文字符要复杂得多,一般用2字节表示一个汉字。由于汉字有一万多个,常用的也有六千多个,所以编码采用2字节的低7位共14位二进制来表示。
常用的、支持汉字的计算机字符编码有UTF8、GB2312、GBK等。更多信息请参考https://baike.baidu.com/item/%E6%B1%89%E5%AD%97%E7%BC%96%E7%A0%81/7123465

0.9 计算机硬件基础问题小结

1)你用过的服务器型号有哪些?具体的配置有哪些?
2)程序、进程和守护进程有什么区别?
3)提升用户体验的网站优化解决方案有哪些?
4)谈谈计算机中buffer与cache的简单区别。
5)描述Raid 0、Raid1的主要特点。
6)描述电脑的主流硬件作用及其之间的关系(CPU、内存、磁盘)。
7)描述冯·诺依曼计算机的设计思想。
8)请描述计算机数据的多种单位与换算。
9)什么是二进制,计算机是如何用二进制表示数据的。
10)为什么买来的硬盘的实际大小比它标称的大小小?
11)运维人员的三大核心工作职责是什么?

0.10 本章相关资料

1)十进制如何转换为二进制?
https://jingyan.baidu.com/article/597a0643614568312b5243c0.html
2)企业真实DELL服务器硬件手把手拆卸介绍视频
http://v.qq.com/page/g/x/y/g016789xvxy.html

相关文章
|
24天前
|
运维 监控 网络协议
|
10天前
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
29 3
|
1月前
|
存储 运维 搜索推荐
|
1月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
36 1
|
1月前
|
运维 网络协议 安全
Linux安全运维--一篇文章全部搞懂iptables
Linux安全运维--一篇文章全部搞懂iptables
42 1
|
1月前
|
Web App开发 运维 安全
1Panel:一个现代化、开源的 Linux 服务器运维管理面板
1Panel:一个现代化、开源的 Linux 服务器运维管理面板
|
2月前
|
运维 监控 Linux
深入理解Linux系统运维:命令行工具的力量
【9月更文挑战第14天】在Linux的世界里,命令行工具是系统管理员的瑞士军刀。本文将带你领略命令行的魅力,从基础操作到高级技巧,让你的运维工作更加高效和精准。准备好了吗?让我们一起开启这段探索之旅!
|
3月前
|
图形学 开发者 存储
超越基础教程:深度拆解Unity地形编辑器的每一个隐藏角落,让你的游戏世界既浩瀚无垠又细节满满——从新手到高手的全面技巧升级秘籍
【8月更文挑战第31天】Unity地形编辑器是游戏开发中的重要工具,可快速创建复杂多变的游戏环境。本文通过比较不同地形编辑技术,详细介绍如何利用其功能构建广阔且精细的游戏世界,并提供具体示例代码,展示从基础地形绘制到植被与纹理添加的全过程。通过学习这些技巧,开发者能显著提升游戏画面质量和玩家体验。
151 3
|
2月前
|
消息中间件 运维 Linux
linux之centos运维kafka
linux之centos运维kafka
|
3月前
|
传感器 缓存 Prometheus
在Linux中,如何进行硬件性能监控?
在Linux中,如何进行硬件性能监控?