第十三周主要学习了计算机硬件系统的相关知识,将我的个人理解与查阅的资料整理如下:
1.计算机硬件体系构成:
自第一台计算机ENIAC发明以来,计算机系统的技术已经得到了很大的发展,但计算机硬件系统的基本结构没有发生变化,仍然属于冯·诺依曼体系计算机。计算机硬件系统仍然由运算器,控制器,存储器,输入设备和输出设备5部分组成。
2.运算器:
运算器又称算术逻辑单元。它是完成计算机对各种算术运算和逻辑运算的装置,能进行加、减、乘、除等数学运算,也能作比较、判断、查找、逻辑运算等。
3.控制器:
主要功能:
(1)从内存中取出一条指令,并指出下一条指令在内存中位置
(2)对指令进行译码或测试,并产生相应的操作控制信号,以便启动规定的动作;
(3)指挥并控制CPU、内存和输入/输出设备之间数据流动的方向。
控制器根据事先给定的命令发出控制信息,使整个电脑指令执行过程一步一步地进行,是计算机的神经中枢。
4.存储器:
存储器的主要功能是存储程序和各种数据,并能在计算机运行过程中高速、自动地完成程序或数据的存取。
(1)内存分类:
内存主要分为cache、主存和虚存。
所谓cache就是cpu自带的三级缓存(有些cpu只有二级)。主存则是我们平时所说的内存条,虚存顾名思义是虚拟内存一般是磁盘中的一部分空间。
三级缓存123距离cpu越来越远,大小越来越大,速度越来越慢。但是相比于主存和虚存是高速的存储区,cpu快速读写的区域。
(2)内存分配
a.连续内存分配
因为逻辑地址是连续的,所以我们最容易想到的物理地址的分配也是连续的。例如一个程序占用0-100这么多内存地址,那么我们可以找到一块空闲的物理地址100-200来分配给这个程序。内存映射则只需要记住100这个偏移,在逻辑地址上+100就是对应的物理地址。
连续内存分配的方法主要有最先最优和最差三种方式,即最先找到的空闲内存大于程序所需内存的,找出所有可用内存块大小刚好满足的,以及相差最大的。 三种方法都会不同程度的导致内存碎片问题。内存碎片就是不能利用的内存,分为内外两种。外部碎片就是两个程序占用的内存块中间的区域,因为大小不合适不能被其他程序利用。而内碎片则是程序内部时钟无法被使用的内存。
b.非连续内存分配
因为连续内存分配导致了大量的内存碎片的产生使得内存连用率低下,所以有了非连续内存分配。非连续内存分配的基本思想是程序的逻辑地址虽然是连续的,但是映射到物理地址上可以是零散的,只要维护好对应关系就可以保证正常的寻址。
(3)虚拟内存简介
一句话概括虚存就是:不常访问或不急迫的内存块放到磁盘存储。出现的原因是随着应用内存需求增大,为了满足多个程序同时运行的需求,主存的空间不够用的情况下,需要放到虚拟内存(磁盘)中存储一部分暂时不需要访问的数据。
虚拟内存早期就有原型,例如之前dos系统内存只有几M的时候要跑几百M的程序,需要程序员写程序的时候调度谁先执行其他放磁盘,然后谁再执行,这样的顺序。后来有了swapping自动交换技术,可以将暂时不着急使用的程序占用的内存块整个放到磁盘中。例如一个sleep的程序。不过swapping粒度是整个程序。
虚存技术可以将程序的一部分暂时不用的内存放到磁盘中,实现了更细的粒度。听上去虽然简单但是实际上是很复杂的,尤其是cpu寻址内存的时候,查页表。如果放到虚存中的会有标志位,这时候需要将虚存中的对应数据拿回内存,然后修改页表对应的帧号。不过如果恰好没有空闲的帧,则还需要将不那么急迫需要的内存换到虚存中去。
5.输入输出 I/O设备
输入输出设备(I/O)起着人和计算机、设备和计算机、计算机和计算机的联系作用。
(1)输入设备:凡是对计算机发出计算机能识别的信号 就算输入设备
OCR,扫描仪,耳麦 ,写字板等
(2)输出设备:能够接受和识别计算机发出的信号数据 就是输出设备
音响,显示器 ,打印机,机床等