zoukankan      html  css  js  c++  java
  • 计算机的一些基本知识

          上了一上午关于计算机基础的课程,我感到非常兴奋,因为又可以学到很多东西了,对于小白的我来说,这是一片广阔的天地-无边无际,我掉进了棉花糖中,好兴奋。从基础的开始吧!

    一、什么是Python语言  
           程序员的工作就是让计算机去按照自己的指令工作,但是和玩游戏一样,必须要先明白规则。
      1、什么是计算机编程语言:计算机语言包括机器语言、汇编语言、高级语言。
        1.1机器语言(machine language)是一种指令集的体系。这种指令集,称为机器码(machine code),是电脑的CPU可直接解读的数据。具有灵活、直接执行、执行速度快等特点,编出的程序全是0和1的指令代码,直观性差,容易出错。
        1.2汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。汇编语言的主体是汇编指令,汇编指令和机器指令的差别在于指令的表示方法上。汇编指令是机器指令(0、1代码)便于记忆的书写格式。程序员用汇编语言写出源程序,再用汇编编译器将其编译为机器码,由计算机最终执行。汇编语言是直接面向处理器的程序设计语言,它所操作的对象不是具体的数据,而是寄存器或者存储器,也就是说它是直接和寄存器和存储器打交道,这也是为什么汇编语言的执行速度要比其它语言快,但同时这也使编程更加复杂,因此它是各种编程语言中与硬件关系最密切、最直接的一种,在时间和空间的效率上也最高的一种。
        1.3高级语言(High-level programming language)相对于机器语言而言,是高度封装了的编程语言,与低级语言相对。它是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示(例如汉字、不规则英文或其他外语),从而使程序编写员编写更容易,亦有较高的可读性,以方便对电脑认知较浅的人亦可以大概明白其内容。
       2、Python :是一种面向对象的解释型计算机程序设计语言,属于高级语言。优点: 速度快、免费、开源、高层语言、可移植性好、解释性好,面向对象、可扩展、可嵌入、丰富的库、规范的代码。缺点:无法开发手机软件。
     

    二、计算机的大致构成
       1、计算机硬件:计算机硬件(Computer hardware)是指计算机系统中由电子,机械和光电元件等组成的各种物理装置的总称。例:

            1.1中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据,其主要包括运算器(算术逻辑运算单元,ALU,Arithmetic Logic Unit)和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)。

            1.2内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。

              1.2.1只读存储器ROM(Read Only Memory),在制造ROM的时候,信息(数据或程序)就被存入并永久保存。这些信息只能读出,一般不能写入,即使机器停电,这些数据也不会丢失。ROM一般用于存放计算机的基本程序和数据,如BIOS ROM。

              1.2.2随机存储器(Random Access Memory)表示既可以从中读取数据,也可以写入数据。当机器电源关闭时,存于其中的数据就会丢失。

              1.2.3Cache也是我们经常遇到的概念,也就是平常看到的一级缓存(L1 Cache)、二级缓存(L2 Cache)、三级缓存(L3 Cache)这些数据,它位于CPU与内存之间,是一个读写速度比内存更快的存储器。

              1.2.4物理存储器和地址空间简称磁盘。
       2、操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。(Community Enterprise Oprrating System-centos)
       3、软件:软件(Software)是一系列按照特定顺序组织的计算机数据和指令的集合。

       4、一些关系
          4.1编程语言,顾名思义是用来编写程序的语言,科学的说法是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能,即编写所谓的应用程序的语言。
          4.2编程语言的作用及与操作系统和硬件的关系:操作系统运行在硬件上,编程语言的集成开发环境(IDE,Integrated Development Environment ,包括语言编辑器和编译器、调试器和图形用户界面等工具)运行在操作系统上。程序员通过运行在系统上的编辑器软件(程序)编写出一套硬件无法读懂的源程序,运行在操作系统上的编译器将这些指令翻译成硬件能够读懂的机器码。这就是利用编程语言人机对话,同样可以反向运作,即反馈的过程。

              编程语言开发应用软件,应用软件在操作系统上运行,操作系统建立在硬件上,同样操作系统控制硬件。

          4.3应用程序、操作系统、硬件之间的关系:应用软件在操作系统上运行,操作系统建立在硬件上,同样操作系统控制硬件,硬件分析操作系统给的数据再做出反馈。QQ聊天举例,当客户端软件发出消息后传输给系统,由系统给硬件指令,通过网络输出到另一台电脑,它的硬件接受该信息,然后由该系统处理此信息,交给软件此处理结果,软件翻译出消息。      

          4.4CPU、内存、磁盘之间的关系:CPU从内存或缓存中取出指令,放入指令寄存器,并对指令译码分解成一系列的操作,然后发出各种控制命令,执行微操作系列,从而完成系统指令的执行。但是,CPU并不能直接调用存储在磁盘上的系统、程序和数据,必须首先将磁盘的有关内容存储在内存中,这样才能被CPU读取运行。因而,内存(即物理存,是相对于磁盘这个“外存”而言)作为磁盘和CPU的“中转站”,对电脑运行速度有较大影响。当运行数据超出物理内存容纳限度的时候,部分数据就会自行“溢出”,这时系统就会将磁盘上的部分空间模拟成内存——虚拟内存,并将暂时不运行的程序或不使用的数据存放到这部分空间之中,等待需要的时候方便及时调用。 由于内存是带电存储的(一旦断电数据就会消失),而且容量有限,所以要长时间储存程序或数据就需要使用磁盘(外存储器)。硬盘也会影响系统速度,因为系统从磁盘中读取数据并通过总线存入内存的速度也会影响系统运行的快慢。形象比喻:“CPU是工厂,磁盘是大仓库,内存是正规中转中心,虚拟内存是临时中转中心”。

          4.5CPU与寄存器:寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。由于CPU时只能从内存中取指来解码,但其解码速度远大于内存的运行速度,所以所有CPU内部都有一些用来保存关键变量和临时数据的寄存器,这样通常在CPU的指令集中专门提供一些指令,用来将一个字(可以理解为数据)从内存调入寄存器,以及将一个字从寄存器存入内存。CPU其他的指令集可以把来自寄存器、内存的操作数据组合,或者用两者产生一个结果,比如将两个字相加并把结果存在寄存器或内存中,以此缓解CPU和内存的速度差。

         4.6内核态与用户态:内核态是操作系统内核所运行的模式,运行在该模式的代码,可以无限制地对系统存储、外部设备进行访问。用户态可以理解为不让CPU对硬件直接进行操作只能调用部分指令集,应用程序绝大部分只能将CPU在用户态下工作,只能通过系统调用(SystemCall)将状态转成内核态。

         4.7L1缓存和L2缓存:一级缓存即L1 Cache。集成在CPU内部中,用于CPU在处理数据过程中数据的暂时保存。由于缓存指令和数据与CPU同频工作,L1级高速缓存缓存的容量越大,存储信息越多,可减少CPU与内存之间的数据交换次数,提高CPU的运算效率。但因高速缓冲存储器均由静态RAM组成,结构较复杂,在有限的CPU芯片面积上,L1级高速缓存的容量不可能做得太大,典型容量是:在32位cpu中为32*32,在64位cpu中为64*64,在两种情况下容量均<1KB。L2缓存位于CPU与内存之间的临时存储器,容量比内存小但比其交换速度快,二级缓存容量大小决定了cpu的性能。

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

      缓存在计算机科学的许多领域中起着重要的作用,并不仅仅只是RAM(随机存取存储器)的缓存行。存在大量的资源可以划分为小的部分,那么这些资源中的某些部分肯定会比其他部分更频繁地得到使用,此时用缓存可以带来性能上的提升。一个典型的例子就是操作系统一直在使用缓存,比如,多数操作系统在内存中保留频繁使用的文件(的一部分),以避免从磁盘中重复地调用这些文件,类似的/root/a/b/c/d/e/f/a.txt的长路径名转换成该文件所在的磁盘地址的结果然后放入缓存,可以避免重复寻找地址,还有一个web页面的url地址转换为网络地址(IP)地址后,这个转换结果也可以缓存起来供将来使用。

      缓存是一个好方法,在现代cpu中设计了两个缓存,第一级缓存称为L1总是在CPU中,通常用来将已经解码的指令调入CPU的执行引擎,对那些频繁使用的数字,往往设计有二级缓存L2,用来存放近来经常使用的内存字。L1与L2的差别在于对cpu对L1的访问无时间延迟,而对L2的访问则有1-2个时钟周期(即1-2ns)的延迟。

         总结:1. 寄存器是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。

                  2. 内存包含的范围非常广,一般分为只读存储器(ROM)、随机存储器(RAM)和高速缓存存储器(cache)。

                  3. 寄存器是CPU内部的元件,寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。
                  4. Cache :即高速缓冲存储器,是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有256KB或512KB L2 Cache。

                     大致来说数据是通过内存-Cache-寄存器,Cache缓存则是为了弥补CPU与内存之间运算速度的差异而设置的的部件。

        4.8一些存储器:

            内存(random access memory):这就是我们熟知的内存,后现代称其为运存,失忆性存储,断电数据就消失,用于快速存储指令供CPU调取。

            EEPROM(Electrically Erasable PROM):电可擦除可编程ROM.

            闪存(FlashMemory):闪存在速度上介于RAM和磁盘之间,但与磁盘不同的是,闪存擦除的次数过多,就被磨损了,比如固态硬盘。

            CMOS:是计算机最基础的存储器了,用于存储BIOS的相关设置和计时功能,可这么重要的存储器却是失忆性存储,所以只有靠BIOS电池CR2032,进行持续供电,之所以采用CMOS是因为它耗电非常少,一块工厂原装电池往往能使用若干年,但是当电池失效时,相关的配置和时间等都将丢失。

            机械硬盘(磁盘):记忆存储器,用于存放大量资料数据,被广泛应用。磁盘低速的原因是因为它一种机械装置,在磁盘中有一个或多个金属盘片,它们以5400,7200或10800rpm(RPM =revolutions per minute 每分钟多少转 )的速度旋转。从边缘开始有一个机械臂悬在盘面上,这类似于老式黑胶唱片机上的拾音臂。信息卸写在盘上的一些列的同心圆上,是一连串的2进制位(称为bit位),为了统计方便,8个bit称为一个字节bytes,1024bytes=1k,1024k=1M,1024M=1G,所以我们平时所说的磁盘容量最终指的就是磁盘能写多少个2进制位。每个磁头可以读取一段换新区域,称为磁道。把一个戈丁手臂位置上所有的磁道合起来,组成一个柱面,每个磁道划成若干扇区,扇区典型的值是512字节,一个BLOCK为8*512字节=4KB,数据都存放于一段一段的扇区,即磁道这个圆圈的一小段圆圈,从磁盘读取一段数据需要经历寻道时间和延迟时间,平均寻道时间为硬盘在接收到系统指令后,磁头从开始移动到移动至数据所在的磁道所花费时间的平均值。找到了磁道就以为找到了数据所在的那个圆圈,但是还不知道数据具体这个圆圈的具体位置,所以平均延迟时间为机械臂到达正确的磁道之后还必须等待旋转到数据所在的扇区下,这段时间称为延迟时间,平均延迟时间为磁盘转半圈所用的时间。

            磁带:在价钱相同的情况下比硬盘拥有更高的存储容量,虽然速度低于磁盘,但是因其大容量,在地震水灾火灾时可移动性强等特性,常被用来做备份。(常见于大型数据库系统中)

          4.9虚拟内存与MMU和SWAP:虚拟存储器(Virtual Memory)。电脑中所运行的程序均需经由内存执行,若执行的程序占用内存很大或很多,则会导致内存消耗殆尽。为解决该问题,Windows中运用了虚拟内存技术,即匀出一部分硬盘空间来充当内存使用。当内存耗尽时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。若计算机运行程序或操作所需的随机存储器(RAM)不足时,则 Windows 会用虚拟存储器进行补偿。它将计算机的RAM和硬盘上的临时空间组合。在linux中成为交换分区(swap space),简称Swap。MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统。PS:从一个程序切换到另外一个程序,成为上下文切换(context switch),缓存和MMU的出现提升了系统的性能,尤其是上下文切换。

            4.10设备驱动与控制器:设备驱动是操作系统和输入输出设备间的粘合剂。驱动负责将操作系统的请求传输,转化为特定物理设备控制器能够理解的命令。控制器是查找主板上的一块芯片或一组芯片(硬盘,网卡,声卡等都需要插到一个口上,这个口连的便是控制器),控制器负责控制连接的设备从操作系统接收命令,比如读硬盘数据,然后就对硬盘设备发起读请求来读出内容,他的功能:通常情况下对设备的控制是非常复杂和具体的,控制器的任务就是为操作系统屏蔽这些复杂而具体的工作,提供给操作系统一个简单而清晰的接口。有相对简单的接口且标准的,这样大家都可以为其编写驱动程序了。要想调用设备,必须根据该接口编写复杂而具体的程序,于是有了控制器提供设备驱动接口给操作系统。必须把设备驱动程序安装到操作系统中才能实现最终对控制器的控制。总线与南桥和北桥:总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。在计算机系统中,各个部件之间传送信息的公共通路叫总线,微型计算机是以总线结构来连接各个功能部件的。一块电脑主板,以CPU插座为北的话,靠近CPU插座的一个起连接作用的芯片称为北桥芯片(North Bridge Chipset)。北桥芯片就是主板上离CPU最近的芯片,这主要是考虑到北桥芯片与处理器之间的通信最密切,为了提高通信性能而缩短传输距离。南桥芯片(South Bridge)是主板芯片组的重要组成部分,一般位于主板上离CPU插槽较远的下方,PCI的前面,即靠主机箱前的一面,这种布局是考虑到它所连接的I/O总线较多,离处理器远一点有利于布线。相对于北桥芯片来说,其量并不算大,所以南桥芯片一般都没有覆盖散热片,但现在高档的主板的南桥也覆盖散热片。南桥芯片不与处理器直接相连,而是通过一定的方式与北桥芯片相连。可见北桥连接高速设备,南桥连接慢速设备。

            4.11操作系统的启动流程:ps---按下启动按钮,听到一声响,即机械臂通电移向了磁盘上。计算机通电之后BIOS(Basic Input Output System)开始运行,首先其检测硬件比如完成加电自检、测试内存、端口、键盘、视频适配器、磁盘驱动器以及CD-ROM驱动器等基本设备能否正常工作,之后BIOS加载CMOS中的设备参数,加载主引导记录以及引导驱动器的分区表,执行主引导记录MBR,主引导记录在硬盘上找到可引导分区,将其分区引导记录装入内存,并将控制权交给分区引导记录,由分区引导记录定位根目录,然后装入操作系统。

            4.12应用程序的启动流程:双击应用程序,监控设备察觉后,系统将此指令提交CPU运算,CPU向系统发出指令需要从磁盘中调集程序数据放入内存中运算,然后会将运算结果交于系统,显示结果。

    三、计算机硬件历史
       1、早期的计算工具:中国的算盘,用手指克服算数;计算尺,基本的手动计算器;巴斯卡滚轮式加法器。
       2、1801年:卡片时期,何乐礼1880年利用打孔卡发明制表机。
       3、1835-1900年代:程式化计算机。巴贝奇的差分机。
       4、1930-1960年代:桌上型计算器。科塔计算器。
       5、前1940年代:模拟计算机。现代电脑之父1930年万尼瓦尔·布希发明微分分析器。
       6、早期胡数字电脑:
        6.1楚泽Z1电脑。
        6.2巨像电脑。
        6.3埃尼阿克。
        6.4冯.诺依曼结构胡机种。
       7、1960年代后:第三波爆炸式发展。

  • 相关阅读:
    在energia中添加新的库
    KEIL3中出现的字符不对齐的情况解决办法
    VHDL硬件描述语言实现数字钟
    51单片机软件I2C驱动中的CY
    自问自答:在VB中如何实现像C++一样printf的功能
    [转][译] 分分钟学会一门语言之 Python 篇
    杂谈PID控制算法——最终篇:C语言实现51单片机中的PID算法
    Eclipse 安装与配置
    win10 环境安装 jdk 11.0.2
    解决网络问题神奇工具
  • 原文地址:https://www.cnblogs.com/chedanlangren/p/6536696.html
Copyright © 2011-2022 走看看