计算机概述

来源:互联网 发布:手机帧数显示软件 编辑:程序博客网 时间:2024/06/16 02:12

计算机由CPU、内存、磁盘、IO设备组成,下面将依次对这些内容进行介绍。


CPU(Central Processiong Unit,中央处理器


CPU由寄存器、控制器、运算器和时钟四个部分构成。

寄存器用来暂存指令、数据。

控制器负责把内存上的指令、数据等读入到寄存器,并根据指令的执行结果来控制整个计算机

运算器负责运算从内存读入寄存器的数据

时钟负责发出CPU开始计时的时钟信号


寄存器的主要种类和功能

种类功能累加寄存器存储执行运算的数据和运算后的数据标志寄存器存储运算处理后的CPU的状态程序计数器存储下一条指令所在的内存的地址基址寄存器存储数据内存的起始地址变址寄存器存储基址寄存器的相对地址通用寄存器存储任意数据指令寄存器存储指令。CPU内部使用,程序员无法通过程序对该寄存器进行读写操作栈寄存器存储区域的起始地址


下面介绍常见的指令格式

  • 三地址指令

  1. a = b + c

        它对应的机器指令:

        add a,b,c

        op dest,src1,src2

  • 二地址指令,优点:指令所占用的空间比三地址指令要少,x86系列的处理器就是二地址形式的

  1. a += b;

        add a,b

        op dest,src

  • 一地址指令,通常被用作累加器(accumulator)

  1. acc += 5;
  2. acc -= 3;
  • 零地址指令,字节码指令使用的是零地址指令,零地址指令比较紧凑,但是要完成意见事情,一般会比二地址或三地址指令需要更多的指令
  1. iconst_1
  2. iconst_2
  3. iadd
  4. istore_0

iadd(表示整形加法)指令并没有任何参数。连源地址都没有指定,零地址指令有什么作用?

零地址意味着源和目标都是隐含参数,其实现依赖于一种常见的数据结构--栈


内存


        在早期的计算机中,程序是直接运行在物理内存的,存在以下问题:

1、地址空间不隔离,所有程序使用的内存空间并不是相互隔离的

2、内存使用率低,内存空间毕竟是有限的,当某个程序需要的内存大于内存的空闲内存,那么,内存需要做换入换出操作,注意换入换出单位是程序,导致效率低下

3、程序运行的地址不确定,因为程序每次需要装入到内存中运行,并且内存地址是不连续的

        针对这些问题,解决方法就是增加中间层,即虚拟地址,保证任意一个程序所能够访问的物理内存区域和另一个物理内存区域是相互不重叠的,实现地址空间隔离。下面介绍如何使用虚拟地址。

分段技术

        分段技术将程序所需要的内存空间大小的虚拟空间映射到物理空间。   

        分段技术解决了1、3问题,由于分段技术换入换出的单位仍然是程序,所以内存使用率并没有提高。下图描述了两个程序对应的虚拟地址映射到物理地址的过程,A、B两个程序的物理地址没有交集。


分页技术

        分页技术就是把地址空间划分为固定大小的页,每页大小由硬件决定,目前主流操作系统的页是4KB。

        分页技术换入换出的单位是页,因此它很好的解决的换入换出效率问题



线程


Linux多线程

系统调用作用fork复制当前进程exec使用新的可执行映像覆盖当前可执行映像clone创建子进程并从指定位置开始执行


    fork产生新任务的速度非常快,因为它采用写时复制(Copy on write,COW),即只有在发生写操作的情况下,才会拷贝一份,如果没有写操作,就会共用一份。

    fork只能够产生本任务的镜像,因此需要使用exec配合才能够启动新任务。

    clone也能产生新线程。


线程模型

1、一对一模型

缺点:由于许多操作系统限制了内核线程的数量,因此一对一线程会让用户的线程数量受到限制;许多操作系统内核线程调度时,上下文切换的开销较大,导致用户线程的执行效率下降

优点:性能较高

2、多对一模型

缺点:如果一个用户线程阻塞,那么所有的线程都无法执行,因此此时内核线程也随之夏日;

优点:高效的上下文切换和几乎无限制的线程数量

3、多对多模型

多对多模型结合了多对一模型和一对一模型的特点,多对多模型就是将多个用户线程映射到少数但不止1个内核线程上

优点:一个用户线程阻塞不会使得所有的用户线程阻塞;多对多模型对用户线程的数量没有什么限制;多对多模型的线程的性能得到了一定提升

未完成,待续。。。


0 0
原创粉丝点击