zoukankan      html  css  js  c++  java
  • 计算机基础之硬件简介(Day2)

          计算机一般由运算器,控制器,输出设备,输入设备和存储器这五部分组成。或者说简单点就是由计算机硬件,操作系统和软件组成。学习python后所编写出来的程序属于软件,为了使所编写的软件更有效科学合理,我们有必要了解一下计算机硬件。

        一台简单的个人计算机可以抽象如下图的模型:CPU,内存以及I/O设备都由一条系统总线(bus)连接起来并通过总线与其他设备通信。

       

          一个比喻可以更好的理解:CPU是人的大脑,负责运算;内存是人的记忆,负责临时存贮;硬盘是人的笔记本负责永久保存;输入设备是人的眼睛和耳朵,负责将信息传送给大脑CPU;输出结果是你的表情,负责输出经过处理后的结果;人的神经就相当于总线,将以上部分连接起来。

         (一)CPU

            又叫处理器,工作原理为从内存中取指令----解码---执行,然后再取指令----解码---执行,不断循环直到整个程序被执行完。每个CPU都有自己一套可执行的专门指令集,任何软件的执行最终都要转化成CPU的指令集去执行。

            寄存器:位于CPU内部,用来保存关键变量和临时数据。大小小于1KB。有以下四种类型的寄存器:

              1.通用寄存器:保存变量和临时结果;

              2.程序计数器:保存将要取出的下一条指令的内存地址。在指令取出后,程序计算器就被更新以便执行后期的指令。

              3.堆栈指针:它指向内存中当前栈的顶端。该栈包含已经进入但是还没有退出的每个过程中的一个框架。在一个过程的堆栈框架中保存了有关的输入参数、局部变量以及那些没有保存在寄存器中的临时变量。

              4.程序状态字寄存器(Program Status Word,PSW),这个寄存器包含了条码位(由比较指令设置)、CPU优先级、模式(用户态或内核态),以及各种其他控制位。用户通常读入整个PSW,但是只对其中少量的字段写入。在系统调用和I/O中,PSW非常重要。

            处理器的设计演变:

            初期:取指令,解码,执行这三个是同时进行的,可一次只能执行一个,这意味着有2个是空着的;

           中期:流水线式设计,即执行指令n时,可以对指令n+1解码,并且可以读取指令n+2;

                        

           目前:超变CPU,可同时分别取指,解码,执行多个指令,有一个缓存区。’‘两个或更多的指令被同时取出、解码并装入一个保持缓冲区中,直至它们都执行完毕。只有有一个执行单元空闲,就检查保持缓冲区是否还有可处理的指令”。如下图:

                         

    内核态与用户态:

            用户软件程序不能直接使用计算机硬件,在需要使用时,需用户应用程序将自己的用户态执行状态切换到内核态,给操作系统发一个请求,即通过系统调用(sistem call)。("用户态下工作的软件不能操作硬件,但是我们的软件比如暴风影音,一定会有操作硬件的需求,比如从磁盘上读一个电影文件,那就必须经历从用户态切换到内核态的过程,为此,用户程序必须使用系统调用(system call),系统调用陷入内核并调用操作系统,TRAP指令把用户态切换成内核态,并启用操作系统从而获得服务。")

        (二)存储器

            存储在计算机硬件中占有第二的地位。并不是容量越大,读写就越快。对于硬盘来说,和转速有关系;对于寄存器,内存与固态硬盘来说,和硬件材质有关系;机械硬盘和固态硬盘一个是电的正负性原理一个是磁的正负性原理;存储器系统的分层结果如下图:

                  

                             

            寄存器:即L1缓存,位于CPU内部,与cpu相同材质制造,与cpu一样快,cpu访问它无时延,典型容量是:在32位cpu中为32*32,在64位cpu中为64*64,在两种容量均<1KB;

           高速缓存:即L2缓存,放CPU经常用的程序(寄存器中放最重要的和经常用的程序,但是容量有限,就再划出一个缓存来放经常用的程序),CPU从L2缓存里区程序要比从内存里取程序快很多。经常用的程序不是固定的,有时候在L2缓存里,有时候不在里面。CPU在高速缓存里找到了程序,称为高速缓存命中,在高速缓存中没有找到只能去内存找,叫告诉缓存未命中。L2缓存位置如下图:

                                   

            内存:又叫主存,通常称为随机访问存储RAM。为易失性存储,断电后数据全部消失;除RAM外,还有非易失性只读存贮器(Read Only Memory,ROM),在电源切断之后,非易失性存储的内容并不会丢失,ROM只读存储器在工厂中就被编程完毕,然后再也不能修改。电可擦除可编程ROM(Electrically Erasable PROM)和闪存(Flash Memory)也是非易失性的,但是与ROM相反,他们可以擦除和重写。闪存是数码相机中的胶卷,是便携式音译播放器的磁盘,还应用于固态硬盘。闪存在速度上介于RAM和磁盘之间,但与磁盘不同的是,闪存擦除的次数过多会磨损。还有一种存储就是CMOS,为易失性,许多计算机利用CMOS存储器来计算机时间和日期。除此之外CMOS还保存配置的参数,比如开机时哪一个是启动磁盘等。之所以采用CMOS是因为它耗电非常少,一块工厂原装电池往往能使用若干年,但是当电池失效时,相关的配置和时间等都将丢失

        (三)磁盘

            磁盘低速的原因是因为它一种机械装置,在磁盘中有一个或多个金属盘片,它们以5400,7200或10800rpm(RPM =revolutions per minute 每分钟多少转 )的速度旋转。磁盘---磁道---扇区。1个扇区大小为512Bytes,操作系统是以Block这个单位读写文件的,8个扇区为1个Block。

                                                

             数据都存放在一段一段的扇区上,几磁道这个圆圈中的一小段圆圈,从磁盘读取一段数据要经历寻道时间和延迟时间。有2个概念:平均寻道时间(机械手臂从一个柱面随机移动到相邻的柱面的时间成为寻到时间,找到了磁道就以为着招到了数据所在的那个圈圈,但是还不知道数据具体这个圆圈的具体位置)和平均延迟时间(机械臂到达正确的磁道之后还必须等待旋转到数据所在的扇区下,这段时间成为延迟时间)。

            虚拟内存:许多计算机都支持,指软件程序的大小大于计算机内存的大小。方法是将正在使用的程序放入内存去执行,而暂时不需要执行的程序放到磁盘的某块区域,这块区域称为虚拟内存,在Linux中成为swap,这种机制的核心在于快速地映射内存地址,由CPU中的一个部件负责,成为内存器管理单元(Memory Management Unite  MMU)。

       (四)磁带

            价钱相同时比磁盘的容量更大,缺点是速率慢,但是因其大容量,在地震水灾火灾时可移动性强等特性,常被用来做备份。(常见于大型数据库系统中)。

        (五)I/O设备

            2部分组成:设备控制器和设备本身。

            控制器:是主板上的一块芯片或一组芯片(硬盘,网卡,声卡等都需要插到一个口上,这个口连的便是控制器),控制器负责控制连接的设备,它从操作系统接收命令,比如读硬盘数据,然后就对硬盘设备发起读请求来读出内容。

         控制器的功能:通常情况下对设备的控制是非常复杂和具体的,控制器的任务就是为操作系统屏蔽这些复杂而具体的工作,提供给操作系统一个简单而清晰的接口

    设备本身:有相对简单的接口且标准的,这样大家都可以为其编写驱动程序了。要想调用设备,必须根据该接口编写复杂而具体的程序,于是有了控制器提供设备驱动接口给操作系统。必须把设备驱动程序安装到操作系统中。

        (六)总线

           单总线已经基本淘汰,比较流行的是如下图的多总线,他们处理I/O设备及cpu到存储器的速度都更快。

           北桥即PCI桥:连接高速设备

           南桥即ISA桥:连接慢速设备

                                    

        (七)启动计算机

               在计算机的主板上有一个基本的输入输出程序BIOS(Basic  Input Output system),BIOS就相当于一个小的操作系统,它有底层的I/O软件,包括读键盘,写屏幕,进行磁盘I/O,该程序存放于一非易失性闪存RAM中。

           启动流程

           1.计算机加电

           2.BIOS开始运行,检测硬件:cpu、内存、硬盘等

           3.BIOS读取CMOS存储器中的参数,选择启动设备

           4.从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64为分区信息,最后两个为标志位)

           5.根据分区信息读入bootloader启动装载模块,启动操作系统

           6.然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核。然后初始有关的表格(如进程表),穿件需要的进程,并在每个终端上启动登录程序或GUI

    注: 参考linhaifeng老师课件整理的,课件地址http://www.cnblogs.com/linhaifeng/p/6523843.html#_label5

       

  • 相关阅读:
    局部地区类似淘宝设想
    eclipse中安装GWT插件
    MYSQL数据库设计和数据库设计实例(三)
    MYSQL数据库设计和数据库设计实例(二)
    微软万维天文望远镜(Microsoft World Wide Telescope)
    html学习列表
    java中多线程学习一二点
    win7 64位下完美安装64位oracle 11g
    eclipse运行时不能自动保存的解决方法
    MYSQL数据库设计和数据库设计实例(一)
  • 原文地址:https://www.cnblogs.com/weigege2015/p/7249435.html
Copyright © 2011-2022 走看看