zoukankan      html  css  js  c++  java
  • 计算机基础

    一、编程语言的作用及与操作系统和硬件的关系

          编程语言就和我们人与人之间交流所用到的语音一样,是一门语言,只不过它是用于人与计算机交流的语言,比如:C,C++,C#,JAVA,Python等等都是编程语言。它的作用大多数是程序员用于编写程序,也就是我们所用到的软件。而我们程序员所编写的软件是必须运行在操作系统之上的,操作系统呢,就是用来控制计算机硬件的。所以说我们要学好一门编程语言,就要首先要学习计算机的硬件,然后是操作系统,最后就是python这门语言了。

    二、计算机硬件发展史

          http://www.cnblogs.com/linhaifeng/p/6428430.html

    三、计算机的组成

         计算机是由硬件系统和软件系统两大部分组成的。

         硬件系统主要有五大部分组成:运算器、控制器、存储器、输入设备、输出设备。

         运算器:是负责算术运算与逻辑运算。与控制器共同组成了中央处理器(CPU)。

         控制器:是负责发送和接收指令。

         存储器:是用来存储正在进行程序、将要进行程序的数据及刚处理完的数据。

         输入设备:是用来进行输入的设备。如键盘,扫描仪等。

         输出设备:是用来进行输出的设备。如显示器,音箱等。

         主板:主板一般为矩形电路板,上面安装了组成计算机的主要电路系统,一般有BIOS芯片、I/O控制芯片、键和面板控制开关接口、指示灯插接件、扩充插槽、主板及插卡的直流电源供电接插件等元件。

         BIOS是英文"Basic Input Output System"的缩略语,即"基本输入输出系统"。是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。

         I/O控制芯片:负责提供串行、并行接口及软盘驱动器控制接口。

    3.1  硬件和软件与用户的关系

          硬件是基础,硬件通过系统软件控制来启动硬件,并让各个硬件之间相互协同工作,在系统软件的基础上是用户,用户操纵的是操作系统,并在系统软件的基础上安装相应的应用软件,来完成用户所需的工作。所以说最底层的是硬件,硬件上是系统软件,系统软件上一层是应用软件,而最上层的是用户。

    3.2 操作系统

          操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口,功能包括管理计算机系统的硬件,软件及数据资源,控制程序运行,改善人机界面,为其他应用软件提供支持,为其他软件的开发提供必要的服务和相应的接口等。实际上,用户不用接触操作系统的,操作系统管理着计算机硬件资源,同时按照应用程序的资源请求,分配资源,如划分CPU时间,内存空间的开辟,调用打印机等。

    3.3 计算机硬件介绍

          大致来讲,计算机可以抽象为CPU、内存以及I/O设备都由一条系统总线(bus)连接起来并通过总线与其他设备通信,如下图:

    (1)CPU:计算机的大脑

          CPU的作用就是从内存中取指令->解码->执行,然后再从内存里面取指->解码->执行,这样不断循环操作直到程序执行完成为止。在这期间,CPU访问内存的得到数据或者指令的时间要比执行的时间要长,所以,就需要一个地方来存储临时数据和关键变量,那就是寄存器

    寄存器的分类:

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

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

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

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

    寄存器的维护:

      操作系统必须知晓所有的寄存器。在时间多路复用的CPU中,操作系统会经常中止正在运行的某个程序并启动(或再次启动)另一个程序。每次停止一个运行着的程序时,操作系统必须保存所有的寄存器,这样在稍后该程序被再次运行时,可以把这些寄存器重新装入。

    处理器设计的演变:

          1.最开始取值、解码、执行这三个过程是同时进行的,这意味着任何一个过程完成都需要等待其余两个过程执行完毕,时间浪费

          2.后来被设计成了流水线式的设计,即执行指令n时,可以对指令n+1解码,并且可以读取指令n+2,完全是一套流水线。

          3.超变量cpu,比流水线更加先进,有多个执行单元,可以同时负责不同的事情,比如看片的同时,听歌,打游戏。

    两个或更多的指令被同时取出、解码并装入一个保持缓冲区中,直至它们都执行完毕。只有有一个执行单元空闲,就检查保持缓冲区是否还有可处理的指令

          这种设计存在一种缺陷,即程序的指令经常不按照顺序执行,在多数情况下,硬件负责保证这种运算结果与顺序执行的指令时的结果相同。

    内核态和用户态:

          一般在PSW中有一个二进制位控制CPU的两种用户模式,那就是内核态和用户态。

          内核态:当CPU以内核态运行时,CPU可执行包含的所有的指令集,包括那些可以操作硬件的指令集,我们的操作系统是运行在内核态的,所以可以操作我们的硬件;

          用户态:我们的应用软件是运行在用户态下的,用户态下的CPU只能运行全部指令集内的部分子集,这部分子集不含操作硬件的功能,所以,一般情况下,在用户态下I/O和内存是保护的,因为操作系统的内存是受保护的,不能被占用的,并且,用户态下,PSW设置成内核态也是禁止的。

    内核态和用户态的切换:

          我们上面已经了解到,用户态下工作的应用软件是不能直接操作硬件的,比如我们想用网易云音乐听歌,那CPU就必须经历用户态切换到内核态的过程,这就需要用到系统调用(system call)了,系统调用陷入内核并调用我们的操作系统,通过TRAP指令将内核状态进行切换,从而通过操作系统来获得我们想要的功能和服务。请把的系统调用看成一个特别的的过程调用指令就可以了,该指令具有从用户态切换到内核态的特别能力。

    多线程和多核芯片

          根据Moore定律,芯片中的晶体管数量每经历18个月就会增加一倍,所以,我们用的CPU不断的在更新强大中:

          1、第一步的增强就是在CPU芯片中加入了更大的缓存L1,他是用和CPU相同的的材质制成的,所以执行过程中并没有延时(后来又出现了二级缓存L2,三级缓存L3);

          2、第二步的增强就是Intel公司发明了多线程和超线程,使得CPU执行任务时能够同时执行多个任务,对用户来说也就相当于多个CPU来执行多个任务,这样CPU执行任务的效率有很大一步的提升,但是本质上其实是多个线程执行时,在执行过程中是用极短的时间来相互切换任务执行的,对于用户来说用肉眼是无法分辨的,所以多线程并不是真正的多个任务来并行处理。

          3、第三步的增强就是出现了2个或者4个或者8个核心的处理器的芯片,如下图:

    (2)存储器:计算机的记忆方式

         存储器系统采用如上图的分层结构,顶层的存储器速度较高,容量较小,与底层的存储器相比每位的成本较高,其差别往往是十亿数量级的

        寄存器:L1缓存,用与cpu相同材质制造,与cpu一样快,因而cpu访问它无时延,典型容量是:在32位cpu中为32*32,在64位cpu中为64*64,在两种情况下容量均<1KB。

       高速缓存:L2缓存,主要由硬件控制高速缓存的存取,内存中有高速缓存行按照0~64字节为行0,64~127为行1。。。最常用的高速缓存行放置在cpu内部或者非常接近cpu的高速缓存中。当某个程序需要读一个存储字时,高速缓存硬件检查所需要的高速缓存行是否在高速缓存中。如果是,则称为高速缓存命中,缓存满足了请求,就不需要通过总线把访问请求送往主存(内存),这毕竟是慢的。高速缓存的命中通常需要两个时钟周期。高速缓存为命中,就必须访问内存,这需要付出大量的时间代价。由于高速缓存价格昂贵,所以其大小有限,有些机器具有两级甚至三级高速缓存,每一级高速缓存比前一级慢但是容量大。

         随机存储器(RAM):我们通常说的内存就是RAM,具体分类这里不一一列举,也就是我们通常说的DDR1代、DDR2代、DDR3代的1G/2G/4G/8G内存,现在已经到了DDR4代的产品随机存储器(Random Access Memory)表示既可以从中读取数据,也可以写入数据。当机器电源关闭时,存于其中的数据就会丢失。我们通常购买或升级的内存条就是用作电脑的内存,内存条(SIMM)就是将RAM集成块集中在一起的一小块电路板,它插在计算机中的内存插槽上,以减少RAM集成块占用的空间。如下图:
    EEPROM与闪存
          EEPROM(Electrically Erasable PROM,电可擦除可编程ROM)和闪存(flash memory)也是非易失性的,存储器技术的成熟使得RAM和ROM之间的界限变得很模糊,如今有一些类型的存储器(如EEPROM和闪存)组合了两者的特性。这些器件像RAM一样进行读写,并像ROM一样在断电时保持数据,它们都可电擦除且可编程,但各自有它们优缺点。
          从软件角度看,独立的EEPROM和闪存器件是类似的,两者主要差别是EEPROM器件可以逐字节地修改,而闪存器件只支持扇区擦除以及对被擦除单元的字、页或扇区进行编程。对闪存的重新编程还需要使用SRAM,因此它要求更长的时间内有更多的器件在工作,从而需要消耗更多的电池能量。设计工程师也必须确认在修改数据时有足够容量的SRAM可用。
          存储器密度是决定选择串行EEPROM或者闪存的另一个因素。市场上可用的独立串行EEPROM器件的容量在128KB或以下,独立闪存器件的容量在32KB或以上。
    如果把多个器件级联在一起,可以用串行EEPROM实现高于128KB的容量。很高的擦除/写入耐久性要求促使设计工程师选择EEPROM,因为典型的串行EEPROM可擦除/写入100万次。闪存一般可擦除/写入1万次,只有少数几种器件能达到10万次。
    只读存储器(ROM)
          ROM表示只读存储器(Read Only Memory),在制造ROM的时候,信息(数据或程序)就被存入并永久保存,所以它是非易失性的。这些信息只能读出,一般不能写入,即使机器停电,这些数据也不会丢失。ROM一般用于存放计算机的基本程序和数据,如BIOS ROM。其物理外形一般是双列直插式(DIP)的集成块。
          BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统"。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。
          CMOS因为它是易失性的所以需要一个电池来长久存储BIOS里面的设置信息的,比如计算机的时间和日期

    (3)磁盘

          在图中我们可以看到,硬盘内部是有好多盘面被一个转轴为同心圆连接起来的,由转轴来转动,然后磁臂的摆动,磁头在盘面不停的读写数据,就因为这样的构造,所以他的读写速度是有瓶颈的,一般读写速度都是依据他转轴的转速,我们目前一般的家用台式机或笔记本用的硬盘转速都是5400rpm或者7200rpm(RPM =revolutions per minute 每分钟多少转 ),只有服务器上面用的硬盘是比较高端的转速能达到10000rpm以上。

          机械硬盘存储数据一般是分扇区存储的这是他的物理属性,一个扇区是512Bytes,在Windows中一般是按照扇区存储数据,在Linux中是按照block块为单位存储数据的,1个block块=8个扇区=8*512Bytes=4kB。

          我们在存储设备是以2进制为基础的单位为bit,数据大小的统计单位是这样换算的,8个bit称为一个字节1bytes,1024bytes=1kB,1024KB=1MB,1024MB=1GB,1024GB=1TB。。。

          数据都存放于一段一段的扇区,即磁道这个圆圈的一小段圆圈,从磁盘读取一段数据需要经历寻道时间和延迟时间

    平均寻道时间:

          机械手臂从一个柱面随机移动到相邻的柱面的时间成为寻到时间,找到了磁道就以为着招到了数据所在的那个圈圈,但是还不知道数据具体这个圆圈的具体位置

    平均延迟时间:
          机械臂到达正确的磁道之后还必须等待旋转到数据所在的扇区下,这段时间成为延迟时间
    虚拟内存:
          许多计算机支持虚拟内存机制,该机制使计算机可以运行大于物理内存的程序,方法是将正在使用的程序放入内存取执行,而暂时不需要执行的程序放到磁盘的某块地方,这块地方成为虚拟内存,在linux中成为swap,这种机制的核心在于快速地映射内存地址,由cpu中的一个部件负责,成为存储器管理单元(Memory Management Unit MMU)
          PS:从一个程序切换到另外一个程序,成为上下文切换(context switch),缓存和MMU的出现提升了系统的性能,尤其是上下文切换
          MMU:是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统。
    (4)磁带
          在价钱相同的情况下比硬盘拥有更高的存储容量,虽然速度低于磁盘,但是因其大容量,在地震水灾火灾时可移动性强等特性,常被用来做备份。
    (5)I/O设备

          CPU和存储器并不是操作系统唯一需要管理的资源,I/O设备也是非常重要的一环。I/O设备一般包括两个部分:设备控制器和设备本身。

          控制器:控制器负责控制连接的设备,它从操作系统接收命令,然后就对设备发起读请求。

          控制器的功能:为操作系统提供一个接口。

          设备本身:有相对简单的且标准的接口,这样大家都可以为其编写驱动程序了。

          要想调用设备,必须根据该接口编写复杂而具体的程序,于是有了控制器提供设备驱动接口给操作系统。必须把设备驱动程序安装到操作系统中。

    (6)总线:连接计算机各个组件的主线

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

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

    四、计算机启动流程

          1.计算机加电

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

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

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

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

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

     五、软件的启动流程

          点击应用程序(软件)→软件将数据写入内存→CPU从内存中读取数据并执行然后返回内存→启动软件

  • 相关阅读:
    Object-C,NSSet,不可变集合
    NYIST 860 又见01背包
    NYIST 1070 诡异的电梯【Ⅰ】
    HDU 1542 Atlantis
    HDU 4756 Install Air Conditioning
    CodeForces 362E Petya and Pipes
    HDU 4751 Divide Groups
    HDU 3081 Marriage Match II
    UVA 11404 Palindromic Subsequence
    UVALIVE 4256 Salesmen
  • 原文地址:https://www.cnblogs.com/gpd-Amos/p/7716366.html
Copyright © 2011-2022 走看看