zoukankan      html  css  js  c++  java
  • 计算机系统漫游

    源程序在计算机中是以文本文件的形式保存的,源程序以字节的形式存储在文件中,字节由取值为0和1的位(bit)组成,8个位组成一个字节。

    一个c语言程序从文本文件变为可执行文件需要经历预处理、编译、汇编和链接4个阶段。
    预处理阶段:预处理器修改源程序中以#开头的代码,如将#include<stdio.h>替换为stdio.h文件的内容,预处理阶段完成后会生成“.i”文本文件。
    编译阶段:编译器将".i"文件翻译成汇编语言,生成“.s”文本文件。
    汇编阶段:汇编器将“.s”文件翻译成机器语言,生成“.o”二进制文件。
    链接阶段:连接器将“.o”文件和标准库“.o”文件(如printf.o)合并成可执行文件。

    系统的硬件组成
    总线:将信息字节在各个组件间传递的电子管道,总线上传递的数据单位是字,即字节个数,如32位系统一般为4个字节。
    I/O设备:输入输出设备,如鼠标、键盘、显示器和网络适配器等。
    主存:主存储器,也就是内存,在cpu执行程序时,用于存放程序和数据的地方。
    处理器:cpu,计算机的大脑,用于执行存储在主存中的指令,由控制器和运算器和寄存器组成,控制器负责从存储器中取出指令,确定指令类型及译码,按时间的先后顺序向其他部件发出控制信号,统一指挥和协调计算机各器件进行工作的部件;运算器是对数据进行加工处理的部件,可以实现基本的算术运算,还可以进行基本的逻辑运算,实现逻辑判断的比较及数据传递,移位等操作;寄存器是一个字长的存储单元,用于临时存储控制器和运算器需要使用的数据。

    高速缓存
            寄存器访问速度很快,但是仅能存储几百字节的信息,内存可以存储几十亿字节的信息,但是访问速度要比寄存器慢100倍。位于cpu芯片上的L1缓存可以存储几万字节的信息,访问速度接近寄存器,L2缓存通过一条特殊的总线连接到cpu,访问速度比L1慢5倍,比内存快5~10倍,L3缓存可以获得更大存储器,并且也能提供较高的访问速度。
            缓存利用了局部性原理,将程序最近需要访问的数据存放在缓存中,以提升效率。
            相对来说,寄存器的L1缓存的缓存,L2缓存是L2缓存的缓存,L3缓存是内存的缓存,内存是磁盘的缓存。

    操作系统的抽象
    进程是对处理器和虚拟存储器的抽象,是正在运行的程序。
    虚拟存储器是对主存和文件的抽象,虚拟存储器为每个进程提供了一个虚拟地址空间,映射到物理内存,使得每个进程看起来在独占内存空间。
    文件是对I/O设备的抽象,在linux中,一切皆为文件。

    并行和并发
    并发指的是同时有多个活动在运行。
    并行指的是用并发使一个系统运行得更快。
    线程级并发
            单处理器是不能做到对多个线程同时执行的,所以并发一般是是针对多核处理器,每个核都有独立的寄存器、L1/L2高速缓存,L3高速缓存和内存是多个核之间共享的。
    指令级并行
            处理器可以同时执行多条指令称为指令级并行。通过流水线(pipelining)将执行一个指令所需要的活动划分为不同的步骤,将处理器的硬件组织成一系列的阶段,每个阶段执行一个步骤,这些阶段可以并行地操作,用来处理不同指令的不同部分。
    单指令、多数据并行
            许多现代处理器拥有特殊的硬件,允许一条指令可以产生多个可以并行执行的操作,这种方式称为单指令、多数据,即SIMD并行。
            


  • 相关阅读:
    python之生成器
    Python 类(一)
    Python OOP(面向对象编程)
    python 静态方法、类方法(二)
    记一个有想法没能力实现的产品形态——实时公交
    ubuntu12.04离线安装libjpeg62-dev
    linux内核container_of宏定义分析
    signal函数理解或者void (*signal(int signum,void(*handler)(int)))(int)理解
    HttpServlet cannot be resolved to a type解决方法
    ubuntu12.04不能记住上次编辑位置的解决方案
  • 原文地址:https://www.cnblogs.com/lolau/p/9783557.html
Copyright © 2011-2022 走看看