简述计算机组成

背景 计算机的构成,无外乎CPU,内存,硬盘之类的部件,本文并不是从硬件的角度来解读计算机,主要是我也不懂.所以关于各个部件的名称和分类不做过多的阐述,重点是为了后面写程序在计算机中的运行打个基础. 概述 主要介绍CPU,主存,磁盘,I/O总线,操作系统,他们在程序运行时如何协作和各自的作用.穿插着会介绍一些基本的概念. 1.总线

总线的定义:贯穿整个系统的一组电子管道称为总线,它是CPU,内存,I/O设备互相传递信息的消息管道,主机的各个部件与总线相连从而形成了计算机系统.

总线中的数据:总线中的数据单位是字(word),一个字(word)有多长通常与CPU的字长一致,现在大多数机器字长分为4个字节(32位)和8个字节(64位)

2. I/O设备

包括键盘,鼠标,显示器,磁盘(主要说明这一类的设备,我不愿意用等等之类的词,太含糊,我不喜欢).每个I/O设备都通过控制器或者适配器与I/O总线相连.(控制器与适配器功能相同,不同的是控制器是芯片组,适配器是插在主板上的卡)

3. 主存

主存就是内存,叫法不同而已.相对的就是辅助存储器(外存储器).内存是个临时存储设备,计算机一断电它里面的东西就没了,主要用来存储CPU执行的程序和程序处理的数据

在物理上主存是由一组动态随机存储器(DRAM)芯片组成的.逻辑上的存储器是一个线性的字节数组,索引从零开始.

上面说到CPU执行程序,再继续说CPU之前,我想先说说对于CPU来说程序是什么?
我们平时说的程序指的是源程序(源代码),它是由0和1组成的位序列(比特),8位一个字节,每个字节代表一个字符.大部分计算机使用ASCⅡ标准表示一个字符.其实系统中所有的信息包括磁盘,内存,网络传输的程序和数据都是一串比特表示的.那么怎么区分哪些是数据哪些是程序呢?答案是:上下文,只有上下文可以确定数据对象.

4. 处理器

处理器是解释和执行内存中指令的引擎,它的核心是一个大小为一个字(word)的存储设备(或寄存器),称为程序计数器(PC)

在任何时刻PC都指向内存中的某条指令机器语言指令的地址,从系统通电开始直到断电,处理器一直不断执行程序计数器指向的指令再更新程序计数器,使其指向下一条指令

它的运行围绕着主存,寄存器文件(register file)和算术/逻辑单元(ALU)进行.

寄存器文件是一个小的存储设备,由一些单个字长的寄存器组成.每个寄存器都有唯一的名字.比如 ALU计算新的数据和地址值.

举几个CPU的简单操作的例子
加载:从主存复制一个字节或一个字到主存某个位置,以覆盖原值
存储:从寄存器复制一个字节或一个字到主存某个位置,以覆盖原值
操作:把两个寄存器的内容复制到ALU,ALU对着两个字做算术运算,并将结果存放到一个寄存器中,以覆盖这个寄存器的原值
跳转:从指令本身中抽取一个字,并将这个字复制到PC中,以覆盖原PC值.

加载:从主存复制一个字节或一个字到主存某个位置,以覆盖原值

存储:从寄存器复制一个字节或一个字到主存某个位置,以覆盖原值

操作:把两个寄存器的内容复制到奥ALU,ALU对着两个字做算术运算,并将结果存放到一个寄存器中,以覆盖这个寄存器的原值

跳转:从指令本身中抽取一个字,并将这个字复制到PC中,以覆盖原PC值.

5. 操作系统 操作系统的两个基本功能

防止硬件被失控的应用程序滥用

向应用程序提供简单一致的机制来控制复杂而又不太统一的低级硬件设备.

操作系统通过几个基本的抽象概念实现这两个功能 进程 ,虚拟内存,文件,虚拟机

文件是对I/O设备的抽象

虚拟内存是对主存和磁盘I/O设备的抽象

进程是对处理器,主存和I/O设备的抽象

虚拟机提供对整个计算机的抽象,包括操作系统,处理器和程序

进程

进程是操作系统对一个正在运行的程序的一种抽象. 一个系统上可以同时运行多个进程,而每个进程好像都独占资源

并发运行则是说两个进程的指令是交错执行的.

从一个进程到另一个进程的转换时操作系统内核(kernel)管理的,内核是操作系统代码常驻主存的部分.

内核不是一个独立的进程,他是系统管理全部进程所用代码和数据结构的集合,实现进程需要操作系统和硬件之间紧密合作.

线程: 一个进程中可以有多个线程,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据.多线程比多进程更容易共享数据,线程一般比进程更高效.

虚拟内存

虚拟内存为每个进程提供一个假象,即每个进程都在独占内存.每个进程看到的内存都是一致的,称为虚拟地址空间.

每个进程看到虚拟地址空间由大量准确定义的区构成,每个区都有专门的功能,从最低的开始逐步向上介绍.

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzpfxj.html