了解一些计算机内幕
初次接触计算机时,可以将计算机看作是键盘、显示器、鼠标、光盘驱动器、主机箱及它们之间的连接线。然而随着与计算机接触的逐渐深入,我们会被计算机所拥有的强大功能所吸引。好奇心强的人就会思考:那个机箱里面到底是什么东西呢?为什么按动键盘、移动鼠标,屏幕上就有反应?
那个机箱里有很多重要的电子部件,这些部件及键盘、鼠标、显示器等外围设备被统称为硬件。而支配这些硬件工作的指令系统被称为软件。这些硬件中最宝贵的核心部件是中央处理器(CPU)—相当于人的大脑。CPU负责完成软件系统提交给它的指令。另一个宝贵的部件是内存。内存虽然叫“内”存,但不是CPU内部的存储器,而是CPU外部的存储器。那为什么叫内存呢?因为还有一种存储器是计算机硬件的一部分,那就是硬盘、光盘、U盘等存储设备。这些存储设备一般容量都非常大,有些是可以移动的。它们被称为外部存储器,简称外存,而和CPU一起安插在计算机主板上的存储器被称为内存。内存的容量、CPU的主频通常被看作是计算机配置水平的核心标志。CPU、内存及各种外围设备之间的逻辑关系如图1-10所示。
图1-10 CPU、内存及各种外围设备之间的逻辑关系
CPU内部的存储器被称为寄存器。这些寄存器中有一个叫IP的寄存器特别重要。IP寄存器就像CPU的眼睛,CPU只能执行IP所看到的指令。而这些指令及这些指令所要处理的数据实际就存放在内存中。内存就像一张信纸,上面写满了一行一行的机器指令和数据。CPU利用IP寄存器一行一行地阅读这些指令并按照指令操作。当然,要完成机器指令的操作,还需要其他多个寄存器的帮忙,这里就不多说了。
可以说,CPU和内存是计算机中最紧俏的资源,任何程序都想要尽量多地占有,然而任何一个程序都不可能完全占有这些资源,因为整个计算机系统的运行实际上是在被称为操作系统(Operating System,OS)的管理软件的控制之中。操作系统负责均衡这些紧俏资源的分配。
内存是按照字节连续编址的,相当于将一张白纸画上道道使之成为信纸一样。内存的基本单位是字节,而且这些字节是连续存放的。内存所包含的字节数被称为内存的容量。一个字节是8个二进制位,这在下一节会得到解释。
当我们给计算机通电启动时,CPU的IP寄存器一开始有一个固定值,它指向系统启动引导的一段指令,这段指令的主要任务是初始化各种部件和外围设备,使之处于可以工作的状态,并且寻找外部存储器中的引导区,将引导区中的指令写入固定一段内存中,并执行引导区的指令,这些指令则设置操作系统的初始状态,写入操作系统中的指令到固定内存中,这些指令负责计算机各种资源的管理,比如任务调度、内存管理、设备管理、时间管理等,最后启动一个叫做Shell的程序与用户打交道。这个Shell对于Windows系统来说就是桌面程序,对于光荣退役而又恋恋不舍地工作到今天的DOS来说,就是cmd.exe,也就是前面提到的DOS虚拟机。
正是因为有操作系统的存在,我们才可能比较简单快捷地运行一个程序。在“我的电脑”或者“资源管理器”中,双击任何一个可执行文件,该程序就立即得到运行。这个看似简单的操作背后隐藏着相当繁杂的过程。操作系统首先为该程序分配一定的内存,然后将该程序的部分指令写入到该内存中,并设定IP寄存器指向该程序的第一条指令,并开始顺序执行。由于在多任务的操作系统环境中,同时运行着多个程序,操作系统还要负责在一定间隔内将IP分配给其他程序,让其他程序占有CPU。如果程序在运行过程中,向系统申请内存,操作系统还需要划分出一块空闲的内存给申请者。这些过程都是隐藏着的,程序是看不到这些的。在每一个程序看来,它独自占有CPU和全部内存!只是假象哦。