Week 1 计算机组成

I. 引

Introduction

    在学习计算机技术之前,了解计算机的组成是非常必要的。这不仅可以让你对硬件有一个大概的了解,而且会让你将来对基于硬件运行的软件有一个更为透彻的理解。只有理解了计算机是如何协调它的部件来工作的才方能理解人们为何这样设计操作系统和程序。

I. 计算机部件

The Essential Components of a Modern PC

    现代计算机都是遵循冯诺依曼体系进行架构的。它由五大部分组成:运算器+控制器+储存器+输入设备+输出设备

    计算机也叫电脑。电脑这个名字是非常贴切的,因为计算机和人脑的工作方式非常相似。我们想象计算机的时候不妨想象一下一个人的大脑。研究表明,想象的画面越是夸张花哨,记忆得越牢靠。试着想象一个非常富有科技感的全息大脑。想象这个大脑正在高速运转。五颜六色的霓虹穿梭于突触之间,那是庞大的数据流在传输。

u=1596299780,1182363738&fm=21&gp=0.jpg

Figure 1

    大部分的计算机组件都安置在主板(Motherboard)上。主板负责接收来自电源(Power)的电流并按需分配给各个配件。主板上还安置了大部分总线(Bus)。总线就像无数的神经突触,将各个部件联系在一起,使它们能进行信息的交换。如果没有了主板,所有的部件之间的连接所需要的线的数量难以想象,会把组装计算机的人逼疯的。主板的存在大大方便了这一点。输入设备(Input)通过主板来接入总线以让我们于计算机交互。如果没有了输入设备,我们便无法使用计算机。如此它便和板砖无二。

    我们的大脑接收外界的信息并对其进行处理。计算机对应的部件叫做CPU(全称为:Central Processing Unit,即中央处理单元)。CPU是镶嵌在主板上的一块芯片。CPU上有许多针脚。每个针脚负责一个简单的运算,比如说加法,取模等等。CPU除了具有处理信息的能力,它还承担了控制器这个角色。这个我们过会儿再讲。

    处理好的信息需要一个地方来存储。人脑中的海马体便是负责短期记忆的。计算机中的内存(RAM,全称为:Random Access Memory)也担当了一样的角色。CPU通过总线将数据存储在内存中。内存分为很多不同的区间,不同区间放着不同的数据。如何才能正确地提取数据并把处理好的数据存放在一个空白的区间呢?CPU的控制器部分就是负责这个功能的,以此来协调计算机的工作。内存的读取和写入速度都非常快,但容量相当有限,而且内存一旦断电就会永久失去所有数据。为了长期储存数据,我们设计了硬盘(Hard Drive)。相对于内存,硬盘的速度比较慢,但是它的容量非常大。为什么我们需要内存和硬盘两个部件而不是只用内存或只用硬盘呢?只用内存的话,速度会非常快,但是一旦断电数据则会全部丢失,非常不现实。新型的NVDIMM内存不会出现断电丢失数据的情况,但是价格相当昂贵。不说NVDIMM内存,普通内存的价格相对于硬盘就非常昂贵。只用硬盘的话,平时运行的时候速度会非常缓慢。所以计算机采取两者兼用的策略。

    GPU(全称:Gprahic Processing Unit, 即图像处理单元)就是我们常说的显卡。我们大脑接收外界的数据之后在脑内构建图像,即我们平时所见的世界。在计算机中,CPU将需要GPU处理的数据通过总线传输给GPU。GPU将数据进行处理并转换成模拟信号传输给显示器(Moniter),最后显示出我们平时所见的图像。

II. 操作系统

Operating System

    不同厂商生产的计算机部件规格不同。程序员面对某一组计算机硬件编写的程序很可能不能在另外一台不同配置的计算机上运行。为了解决这个问题,我们需要通用软件,即可以无视硬件不同运行的软件。操作系统(Operating System,简称OS)便是这样一种软件。操作系统统一了计算机的规格。不管你的CPU是AMD的还是Intel的,操作系统都将其视为提供计算能力的工具。无论你的内存是512MB还是2GB,32位系统默认你拥有4GB内存,64位系统默认你拥有4G个4G内存(天文数字)。规格的统一极大地方便了程序员的工作,所以我们说程序员编程都是面向操作系统编程而不是面向硬件编程。这个统一的规格便是一台虚拟机(Virtual Machine)。世界上有很多不同的操作系统。程序员使用的都是高级语言,比如说C,C++,Java等等。这些语言在不同的操作系统上都可以通用,但是一旦程序被编译了,那程序只能在这个操作系统上运行了,比如说Windows系统编译为的exe格式,Mac系统的dmg格式等等。

    CPU只有一块,但是我们的操作系统平时都可以同时运行数十个不同的进程。这是通过操作系统实现的。操作系统将使用CPU的时间进行切割,以5ms为一个区间,逐个执行进程。5ms之后,无论现在的任务是否完成,立刻进行下一个任务。因为CPU的速度很快,所以我们感觉这些进程是同时运行的。其实CPU每次只能执行一个功能。

    以上。

III. 引用

Reference

  1. http://img2.imgtn.bdimg.com/it/u=1596299780,1182363738&fm=21&gp=0.jpg

原创文章,作者:mercerchen,如若转载,请注明出处:http://www.178linux.com/17954

(0)
mercerchenmercerchen
上一篇 2016-06-10 13:21
下一篇 2016-06-12 10:39

相关推荐

  • 第九周

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现;   1 #!/bib/bash   2 #   3 a=0   4 x=0   5 y=…

    Linux干货 2017-05-25
  • Linux目录配置及文件名种类与扩展名

    Linux目录配置及文件名种类与扩展名 一、FHS目录配置标准 在FHS标准诞生之前,由于有很多公司为Linux开发产品,而又各自有各自的存放路径,所以导致管理困难,因此诞生了FHS标准。 FHS 依据文件系统使用的频繁与否与是否允许用户随意更改,将目录定义成四种交互作用的形态。如下图 可分享的:可以分享给其他系统挂载使用。 不可分享:自…

    Linux干货 2016-08-02
  • linux 入门基础 (二)

    主要内容包含有 文件查找、压缩和正则表达式,以及包是管理和安装。

    2017-09-10
  • 使用Openssl构建私有CA

    使用Openssl构建私有CA Openssl是SSL的开源实现,是一种安全机密程序,主要用于提高远程登录访问的安全性。也是目前加密算法所使用的工具之一,功能很强大。     Openssl为网络通信提供安全及数据完整性的一种安全协议,包括了主要的密码算法、常用的密钥和证书封装管理功能(CA)以及SSL协议,并提供了丰…

    Linux干货 2015-10-07
  • 第二周作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 目录管理类命令: cd:变更目录   命令格式:cd [DIRECTORY] pwd:显示当前目录的绝对路径 ls:显示文件或目录内容     命令格式:ls [OPTION]… [FILE]… &…

    Linux干货 2017-01-08
  • 第七周 系统启动维护管理

    1、简述linux操作系统启动流程 2、简述grub启动引导程序配置及命令行接口详解 3、实现kickstart文件制作与光盘镜像制作    

    2018-01-12