精华内容
下载资源
问答
  • 本章通过跟踪hello程序的生命周期来开始对计算机系统进行学习。一个源程序从它被程序员创建开始,到在系统上运行,输出简单的消息,然后终止。我们将沿着这个程序的生命周期,简要地介绍一些逐步出现的关键概念、...

    本章通过跟踪hello程序的生命周期来开始对计算机系统进行学习。一个源程序从它被程序员创建开始,到在系统上运行,输出简单的消息,然后终止。我们将沿着这个程序的生命周期,简要地介绍一些逐步出现的关键概念、专业术语和组成部分。

      好久没有更新博客了,从国庆节到现在一直在整理秋招的一些资料,简历模版,嵌入式软件面试知识点总结,秋招笔试题目整理,面经总结复盘等。一共整理了将近400页,16W字。顺便把百度网盘的资料也整理了下,到10.16才整理完(需要资料的在主页有我联系方式)。不得不说,整理资料是真的磨人性。

      接下来的计划是补充下操作系统和计算机组成原理相关的知识。从《深入理解计算机系统》这本书开始吧,系统学习下《深入理解计算机系统》这本书,还有9个Lab可以做下,以便加深理解。初步计划一周一章(不知道行不行),争取在放寒假前做完这些。

      我会把看书过程中一些重要的知识点,概念的理解以及做实验的详细过程都放在博客深入理解计算机系统专栏中。欢迎关注我的博客以便第一时间获取文章更新的内容。

      下面就是本书第一章的一个简单总结。

    源程序是如何存储的

    #include <stdio.h>
    int main()
    {
    	printf("hello,world\n");
    	return 0;
    }
    

      以上程序是我们通过文本编辑器创建的文本文件,保存为hello.c。源程序实际上就是一个由值0和1组成的位(又称为比特)序列,8个位被组织成一组,称为字节。每个字节表示程序中的某些文本字符。现代计算机都使用ASCII标准来表示文本字符。hello.c程序的ASCII文本字符如下所示。

    image-20201019170810469

      hello.c程序是以字节序列的方式储存在文件中的。

      hello.c的表示方法说明了一个基本思想:系统中所有的信息——包括磁盘文件、内存中的程序、内存中存放的用户数据以及网络上传送的数据,都是由一串比特表示的。区分不同数据对象的唯一方法是我们读到这些数据对象的上下文

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    本文链接:https://blog.csdn.net/qq_16933601/article/details/109169750

    源程序到可执行文件的过程

      GCC编译器驱动程序读取源程序文件hello.c,并把它翻译成一个可执行目标文件hello。这个翻译过程可分为四个阶段:预编译,编译,汇编,链接。

    image-20201019171458969

    预编译

      在预编译的过程中,主要处理源代码中的预处理指令,引入头文件,去除注释,处理所有的条件编译指令(#ifdef,#ifndef,#else,#elif,#endif),宏的替换,添加行号,保留所有的编译器指令

    编译

      在预处理结束后,进行的是编译。编译过程所进行的是对预处理后的文件进行语法分析,词法分析,语义分析,符号汇总,然后生成汇编代码

    汇编

      汇编过程将汇编代码转成二进制文件,二进制文件就可以让机器来读取。每一条汇编语句都会产生一句机器语言。

    链接

      由汇编程序生成的目标文件并不能立即就被执行,其中可能还有许多没有解决的问题。例如,某个源文件中的函数可能引用了另一个源文件中定义的某个符号(如变量或者函数调用等);在程序中可能调用了某个库文件中的函数等等。所有这些问题,都需要经链接程序的处理方能得以解决链接程序的主要工作就是将有关的目标文件彼此相连接,也即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够被操作系统装入执行的统一整体

    shell是什么

      shell是一个命令行解释器,它输出一个提示符,等待输入一个命令行,然后执行这个命令。如果该命令行的第一个单词不是一个内置的shell命令,那么 shell就会假设这是个可执行文件的名字,它将加载并运行这个文件。

    典型系统的硬件组成

    总线

      贯穿整个系统的是一组电子通道,称作总线。通常总线中传输的是固定长度的字节块,也就是字(word)。字中的字节数(字长)是一个基本的系统参数。不同系统字长不同。比如32位系统的字长为4个字节,64位系统的字长为8个字节。

    IO设备

      I/O(输入/输出)设备是系统与外部世界的联系通道。我们的示例系统包括四个I/O设备:作为用户输入的键盘和鼠标,作为用户输出的显示器,以及用于长期存储数据和程序的磁盘驱动器(简单地说就是磁盘)。

      每个IO设备都通过一个控制器或适配器与I/O总线相连。控制器和适配器之间的区别主要在于它们的封装方式。控制器是I/O设备本身或者系统的主印制电路板(通常称作主板)上的芯片组。而适配器则是一块插在主板插槽上的卡。无论如何,它们的功能都是在I/O总线和I/O设备之间传递信息

    主存

      主存是一个临时存储设备,在处理器执行程序时,用来存放程序和程序处理的数据。从物理上来说,主存是由一组动态随机存取存储器(DRAM)芯片组成的。从逻辑上来说,存储器是一个线性的字节数组,每个字节都有其唯一的地址(数组索引),这些地址是从零开始的。

    处理器

      中央处理单元(CPU),简称处理器,是执行存储在主存中指令的引擎。处理器的核心是一个大小为一个字的存储设备(或寄存器),称为程序计数器(PC)。在任何时刻,PC都指向主存中的某条机器语言指令(即含有该条指令的地址)。

    运行hello程序

      shell读取到我们从键盘输入的“./hello”后,计算机中的信息流向如下图红线所示:

      键盘->USB控制器->I/O总线->I/O桥->系统总线->寄存器

      寄存器->系统总线->I/O桥->内存总线->主存

      shell程序需要把用户输入的内容作为一个变量使用,而这个变量一定在内存中有个地址,所以它最终会到达内存。

    image-20201019191356753

      当我们在键盘上敲回车键时, shell程序就知道我们已经结東了命令的输入。然后shell执行一系列指令来加载可执行的hello文件,这些指令将hello目标文件中的代码和数据从磁盘复制到主存。数据包括最终会被输出的字符串“ hello,wor1d\n”。信息流向如下所示。

      磁盘->磁盘控制器->I/O总线->I/O桥->内存总线->主存

      这种访问数据的方式数据不会经过CPU,而是直接从磁盘到主存,这种方式称为DMA。DMA(直接存储器访问)有利于减轻CPU的负荷,使CPU可以在数据转移的同时做其它任务。

    image-20201019191522808

      加载完hello文件后,CPU将会开始从hello程序的主函数处执行指令。这些指令将“hello,world\n”字符串中的字节从主存复制到寄存器文件,再从寄存器文件中复制到显示设备,最终显示在屏幕上。信息流向如下图所示。

      主存->寄存器->系统总线->I/O桥->I/O总线->图形适配器->显示器

    image-20201019191644207

    高速缓存

      通过运行hello程序,我们可以知道,指令和数据需要多次在寄存器、主存、磁盘之间来回复制,这些复制其实就是开销,减慢了程序工作的速度。这个时候我们就需要高速缓存存储器(cache memory)来解决这个问题。

    image-20201019195237101

      L1高速缓存的容量可以达到数万字节,访问速度几乎和访问寄存器文件一样快。

      L2高速缓存容量为数十万到数百万字节,通过一条特殊的总线连接到处理器。进程访问L2高速缓存的时间要比访问L1高速缓存的时间长5倍,但是这仍然比访问主存的时间快5~10倍。

      L1和L2高速缓存是用一种叫做 静态随机访问存储器(SRAM) 的硬件技术实现的。

      高速缓存局部性原理:程序具有访问局部区域中的数据和代码的趋势。因此,高速缓存存储器作为暂时的集结区域,存放处理器近期可能会需要的信息

    存储设备的层次结构

      从上至下,设备的访问速度越来越慢、容量越来越大,并且每字节的造价也越来越便宜。寄存器文件在层次结构中位于最顶部,也就是第0级或记为L0。

    image-20201019200335061

      存储器层次结构的主要思想是上一层的存储器作为低一层存储器的高速缓存。因此,寄存器文件就是L1的高速缓存,L1是L2的高速缓存,L2是L3的高速缓存,L3是主存的高速缓存,而主存又是磁盘的高速缓存。

    操作系统管理硬件

      操作系统是应用程序和硬件之间插入的一层软件。所有应用程序对硬件的操作尝试都必须通过操作系统。

      操作系统有两个基本功能:(1)防止硬件被失控的应用程序滥用;(2)向应用程序提供简单一致的机制来控制复杂而又通常大不相同的低级硬件设备。

      操作系统通过几个基本的抽象概念(进程、虛拟内存和文件)来实现这两个功能:文件是对I/O设备的抽象表示,虚拟内存是对主存和磁盘I/O设备的抽象表示,进程则是对处理器、主存和I/O设备的抽象表示

    image-20201019201009252

    进程&线程

      进程是操作系统对一个正在运行的程序的一种抽象。在一个系统上可以同时运行多个进程,而每个进程都好像在独占地使用硬件。而并发运行,则是说一个进程的指令和另个进程的指令是交错执行的。

      上下文:操作系统保持和跟踪进程运行所需的所有状态信息(PC值,主存的内容等)。

      上下文切换:操作系统通过控制处理器在进程间切换以达到交错执行的目的。

      从一个进程到另一个进程的转换是由操作系统内核( kernel)管理的。内核是操作系统代码常驻主存的部分。内核不是一个独立的进程。相反,它是系统管理全部进程所用代码和数据结构的集合

    image-20201019203213287

    一个进程由多个称为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。多线程比多进程更容易共享数据,而且线程间切换所有的开销要远小于进程切换。

    虚拟内存

      虚拟内存是一个抽象概念,它为每个进程提供了一个假象,即每个进程都在独占地使用主存。每个进程看到的内存都是一致的,称为虚拟地址空间。

    image-20201019203450101

      上图将虚拟地址空间分为了若干个部分,并用箭头表示该部分的扩展方向。最下端地址为0,向上地址逐渐增长。每个部分作用如下:

       程序代码和数据: 存放可执行程序代码和代码中的全局变量。

      堆: 用于动态申请的内存变量,比如malloc函数申请的动态内存空间,可以向上扩展。

      共享库: 用于存放C语言库函数的代码和数据。本例中即printf的代码和数据。

      栈: 位于虚拟地址空间的顶部,用于函数调用、存放局部变量等。当我们调用一个函数时,栈会向下扩展,返回时,向上收缩。

      内核虚拟内存: 地址空间顶部的区域是为内核保留的。不允许应用程序读写这个区域的内容或者直接调用内核代码定义的函数。相反,它们必须调用内核来执行这些操作。对于一个64位的操作系统来说,用户空间为0-3G,内核空间为3G-4G。(用户空间和内核空间有何区别,见秋招资料整理中的嵌入式软件工程师笔试面试知识点总结)

    并发&并行

      并行:指在同一时刻,有多条指令在多个处理器上同时执行。所以无论从微观还是从宏观来看,二者都是一起执行的。

    img

      并发:指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行

    img

    多核处理器&多线程

      多核处理器:多核处理器是将多个CPU(称为“核”)集成到一个集成电路芯片上。如下图所示,微处理器芯片有4个CPU核,每个核都有自己的L1和L2高速缓存,其中的L1高速缓存分为两个部分——一个保存最近取到的指令,另一个存放数据。这些核共享更高层次的高速缓存,以及到主存的接口。

    image-20201019212750093

      超线程:超线程,有时称为同时多线程( simultaneous multi-threading),是一项允许一个CPU执行多个控制流的技术。举个例子,Intel Core i7处理器可以让每个核执行两个线程,所以一个4核的系统实际上可以并行地执行8个线程。

      养成习惯,先赞后看!如果觉得写的不错,欢迎一键三连,谢谢!

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    本文链接:https://blog.csdn.net/qq_16933601/article/details/109169750

    展开全文
  • 计算机系统系统架构与操作系统的高度集成 下载

    千次下载 热门讨论 2016-12-02 19:55:09
    本书采用集成方法,系统地讲解了计算机系统的软件和硬件知识。全书分为5个模块:处理器、内存系统、存储系统、并行系统和网络,分别介绍并讨论了处理器及其相关的软件问题、内存系统和内存分级体系、I/O和文件系统、...
  • 第一章 计算机系统1.概述1.1.1 计算机的发展历程1.1.2 计算机体系结构1.2 计算机硬件系统1.2.1 中央处理器(central processing unit)1.2.2 计算机的基本工作原理1.计算机指令格式2.计算机指令的寻址方式3. 计算机...

    计算基础知识点合集来啦!!! 更多知识请关注我!!!
    第一章 计算机系统

    1.1概述

    1.1.1 计算机的发展历程

    第一胎电子数字计算机 ENIAC 1946

    发展阶段:
    电子管计算机时代
    晶体管计算机时代
    集成电路计算机时代
    大规模集成电路计算机时代

    1.1.2 计算机体系结构

    计算机系统结构

    计算机硬件:指组成一台计算机的各种物理装置,硬件系统也被称为裸机,只能识别0-1代码,
    系统软件: 是指控制和协调计算机及外部设备,支持应用软件开发和运行的软件

    1.2 计算机硬件系统

    1.2.1 中央处理器(central processing unit)

    CPU包括两个部分:
    控制器和运算器(逻辑算术单元)。都包含有寄存器或高速存储区域,用总线(一种电子线路连接)

    通常运算器和控制器被合成在一块集成电路的芯片上,被称作CPU芯片

    (1)控制器
    操作:获取指令、分析指令、执行指令、存储结果

    (2)运算器
    执行算术运算和逻辑运算,并控制速度

    (3)寄存器
    提高计算机性能,是高速存储区域,可以在处理过程中临时存储数据

    CPU中寄存器的数量和每个寄存器的大小(位数)没确定CPU的性能和速度
    e.g.32位CPU指,寄存器是32位的,可以处理32位的数据

    类型:指令寄存器、地址寄存器、存储寄存器、累加寄存器

    (4)总线 (见1.2.5节

    总线是CPU内部及在CPU和主板间传输信息的电子数据线路。
    可以通过总线访问各种输入输出设备

    1.2.2 计算机的基本工作原理

    1.计算机指令格式

    计算机指令 = 操作码+操作数(地址码)

    计算机指令是能够被计算机识别的二进制代码

    计算机操作码所占二进制位数为k,则最多有 2 k 2^k 2k条指令,
    若有n条指令,则至少有操作码 [ l o g 1 ( n − 1 ) ] + 1 [log_1(n-1)]+1 [log1(n1)]+1 个二进制位

    地址码用来描述该指令的操作对象,或直接给出操作数,或之处操作数的存储器地址或寄存器地址(即,寄存器名)

    若计算机指令共占n个字节,则称该指令为n字节指令

    2.计算机指令的寻址方式

    有效地址 : 指令中操作数的真实地址
    由寻址方式和形式地址共同来决定

    寻址方式
    确定本条指令的数据地址以及下一条将要执行的指令的地址,与硬件结构密切相关

    分为两类:
    (1)指令寻址
    分为两类:

    • 顺序寻址
    • 跳跃寻址

    (2)数据寻址
    分为:

    • 立即寻址(所需操作数由指令的地址码部分直接给出)
    • 直接寻址(指令的地址码部分给出操作数在存储器中的地址)
    • 隐含寻址(操作数隐含在操作码或某个寄存器中)
    • 间接寻址、寄存器寻址、寄存器间接寻址等

    3. 计算机指令系统

    定义: 计算机的所有指令的集合

    功能分类:
    (1)数据传送指令
    (2)程序控制指令
    (3)数据处理指令
    (4)输入/输出指令
    (5)其他指令

    4. 计算机执行指令的基本过程

    步骤:

    • 取指令
      按照程序计数器地址,从内存储器中取出当前要执行的指令送到指令寄存器
    • 分析指令
      由译码器对指令中的操作码进行译码,将指令中的操作码转换成相应的控制信息,由指令中的指令码确定操作数存放的地址
    • 执行指令
      由控制电路发出一系列控制信息,由源地址码所指出的源操作数做该指令所要求的操作,并将操作结果放到由目的地址吗指出的地方
    • 修改程序计数器
      一条指令执行完后,根据程序的要求修改程序的计数器的值

    5.指令执行的时序

    机器周期 内存中读取一个指令字的最短时间
    每个机器周期至少完成一个基本操作

    指令周期 计算机完成一条指令所花费的时间

    1.2.3 存储器

    作用分类 :主存(通常采用半导体存储器,容量小 读写速度快、价格高 )、辅存、缓存、闪存 等

    1.RAM存储器

    (1)静态存储单元(static RAM, SRAM)
    保存信息稳定、信息非破坏性读出
    结构简单、可靠性强、速度较快
    所用原件较多、占硅片面积大、功耗大、集成度不高

    (2)动态存储单元(dynamic RAM, DRAM)
    分类:三管式、单管式
    靠电容存储电荷的原理来寄存信息
    电荷自动消失,在2ms之内对存储单元进行再生或刷新
    集成度更高、功耗更低

    (3)闪速存储器
    电可擦除非易失器件
    抗震、节能、体积小、容量大、便宜

    (4)高速缓冲存储器Cache
    用速度高的SRAM元件组成
    快表+快速存储器

    5. 存储器的层次化结构

    指标: 速度、容量、每位价格
    - + - 容量越大,速度越慢,价格越低

    1.2.4 数据的内部表示

    1.进位计数制及其相互转换

    基数(radix) :拥有的数字个数
    : 每位数字的值

    2.定点数的表示和运算

    分类:无符号数、带符号数,其表示范围与机器位数相关

    (1)无符号数
    非负整数,机器的字长的全部位数均用来表示数值大小

    (2)带符号数
    符号位(机器数): 0为正 1为负

    根据符号位和数值位的编码方法分:

    • 原码
      符号位+绝对值

    • 反码
      正数:反码=原码
      负数:反码=符号位+绝对值各位取反

    • 补码
      正数:补码=原码
      负数:补码=反码+1

      反码的反码 == 原码
      补码的补码 ==原码
      两数的补码之和==两数和的补码

    • 偏移码
      补码的符号位取反

    运算:
    (1)加减运算
    (2)算数移位运算
    带符号数一位,保持操作数符号不变
    (3)逻辑移位运算
    无符号数移位

    3.浮点数的表示和运算

    (1)浮点数的表示范围
    指小数点的位置可浮动的数据
    N = M ⋅ R E N=M\cdotp R^E N=MRE

    N为浮点数,M为尾数,E为阶码 R为阶的基数(底)
    在一台计算机中所有数据的R都是相同的

    浮点数的机内表示:

    M s + E + M Ms+E+M Ms+E+M

    其中:
    Ms是尾数的符号位1位 0正1负
    E为阶码有n+1位有一位符号位表示正阶或负阶
    M为尾数,有m位,
    Ms和M组成一个定点小数

    (2)IEEE 754 标准
    单精度浮点数 (32位),E8位,M24位(内含符号数一位)
    双精度浮点数 (64位),E11位,M53位(内含符号数一位)

    1.2.5 总线和外设

    1.总线

    (1)总线的基本概念
    总线 是连接计算机中各个部件的信息传输线,是各个部件共享的传输介质

    按信息传送方式: 串行传输、并行传输

    按功能和实现方式分类:

    • 片内总线
      芯片内部的总线
    • 系统总线
      计算机各部分的信息传输线
      包括:
      数据总线(双向总线,宽度与机器字长、存储字长有关)
      地址总线(单向总线,与存储地址、I/O地址有关)
      控制总线(部分出、部分如方式,控制所有部件)
    • 通信总线
      计算机之间或系统之间的通信
      依据传输方式分:串行通信总线、并行通信总线

    (2)总线的组成及性能指标
    结构分类
    单总线结构、多总线结构(将I/O设备分离出来)

    性能指标
    总线宽度(数据总线的根数)、总线带宽(数据传输效率)、钟同步/异步 等

    (3)总线仲裁
    工作包括: 判优控制、通信控制
    逻辑分为: 集中式、分布式

    (4)总线操作

    • 读和写
    • 块传送
    • 写后读
    • 读后写
    • 广播
    • 广集

    (5)总线标准
    系统与各模块、模块与模块之间的一个互连的标准界面

    2. 输入/输出系统

    (1) 外部设备的分类
    按作用分:

    • 输入/输出(input/output,I/O)设备
    • 辅助存储器
    • 终端设备
      组成: 输入设备+输出设备+终端控制器
      通过通信线路与主机相连
    • 过程控制设备
    • 脱机设备

    (2)硬盘存储器
    分类:固定磁头磁盘存储器、移动磁头磁盘存储器
    性能指标:存储密度(道密度:半径方向磁道数,位密度:磁道单位长度能记录的二进制代码)、存储容量、存取时间、数据传输率(单位时间向主机传送的数据字节数)

    (3)I/O接口
    连接总线和设备

    基本功能:

    • 实现设备选择
    • 实现数据缓冲以达到速度匹配
    • 实现数据串并格式转换
    • 实现电平转换
    • 传送控制命令
    • 反映设备状态

    (4)I/O方式

    • 数据查询
    • 程序中断
    • DMA(直接内存存取)
    • 通道方式

    1.3 操作系统

    计算机资源: 计算机系统中所有的硬件和软件

    1.3.1 操作系统概述

    1. 操作系统的功能与任务

    主要作用 :
    (1)管理系统资源
    (2)为用户提供资源共享的条件和环境,并对资源的使用进行合理调度
    (3)提供输入/输出的方便环境,简化用户的输入/输出工作,提供良好的用户界面
    (4)规定用户的接口,发现、处理或报告计算机操作过程中出现的各种错误

    概括的说:操作系统是用以控制和管理系统资源、方便用户使用计算机的程序集合

    功能与主要任务:
    (1)处理机管理
    (2)存储机管理
    (3)设备管理
    (4)文件管理
    (5)用户接口

    2.操作系统的发展过程

    (1)手工操作
    (2)批处理系统
    (3)多道程序系统
    (4)分时系统
    (5)个人计算机操作系统

    3.操作系统的分类

    (1)多道批处理操作系统
    多道:计算机内存中存入多个用户
    批处理:外存内存入大量作业,作业的运行完全由系统控制
    (2)分时操作系统
    允许多个联机用户同时使用一台计算机系统进行计算
    将时间划分成时间片,分给各个用户
    多路性、交互性、独立性、及时性
    (3)实时操作系统
    系统能够接收数据并以足够快的速度予以处理和响应
    可以控制所有任务协调一致进行
    eg.三种典型:
    过程控制系统、事务处理系统、信息查询系统
    (4)网络操作系统
    将计算机加入网络中
    网络通信、资源管理、网络管理、网络服务、通信透明性
    (5)分布式操作系统
    由多台分散的计算机经网络互连而成的系统
    (6)嵌入式操作系统
    运行于嵌入式系统上的操作系统

    1.3.2 进程管理

    1.并发程序设计

    并发程序的特点 :
    (1)无封闭性
    并发式程序的输出结果受各程序的相对速度有关(结果的不确定性)
    (2)程序与执行过程不是一一对应的关系
    共享的程序对应多个执行过程
    (3)程序并发执行可以相互制约
    不但可能有因果制约,也可能因为有某些资源共享从而间接制约

    2.进程的基本概念

    程序本身是一个静态的概念,不能刻画多道程序并发执行时的动态特性和并行特性。

    进程
    (1)是程序的执行过程
    (2)包括程序和数据
    (3)可能对应多个程序
    (4)程序可能对应多个进程

    3.进程的状态及其转化

    运行、就绪、等待、创建、终止

    4.进程控制块及其组织

    PCB(process control block)是进程存在的标志
    (1)进程名
    (2)特征信息
    (3)执行状态信息
    (4)通信信息(该进程与其他进程之间的关系
    (5)调度优先数
    (6)现场信息
    (7)系统栈
    (8)进程映像信息
    (9)资源占有信息
    (10)族关系

    5.进程调度

    可抢占资源、不可抢占资源
    调度算法:
    先来先服务、时间片轮转、优先级调度

    1.3.3存储管理

    1.存储管理功能与地址重定位

    (1)存储管理的功能:

    • 地址变换
    • 内存分配
    • 存储器的共享与保护
    • 存储器扩充

    (2)地址重定位
    重定位寄存器(relocation register)加入起始地址,将取出逻辑地址加上重定位寄存器(其内容是程序装入内存的起始地址)形成物理地址。
    动态地址重定位:
    不要求程序全部装入固定的内存空间,在内存中允许程序再次移动位置、而且可以部分地装入程序运行、便于多个程序运行同一副本。
    存储器管理技术
    基址寄存器BR 限长寄存器LR
    实际内存地址D=BR + 指令中的有效地址
    如果:BR≤D<BR+LR 则按地址D进行访问
    如果 D<BR 或 D>=BR+LR 则地址越界

    2.连续存储管理

    1.固定区分配

    • 把内存划分成若干大小固定的分区,一个分区分给一个作业使用,直到作业完成
    • 简单、硬件支持少、容易产生内部碎片

    2.可变区分配

    • 在作业调入内存时建立一个大小恰好与作业匹配的分区
    • 空闲区域是离散的、出现外部碎片

    3.分页式存储管理

    • 作业空间被划分成页,实际内存空间划分成块。页的大小与块的大小相等。当某个作业被调入内存运行时,由重定位机构将作业中的页映射为到内存空间的块上。
    • 有效地址结构:页号+页内偏移量

    建立程序逻辑页与内存的存储块之间的对应关系,借助动态地址重定位。

    (1)分页式存储管理的地址重定位
    页表:页面映像
    PCB中存储起始地址与长度

    (2)分页式存储保护

    1. 地址变换时:页号<页表长度 (否则视为越界访问)
    2. 增加存取控制与存储保护的信息

    <优点
    有效解决碎片问题、内存利用率高、内存回收与分配算法简单
    <缺点
    采用动态地址变换增加了硬件成本、降低了处理机速度
    分段式存储及段页式存储

    4.分段式存储管理及段页式存储管理

    (1)分段式
    每段分配连续的存储空间
    短号+段内位移
    <解决了程序与数据共享以及程序动态链接等问题

    段页式
    段号+段内页号+页内位移

    5.虚拟存储器管理

    只让当前用到的信息进入内存、其他尚且用到的信息留在外存
    用于支持虚拟存储器的外存称为后备存储器

    (1)请求页式存储管理
    作业表JT、页表PMT、存储分块表MBT

    (2)请求段式存储管理
    最优算法
    先进先出算法
    最近最久未用算法

    1.3.4.文件管理

    1.文件及文件系统

    文件:一组带标识(标识即为文件名)的、逻辑上有完整意义的信息项的序列。
    文件系统:负责存取和管理文件信息的软件机构
    文件的类型
    用途(系统文件、库文件、用户文件
    性质(普通文件、特殊文件、目录文件
    保护级别(只读、读写、可执行、流文件
    文件数据类型(源文件、目标文件、可执行文件
    文件系统模型:层次模型

    2.文件的组织结构

    (1) 文件的逻辑结构
    记录式文件 在逻辑上被看作是一组顺序记录的集合,一种有结构的流式文件组织,并且根据记录文件长度可分为定长文件和变长文件。
    流式文件 又称无结构文件,是由一组相关信息组合成的有序字符流,直接按字节计算。
    (2) 文件的物理结构
    文件在外部存储介质上的存放形式,也叫文件的存储结构
    分类:顺序结构、链接结构、索引结构

    • 顺序结构:逻辑上连续的文件信息存放在连续编号的物理块中,只需给出文件块号和文件长度
    • 链接结构:逻辑上连续的文件分散地存放在不同的物理块中,在各物理块中,在各物理块中设立指针
    • 索引结构:系统为每个文件建立索引表,表项指出存放该文件的各个物理块号,索引表在文件属性说明项中指出。

    3.文件目录管理

    (1) 文件目录概念
    文件名与文件在外存空间中的物理地址的对应
    目录:用于管理文件

    文件控制块FCB :文件的文件目录项
    包括: 文件存取控制、结构、使用、管理的信息

    (2) 文件目录结构
    【1】 单级目录
    【2】 二级目录
    【3】 多层次目录

    (3) 文件空闲区的组织
    【1】 空闲文件项和空闲区表
    【2】 空闲块链
    【3】 位示图
    用若干字节构成一张表,表中每一个二进制位对应一个物理块
    1–物理块已分配、 0 --物理块空闲
    【4】 空闲块成组链接法

    1.3.5 I/O设备管理

    1.输入/输出软件中的层次结构
    2.中断处理过程
    3.设备驱动程序
    4.与设备无关的I/O软件
    5.用户层的I/O软件
    6.设备的分配与回收

    都看到这里啦,不点个赞嘛~

    展开全文
  • 计算机系统结构总复习

    万次阅读 多人点赞 2019-01-08 08:27:31
    计算机系统结构基础及并行性的开发 计算机系统的层次结构 通用计算机系统可以被可以被看出是按机器级划分的多层机器级组成的层次结构。 语言应用机器级 高级语言 汇编 操作系统 传统机器语言 微程序机器级 机器:...

    计算机系统结构基础及并行性的开发

    第一章计算机系统的层次结构

    考试已经结束,现在我把我们考试考得知识点用#标注,请注意这些点

    1. #考了选择题重点:通用计算机系统可以被看成是按机器级划分的多层机器级组成的层次结构。

    语言应用机器级
    高级语言
    汇编
    操作系统
    传统机器语言
    微程序机器级

    这个据说很重要,请牢记。

    机器:能存储和执行相应语言程序的算法和数据结构的集合体。
    实际上,只有二进制机器指令,即传统所讲的机器语言与机器硬件直接对应,方可直接被硬件识别和执行。

    1. 各机器级的实现主要靠翻译和解释或两者结合进行。
      翻译是先用转换程序将高一级机器级上的程序整个地变换成低一级机器级上等效的程序,然后再在低一级机器级上实现的技术。
      解释则是在低级机器上用它的一串语句或指令来仿真高级机器上的一条语句或指令的功能,是通过对高级的机器级语言程序中的每条语句或指令逐条解释来实现的技术。

    2. M0用硬件实现,M1用微程序实现,M2-M5用软件实现。(指的是上面的6层)

    计算机系统结构,组成,实现

    1. 透明:客观存在的事物或属性从某个角度看不到,简称其为透明。
      选择有可能!!

    2. 计算机系统结构指的是传统机器级的系统结构。它是软件和硬件的交界面,是机器语言,汇编语言程序设计者,或编译层序设计者看到的机器物理系统的抽象。出在传统机器语言与操作系统级之间。

    下面计算机系统,计算机组成,计算机实现的区别,还是要掌握,可能会选择题出现。特别是那个例子。

    1. 计算机系统结构的属性:

    数据类型及格式等的数据表示
    寻址方式
    通用寄存器的设置,数量,字长,使用约定。
    二进制或汇编的操作类型,格式,排序,控制机构。
    主存的最小编址单位,编址方式,容量,最大可编址空间。
    中断的分类与分级,中断处理程序功能及入口地址。
    管态和用户态的定义与切换。

    1. 计算机组成:指的是计算机系统结构的逻辑实现,包括机器级内部的数据流,和控制流的组成以及逻辑设计。着眼于机器级内部各事件的排序方式与控制机构,各部件的功能及各部件间的联系。

    解决的问题是在所希望达到的性能和价格情况下,怎样更好,更合理地把各种设备和部件组织成计算机,来达成所确定的系统结构。

    1. 计算机实现指的是计算机组成的物理实现,包括处理机、主存等部件的物理结构。

    2. 举例:

      * 是否要设乘法指令->计算机系统结构
      * 乘法指令是用专门的高速乘法器还是用加法器和移位器实现->计算机组成
      * 乘法器、加法器的物理显示,如器件的类型,集成度,数量的确定和选择->计算机实现
      
      1. 主存容量与编址方式的确定----系统结构
      2.主存速度的确定、逻辑结构的模式---组成
      3.器件的选定、电路的设计、组装技术---实现
      
    3. 冯•诺依曼计算机的特点主要有(没啥用):

      一、计算机有运算器、存储器、控制器、输入设备和输出设备五大部件组成,这五大部件是计算机不可或缺的部分,缺少了哪一个都无法正常工作。
      二、指令和数据以同等地位存放于存储器内,并可按地址访问。
      三、指令和数据均可用二进制表示。
      四、指令由操作码和地址码组成。操作码表示操作的性质、地址码表示操作数在存储器中的位置.
      五、指令在存储器中按顺序存放。通常,指令是顺序执行的。在特殊情况下,可根据运算结果或指定的条件来改变运算顺序。
      六、机器以运算器为中心。输入输出设备和存储器之间的数据传送通过运算器完成。

    4. ISA:指令集体系结构 Instruction Set Architecture
      总共要知道是什么东西

    计算机系统的性能评测

    这是知识总结挺好的一个网站,建议进去看看,这是一个大佬博客,比我讲的好,强烈建议进去看下。流水线—你理解多少?

    1. 计算机系统的性能指标体现于时间和空间两个方面
    2. Tcpu = IC * CPI*1/Fc
    3. #这三个公式考了一个大题,注意那些单位啊
    • MIPS:百万条指令数每秒 MIPS:百万条指令数每秒
    • CPI :每条指令执行的平均时间周期数=执行程序的时钟周期数/IC
    • IC:所执行的指令条数
    • IPS:每秒执行的指令条数
    1. 在这里插入图片描述

    2. 在这里插入图片描述

    3. 在这里插入图片描述

    4. 计算机系统的定量原理:

      哈夫曼压缩原理:尽量加速处理高概率事件
      Amdahl定律:系统加速比 Sp Sp = 1/(1-fnew)+fnew/rnew
      性能提高的幅度受限于性能改进部分所占的比例大小,而性能改善的极限又受限于性能可改进比fnew 的约束
      程序访问的局部性原理
      在这里插入图片描述
      典型例题:https://wenku.baidu.com/view/f6e65a77783e0912a2162ae6.html

    5. 仿真和模拟的主要区别:在于解释用的语言,仿真是用微程序解释,其解释程序存在于控制存储器中,而模拟是用机器语言程序解释,其解释程序存在于主存中。

    6. 在这里插入图片描述
      这里主要要注意的便是这个成本性能比。

    7. 计算机系统的性能评价:

      时钟频率
      指令执行速度
      平均速度
      核心程序法
      峰值速度
      

    在这里插入图片描述

    系统结构中的并行性开发及计算机系统的分类

    1. 并行性:包含同时性:指两个或多个事件在同一时刻发生。
      并发性:只两个或多个事件在同一时间间隔内发生。

    2. 并行性的等级:

      指令内部
      指令之间
      任务或进程之间
      作业或程序之间

    3. 并行性开发的途径:

      时间重叠:在并行性概念中引入时间因素,让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。
      
      资源重复:在并行性概念中引入空间因素。通过重复设置硬件资源来提高可靠性或性能。
      
      资源共享:利用软件的方法让多个用户按一定时间轮流地使用同一套资源,以提高其利用率。
      

    4.多机系统的耦合度:

    最低耦合
    松散耦合
    紧密耦合

    1. 各个子系统通过数据总线连接形成的数据传送路径称为数据通路
    2. 流水线技术:把一个重复的过程分解成多个子过程,每个子过程由专门的功能部件来实现。把多个处理过程在时间上错开,依次通过各个功能段,每个子过程就可以与其他i子过程并行进行。
    3. 输入->取指->译码->访存->写回->输出
    4. 流水线的种类

    部件级
    处理机级
    系统级

    在这里插入图片描述

    1. 在这里插入图片描述
      各段不相等时
      Tp = n/(所有段的和+(n-1)*max(每一段的值))
    2. 在这里插入图片描述
    3. 在这里插入图片描述

    第二章 数据表示,寻址方式与指令系统

    1. 浮点数

    2. 寻址方式

    3. 指令系统中指令的编码方法

      • 正交法
      • 整体法
      • 两者 混合法
    4. 在CPU中是以何种方式来存储操作数的。

      • 堆栈型
      • 累加器型 A
      • 通用寄存器型
    5. 编译优化的技术。

      • 使用大量寄存器,优化寄存器的分配和使用,提高效率,减少访存次数。
      • 减少局部变量和工作变量的中间传递,
      • 优化调整指令的执行次序,减少机器的空等时间。
    6. ##这个也考了一题大题。题目出现了指令Cache,和数据Cache。注意里面那个容量的计算,要先换算成为kbit,才可以。在这里插入图片描述
      Cache的容量=Cache的行数*(有效位+主存标识位的位数)+Cache数据区容量的大小*8
      这里算出来是kbit,你要总体再除以8,就算出有多少个字节了。
      主存标记位的位数的计算的话,要看你是直接映射,还是组相连映射,还是全相联映射。
      直接映射跟组相连的没啥差别,都是[有效位,标记,cache索引,块内地址]
      而全相联的则是[有效位,块内地址],有不同噢!

    地址的映象
    地址的映象:是将每个主存块按某种规则装入Cache,并建立主存地址与Cache地址之间的对应关系。
    地址的变换:是主存块按照这种映象关系装入Cache后,每次访Cache,如何将主存地址变换成Cache地址。

    9.命中率与地址流,预判算法,容量有关。

    遇到的一些问题

    1. 考了浮点数那边要注意一些基本问题,比如基数的改变,阶码的改变会造成什么后果。
      在这里插入图片描述
      就类似于这种题目.
      阶符是当一个数用科学计数法表示时,它的指数的符号,指数是正还是负,正负号就是阶符,阶码在机器中表示一个浮点数时需要给出指数,这个指数用整数形式表示,这个整数叫做阶码,阶码指明了小数点在数据中的位置 数符就是数字符号的简称 在浮点数中

    2. 重复设置瓶颈段,还有就是细分,都要掌握。 在这里插入图片描述
      这题就没啥办法了,自己多画几遍就好了。

    3. 有一个Cache—主存存储层次,主存共8块,Cache共4块,采用组相联映像,每组2块,LRU替换算法。(这个的图不需要把最新的往最上面提,不像题目有堆栈的话语的那种,见下面的第四点)
      1)对地址流124137012546472使用情况;
      2)指出块失效同时块争用的时刻
      3)求出命中率。
      在这里插入图片描述

    4. 注意两种题目的不同:

    • 执行的页地址流为****,若分配给该道程序的主存有3页,这种题目,最新的那个块不用往最上面提。
    • 另一种是,页地址流采用LRU算法进行堆栈处理的St变化过程。
    1. 有如下页面地址流:2,1,3,1,4,2,5,3,2,1,2,3,4,1,5利用堆栈技术一次模拟LRU在n=3,4,5条件下页面变化时空图,同时分别指出命中的页面以及计算它们各自的命中率。

    2. 在这里插入图片描述

    3. 在这里插入图片描述
      ##上面这题考了,命中率,要注意。

    4. 在这里插入图片描述
      这里要稍微注意那个主存块号->转换成Cache行号

    5. 在这里插入图片描述

    6. 在这里插入图片描述在这里插入图片描述
      解析:#这题也考了注意这题的a[][]是short类型的,是两个字节的。参照上面的解题思路,a[0][0]所在的主存号为:3200/64 = 50
      因为是2路组相联,所以,50mod 8 =2,就是Cache的行号了。
      接下来,算访问次数:256256 = 64k
      缺失次数(总块数):64k
      (2B/64B) = 2K;
      缺失率:2K/64K = 1/32
      所以,命中率31/32

    7. 在这里插入图片描述

    8. 在这里插入图片描述
      解析:##考的不是这种类型,是工作速率的
      该通道完成一个字节的传送需:9.8+0.2 = 10us
      为保证传输可靠性,不丢失数据,此通道至多可接500/10 = 50台设备
      对于A-F六种告诉设备,该通道一次传送数据的时间为:9.8+0.2*1024 = 214.6us
      上述设备发送1024字节数据的申请时间间隔分别为:
      204.8 256 512 194.56 409.6 215.04
      所以,B,C E,F可挂在该通道上,A ,D不能。

    9. 在这里插入图片描述

    10. 一些题目:https://max.book118.com/html/2016/1207/69323539.shtm

    在这里插入图片描述

    1. 比较好的一些题目集:计算机系统结构 学习笔记(期末复习总结)强烈推荐这个,考了很多大题

    在这里插入图片描述

    在这里插入图片描述
    这里的处理方法是:1+6+1+1+7+1+31 = 16+N
    相关的一些链接:系统结构_06_向量处理机指令技术
    考了一个大题,怪我没理解好。注意那种连续链接的
    20.
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    ##考了类似这种题目,要画时空图,别以为它不会考,掌握把。

    选择题

    1. 在这里插入图片描述
    2. 类似选择题有考

    在这里插入图片描述
    4. 在这里插入图片描述
    5. 在这里插入图片描述
    6. 在这里插入图片描述
    7. 在这里插入图片描述
    8. RISC是一种执行较少类型计算机指令的微处理器。
    9. 在这里插入图片描述
    10. 在这里插入图片描述
    11. **加粗样式**
    12. 在这里插入图片描述
    13. cache的总容量是cache每行的数据存储大小+tag位+数据是否有效位+其他一致性控制位。
    14. 在这里插入图片描述
    15. 在这里插入图片描述
    16. 在这里插入图片描述
    17. 在这里插入图片描述
    18. 在这里插入图片描述
    19. 在这里插入图片描述
    20. 选择题考了

    • 总线控制方式有串行链接、定时查询和独立请求3种。总线控制方式有串行链接、定时查询和独立请求3种。
      串行链接需增加3根控制线,优先级线连固定,无灵活性;
      定时查询需增加2十「log2N」根控制线,优先级可用程序改变,灵活;
      独立请求需增加2N+l根控制线,优先级可用程序改变,灵活。在这里插入图片描述

    在这里插入图片描述

    对复习提纲的总结

    1. CA, CA与CO ,CI 三者的相互影响?
    • CA也称为计算机系统的体系结构,它是指机器语言程序的设计者和编译程序的设计所看到的计算机系统的概念性结构和功能特性。
    • CO指的是计算机系统的逻辑实现,包括机器级内的数据流和控制流的组成和逻辑设计。
    • CI值得是计算机组成的物理实现。包括一些主存,处理机等部件的物理结构。
    1. 计算机系统的设计思路?
    • 从上往下:专用机 设计周期太长。
    • 从下往上:通用机->缺点,机器的性能指标虚假。
    • 从中间向两边:通用机->克服上面的缺点,克服软硬件设计分离和脱节的致命缺点,同时要求设计者同时具备丰富的软硬件和应用等方面的知识。
    1. 软件可移植的方法
    • 统一高级语言
    • 采用系列机
    • 模拟和仿真
    1. 并行性的含义
    • 我们把解题中同时进行运算或操作的特性,称为并行性。
    • 同时性:
    • 并发性:
    1. 并行性的级别
    • 指令内部
    • 指令外部
    • 进程与任务之间
    • 程序与作业之间
    1. 并行性开发的3种途径,##考了填空,太气了,记反了
    • 时间重叠
    • 资源重复
    • 资源共享
    1. FLnn分类法
    • SISD
    • SIMD
    • MISD
    • MIMD
    1. CA的层次
      六级 M0->M5
    2. 扩展操作码
      界于定长和全哈夫曼编码之间
      **特点 **:常用的代码短,不常用的代码长
    3. RISC和CISC的原则,特点,比较。
      在这里插入图片描述
    • RISC
      原则:
      1、确定指令系统时,只选择使用频度很高的那些指令,一般不超过 100 条。
      2、大大减少指令系统可采用的寻址方式的种类,一般不超过两种。
      3、让所有指令都在一个机器周期内完成。
      4、扩大通用寄存器的个数,以尽可能减少访存操作
      5、为提高指令执行速度,大多数指令都采用硬联控制实现, 少数指令采用微程序实现。
      6、以简单有效的方式来支持高级语言的实现。
      特点:
      1、有限、简单的指令集
        2、CPU配备大量的通用寄存器
        3、强调对指令流水线的优化
        4、使用等长指令(即:不需要解析指令)
        5、寻址方式少,绝不出现存储器间接寻址
        6、指令集中指令数一般少于100条,指令格式少于4种
      7、指令功能简单,控制器多采用硬布线方式等。
      比较
      从硬件角度来看CISC处理的是不等长指令集,它必须对不等长指令进行分割,因此在执行单一指令的时候需要进行较多的处理工作。而RISC执行的是等长精简指令集,CPU在执行指令的时候速度较快且性能稳定。因此在并行处理方面RISC明显优于CISC,RISC可同时执行多条指令,它可将一条指令分割成若干个进程或线程,交由多个处理器同时执行。由于RISC执行的是精简指令集,所以它的制造工艺简单且成本低廉。
      从软件角度来看,CISC运行的则是我们所熟识的DOS、Windows操作系统。而且它拥有大量的应用程序。因为全世界有65%以上的软件厂商都基于CISC体系结构的PC 及其兼容机服务的,象赫赫有名的Microsoft就是其中的一家。而RISC在此方面却显得有些势单力薄。虽然在RISC上也可运行DOS、 Windows,但是需要一个翻译过程,所以运行速度要慢许多。
    1. 浮点数的几个结论,考了
    • 阶码与表示数的范围有关
    • 尾数与表示数的精度有关
    1. ** 整数边界的处理**
    2. 大端小端,#考了
      在这里插入图片描述
    3. 在流水解释过程中可能会出现三种相关,这三种相关是资源相关、数据相关和控制相关。
    4. 数据相关
    • 读后写
    • 写后读
    • 写后写
    1. 数据相关的基本解决方法
      (1)推后相关单元的读。
      (2)设置相关专用通路,又称采用定向传送技术。
      (3)依靠编译器解决数据冲突 :让编译器重新组织指令顺序来消除冲突,这种技术称为指令调度或流水线调度。
    2. 向量链接技术的条件
    • 具有先写后读相关的两条指令
    • 在不出现功能部件冲突和源向量冲突的情况下
    1. 计算机存储系统三个基本参数
    • 存储容量S
    • 存储速度T
    • 存储价格C
    1. 存储系统的层次结构

    通用寄存器
    高速缓冲存储器
    主存储器
    辅助存储器
    脱机大容量存储器
    20.影响命中率的因素

    • 地址流
    • 预判算法
    • 主存容量
    • 页面大小
    • 页面调度方式
    1. 虚存与缓存层次的不同比较在这里插入图片描述
    2. 3种虚存管理方式的异同
    • 段式管理:按程序的逻辑功能来划分
    • 页式管理:按主存空间与虚存空间按固定的大小划分成块
    • 段页式管理 :将虚拟存储空间按段式管理,而主存空间按页式管理,存在虚空间的程序按逻辑关系分段,每一段又可分为固定大小的页。主存则只分为若干大小相同的页。
    1. 几种RAID的技术,用途。
    • RID0:数据以条带方式均匀的分散在各个磁盘上。2个或更多
    • RID1:数据以镜像为冗余方式,同一份数据有多份拷贝。2N个
    • RID3/4:数据按条带方式并行传输给各个成员磁盘上,同时计算XOR校验数据存放到专用的校验磁盘上。 3个或更多
      *RID5:数据以条带方式均匀的分散在各个磁盘上,校验信息被均匀的分配到各个磁盘上。最低位3个。
    1. 总线控制方式3种
    • 程序控制输入输出
    • 直接存贮器访问
    • I/O处理机方式
    1. 通道处理机工作原理
      通道方式的输入输出过程:
      1.用户在目态中安排广义I/O指令(包括访管指令和参数)
      2.当目态程序执行在访管指令后,产生访管中断。
      3.CPU响应中断,第一次转管态,运行目态程序
      4、编制通道程序,管理程序
      5、执行“启动”I/O‘指令选择通道,校验第一条通道指令格式,选择设备并启动通道及设备。
      6、通道启动后,
      1)CPU退出管态,运行目态程序
      2)通道与设备开始传送数据
      7、通道传送结束,向CPU发I/O中断。
      8.CPU响应中断,第二次转管态,对刚才的通道做”善后“处理
      9.返回目态,运行目态程序。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      主要状态转换:
      1、进管态,编制通道程序(目——管态)
      2、启动,选择设备期(管态——目态)
      3、数据传送期(目态)
      4、传送结束,中断(管态——目态)
      只需两次转管,系统多个通道,多种外设可充分并行
    2. 通道流量分析原则
    • 一个通道在数据传送期间,单位时间内能够传送的数据量。所用单位一般为B/s。 又称为通道吞吐率、通道数据传输率等。
    • 通道最大流量
    • 一个通道在满负荷工作状态下的流量 。

    最后,祝大家考试顺利,考的都会,蒙的全对。一定要注意,每个题型都要打牢靠,不然稍微一变,你会发现,你就gg了。
    这里贴出我的复习资料,需要的同学自行下载。https://download.csdn.net/download/weixin_38809485/10936505

    展开全文
  • 可能很多读者有疑惑,什么是计算机系统?它和操作系统有何不同?我们为什么要深入理解计算机系统,会敲代码是否就足够了? 概括的讲计算机系统是由硬件和系统软件共同组成的,它们通过共同的协作来运行应用程序。而...

    一 章节概述


      什么是计算机系统?它和操作系统有何不同?我们为什么要深入理解计算机系统?概括的讲计算机系统是由硬件和系统软件共同组成的,它们通过共同的协作来运行应用程序。而我们在日常编写程序时使用的文件、内存、进程等概念都是为了程序编写的方便,由实际的计算机系统高度抽象而来。这一章中我们使用 c 语言编写简单的 hello 程序,试图通过跟踪 hello 程序的生命周期来窥探计算机系统的全貌。

    #include <stdio.h>
    
    int main()
    {
    	printf("hello, world\n");
    	return 0;
    }
    






    二 计算机系统漫游


    1. 何为信息


      现在人们常见的计算机大多继承了冯诺依曼结构的灵活性,即指令和数据不加区别的存储在存储器中。实际上在存储器中所有文件都是由 0 或 1 这样的位组成的序列,八个位被组成一个字节。同理在 hello 程序的生命周期之初,其源程序也就是 hello.c 是程序员通过编辑器创建的文本文件,文件由二进制位组成的一个个字节组成,每个字节则通过一张字符表表示成对应的字符。
      大部分计算机都使用 ASCII 表来表示字符,这种方法实际上就是用单个字节大小对应的数值来表示单个字符的。下图中给出 hello.c 程序的 ASCII 码表示。

      hello.c 的表示方法表明了一个思想:系统中所有的信息———磁盘文件、内存中的程序、网络传输的数据都是一串比特表示的。一个同样的字节序列可能表示整数,也可能表示浮点数、字符串或指令。像这样区分不同数据对象类别的唯一方法就是根据读这些数据对象时的上下文,就像程序中的类型声明一样。




    2. 源程序是如何变成可执行文件的


      hello.c 程序是如何从一个由 c 语言编写的文本文件,变成一个真正的可以运行的程序的呢? c 语言是一门由汇编语言抽象而来的高级语言,而汇编语言则同样是由十六进制组成的低级机器语言抽象而来。在计算机发展历史中,程序语言逐渐有晦涩难懂抽象成接近自然语言,经历了 机器语言->汇编语言->高级语言(如C语言),机器语言在计算机中可以直接执行。
      那么将 hello.c 源程序变成一个可以直接运行的程序需要经历与上述恰恰相反的过程,分为四个阶段:预处理、编译、汇编、链接,将 c 语言逐步翻译成汇编语言,再翻译成机器语言。而这四个阶段就构成了一个编译系统。
    下图中展示了 hello.c 的编译过程:

    • 预处理:根据 .c 文本中以 # 开头的命令修改原始 hello.c ,并生成 hello.i 文件。

    • 编译:将 hello.i 翻译成汇编语言代码 hello.s 。

    • 汇编:将汇编语言代码 hello.s 翻译成机器语言指令,打包成一个可重定位目标程序 hello.o 。

    • 链接:将多个 .o 文件链接成可执行文件 hello ,例如 hello.c 中使用了库函数 printf ,而 printf 存在一个名为 printf.o 的目标文件中,链接就是将这些如 hello.o 、printf.o 以 .o 结尾的目标文件合并成可执行文件 hello 。

    上述文件中 hello.c hello.i hello.s 均为文本文件,hello.o hello 为二进制文件。




    3. 处理器如何读并解释内存中的指令


      上文中我们已经获得了可执行文件 hello 。接下来如果要运行它就会通过在 shell 中输入

    linux> ./hello
    hello, world
    

      把它加载到内存中运行,shell 是操作系统中的命令行解释器,它将我们输入的文件名和回车解释为执行 hello 程序。于是 hello 程序将会被加载到内存中去执行,并在执行过程中输出程序中的 “hello, world” ,那么在计算机内程序的执行经历了哪些过程是值得探究的。我们在文章开头提到,计算机系统是由计算机的软硬件共同组成,在这里我们就需要先了解计算机系统的硬件组成。


    3.1 计算机系统的硬件组成

    计算机硬件由总线I/O设备主存处理器四个主要部分组成。

    • 总线:像图中画的一样是贯穿整个系统的电子管道,用于数据和指令在计算机不同组件之间传输和控制。通常总线被设计成传送定长的字符块,即字。在32位机中一个字4个字节(4 * 8 = 32位),在64位机中一个字8个字节 (8 * 8 = 64位)。

    • I/O设备:I/O(input/output)设备,是系统与外部世界的联系通道,鼠标、键
      盘、显示器、一起磁盘都是I/O设备。(我们的 hello 最开始就存放在磁盘上)

    • 主存:主存就是我们常说的运行内存,由一组动态随机存储器(DRAM)组成。在主存中程序运行时变量的数据大小是根据类型变换的。比如在运行 linux 的 x86-64 机器上,short 类型2个字节、int 和 float 类型四个字节,而 long 和 double 则需8个字节。

    • 处理器:中央处理的单元(CPU),是解释或执行存储在主存中指令的引擎。处理器主要由程序计数器PC算术/逻辑单元ALU还有寄存器组成。程序计数器PC也是一个大小一个字的寄存器,在任何时候PC指向主存中的某条机器语言指令。算术/逻辑单元ALU则来实现算术和逻辑的运算。

    处理器的运行过程:

    • 加载:从主存中加载数据到寄存器
    • 存储:从寄存器中复制数据到主存
    • 操作:把两个寄存器的内容复制到ALU做算术运算,将结果存放在一个寄存器中。
    • 跳转:从指令中抽取一个字复制到PC中以覆盖原来内容。


    3.2 hello程序在计算机运行经历的过程


    • 首先我们在shell上通过键盘输入"hello"时,shell将"hello"字符串从I/O设备键盘经由I/O总线逐一读到寄存器中,再把它放到内存。
    • 然后当我们在键盘上敲下回车的时候,shell程序便知道我们已经结束命令的输入。于是shell通过一系列命令将hello目标文件从磁盘中复制到主存。
    • 一旦目标文件被加载到主存,CPU便开始执行hello程序中main函数中的机器语言指令。这些指令将"hello, world\n"字符串从主存中复制到寄存器,在从寄存器复制到I/O显示器,最终显示到屏幕上。




    4. 计算机中存储器的层次结构


      上文中我们已经介绍了 hello 文件在计算机中的执行过程,不难发现一个问题,即系统花了大量的时间把信息从一个地方挪到另一个地方。根据机械原理,容量越大的存储设备往往速度越慢,而主存和磁盘的读写速度则远小于CPU的处理速度。这样就造成了速度的不匹配,使运行 hello 程序时,在传输数据的过程中浪费了很多时间。
      针对这种差异,于是设计者开发了更小更快的存储设备,成为高速缓存存储器(cache memory),并将其放在处理器中直接与寄存器连接,将处理器常用的数据存放在其中,避免了频繁的从主存或磁盘中传输数据。如现在计算机处理器常有L1和L2高速缓存,处理能力更强大的处理器甚至有三级告诉缓存:L1、L2和L3。
      在计算机中,存储器的速度由快到慢,容量由小到大形成了计算机的存储器层次结构:

      存储器层次结构的主要思想是高一层存储器作为低一层存储器的告诉缓存,因此寄存器是L1的缓存,L1是L2的缓存,L2是L3的缓存,L3是主存的缓存,主存是磁盘的缓存,在某些分布式系统中本地磁盘又是其他系统上磁盘的缓存。善于运用这些缓存可以将计算机的速度提升一个量级。




    5. 操作系统对计算机系统使用的抽象


      让我们回到 hello 程序的例子,当shell加载运行hello程序,以及输出显示"hello world",shell和hello程序都没有直接访问主存、磁盘、显示器或键盘。取而代之它们依赖的是操作系统提供的服务,即向应用程序提供的系统调用。

    操作系统有两个基本功能:

    • (1)防止硬件被应用程序滥用。
    • (2)向应用程序提供简单一致的控制复杂又不相同的低级硬件设备的方法。

    而操作系统是通过几个基本抽象概念(进程/线程、虚拟内存、文件)来实现功能的,如图:


    5.1 操作系统提供的抽象:进程


      像 hello 这样的程序在现代计算机上运行容易造成一种假象,就好像系统上只有这一个程序在运行,程序看上去在独占处理器、主存、和I/O设备。处理器看上去·就像在一条接一条的执行程序中的指令,即 该程序的代码和数据是系统内存中唯一的对象。 这些假象是由进程概念实现的,进程概念是计算机科学中最成功和最重要的概念之一。
      实际上一个计算机上执行了多个进程,但是为了看上去是一个CPU在并发的执行多个进程,操作系统的设计者们通过上下文切换这一概念来实现。操作系统会保存正在运行的进程们的状态信息,并且由操作系统的内核管理从多个进程之间来回切换。内核不是一个进程,内核是操作系统代码常驻主存的部分,是系统管理全部进程所用代码和数据结构的集合。


    5.2 操作系统提供的抽象:线程


      在现代计算机上实际上一个进程可以由多个成为线程的执行单元组成,每个线程都运行在进程的上下文中,共享同样的代码和全局数据。因为线程之间比进程之间更容易共享数据,也因为线程一般来说比进程更高效。当有多处理器可用的时候多线程也是一种可以使得程序运行更快的方法。


    5.3 操作系统提供的抽象:虚拟内存


      虚拟内存同样是一个抽象概念,它为每个进程提供了一个假象,即每个进程在独占的使用主存。每个进程看到的内存都是一样的,称为虚拟地址空间。在Linux中,虚拟地址空间的模型如下:

    图中的地址是由下往上增大的,其中

    • 程序代码和数据:代码和数据区从一开始运行时就被指定了大小。对所有进程来说最下面的是从可执行文件中初始化的只读代码和数据,紧接着是全局变量相对应的数据。
    • :代码和数据区后面紧随的是运行时的堆空间,与程序代码和数据区不同,当调用像malloc和free这样的代码时,堆可以在运行时动态的扩展和收缩。
    • 共享库:共享库在地址空间的中间部分,用来存放像C语言的标准库和数学库这样的共享库的代码和数据。
    • :位于用户虚拟地址空间顶部的是用户栈,,编译器用它进行函数的调用。特别的当我们调用一个函数时,栈就会增长;当一个函数返回时,栈就会收缩。
    • 内核虚拟内存:地址空间顶部的区域是为内核保留的。不允许应用程序直接读写这个区域的内容或者调用内核代码定义的函数。


    5.3 操作系统提供的抽象:文件


      文件就是字节序,仅此而已。每个I/O设备:磁盘、键盘、显示器、甚至网络等等,都可以看成文件。文件的概念是简单而精致并且非常强大的,它为应用程序提供了一个统一的视图来看待系统中各种各样的I/O设备。




    6. 网络


      计算机系统漫游至此我们一直把它视为一个孤立的硬件和软件的集合体。实际上现代计算机经常通过网络和其他设备连接到一起。从一个单一的系统来看,网络可以视为一个I/O设备。如图,当系统复制一串字节到网络适配器时,数据流经过网络到达另一台机器,相似的,系统也可以读取从其他机器发来的数据。

      在现代计算机中客户端和服务器之间的交互是很常见的,就像一些连接服务器用的远程客户端,例telnet。我们可以将它连接到服务器并且运行服务器上的 hello 程序。




    7. 重要补充


    7.1 Amdahl定理


      当我们对系统的某个部分加速时,如何度量系统的性能提升呢。 S = T o l d / T n e w S=T_{old}/T_{new} S=Told/Tnew是最好的办法, T o l d T_{old} Told为原始系统运行的时间, T n e w T_{new} Tnew为修改后系统运行的时间。在Amdahl定理中我们假设原始系统的某一部分执行时间与原始系统整体的执行时间之比为 α \alpha α,而该部分性能提升比例为 k k k,那么提升后系统的执行时间为
    T n e w = ( 1 − α ) T o l d + ( α T o l d ) / k = T o l d [ ( 1 − α ) + α / k ] T_{new}=(1-\alpha)T_{old}+(\alpha T_{old})/k=T_{old}[(1-\alpha)+\alpha/k] Tnew=(1α)Told+(αTold)/k=Told[(1α)+α/k]
    由此可以计算出加速比 S = T o l d / T n e w S=T_{old}/T_{new} S=Told/Tnew
    S = 1 ( 1 − α ) + α / k S=\frac{1}{(1-\alpha)+\alpha/k} S=(1α)+α/k1
    我们可以看出,即使 k → ∞ k \to \infty k,加速比仍为 S = 1 1 − α S= \frac{1}{1-\alpha} S=1α1,也就是说想要显著加速整个系统,必须提升全系统中相当大部分的速度。


    7.2 并发和并行


      在计算机的发展中始终有两个需求,做更多和运行更快。当处理器能同时做很多事情时这两个因素都会得到改善。术语并发是一个通用的概念,指具有多个活动的系统;而术语并行指的是用并发来使一个系统运行的更快。并行可以用在计算机系统的多个抽象层次,以下按照计算机系统层次的由高到底重点强调三个层次。

    • 线程级并发
      构建在进程这个抽象之上,我们能够设计出同时有多个程序执行的系统,这就导致了并发。在单处理系统时代,这种多线程并发只是模拟出来的,通过计算机在它执行的进程间快速切换来实现的。直到多核超线程技术的出现,使得了程序可以利用硬件实现真正的线程级并发性。多核处理器时代,处理器将多个CPU集成到一个集成电路上;还出现了超线程技术,超线程有时被成为同时多线程,是一个允许CPU执行多个控制流的技术,例如Intel Core i7处理器可以让每个核执行两个线程。传统处理器线程的切换大约需要20 000个时钟周期,而超线程技术通过对CPU某些硬件的备份,例如PC和寄存器,是CPU能够在单个时钟周期的基础上决定执行那个线程。

    • 指令级并行
      在低一些的层次上,现在处理器可以通过同时执行多条指令的属性称为指令级并行。通过流水线技术,将执行每条指令所需的步骤(取值、译码、执行等)根据它们使用的硬件资源不同将多个指令不发生冲突的步骤放到一起并行执行,使得处理器达到接近一个时钟周期执行一条指令的执行速度。如果处理器可以达到比一个周期一条指令更快的执行速率,就称之为超标量处理器。现代大多数处理器都支持超标量操作。

    • 单指令、多数据并行
      在最低的层次上,许多现代处理器拥有特殊的硬件,允许一条指令产生多个可以并行的操作,这种方式被称为单指令、多数据,即SIMD并行。例如,较新几代的Intel和AMD处理器具有并行的对8对单精度浮点数做加法的指令,可以提高影像、声音和视频数据应用的执行速度。


    7.3 计算机系统中抽象的重要性


      抽象的使用是计算机科学中最为重要的概念之一。类如程序语言中面向对象的抽象方法。我们在上文中介绍了计算机系统中使用的几个抽象,如图。在处理器,指令集架构提供了对实际处理器硬件的抽象,使用这个抽象,机器代码好像运行在一个一次执行一条指令的处理器上。在学习操作系统时我们还介绍了三个抽象:文件是对I/O设备的抽象;虚拟内存是对程序存储器的抽象,即对I/O设备和主存的抽象;进程是对一个正在执行的程序的抽象。在此我们在增加一个新的抽象:虚拟机,它提供了对整个计算机的抽象,包括操作系统、处理器、和程序。

    展开全文
  • 操作系统是计算机系统中的什么?

    千次阅读 2021-07-14 00:34:45
    操作系统是计算机系统中的A.核心系统软件。操作系统(英语:operatingsystem,缩写作OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源...
  • 计算机系统软件有哪些

    千次阅读 2021-07-21 05:22:15
    没有系统软件,现代计算机系统就无法正常地、有效地运行。那么,计算机系统软件有哪些呢?1、操作系统操作系统是控制和管理计算机各种资源、自动调度用户作业程序、处理各种中断的软件。操作系统的作用是控制和管理...
  • 【解析题】现在许多智能手机都具有触摸屏,它兼有键盘和鼠标器的功能,可作为计算机系统的输入设备。【解析题】在机器学习的背景上,人工智能区别于传统计算机的地方就在于人工智能能自主进行(),来揭示数据的内在价值...
  • 简述计算机系统的组成

    千次阅读 2021-07-16 06:02:37
    《简述计算机系统的组成》由会员分享,可在线阅读,更多相关《简述计算机系统的组成(2页珍藏版)》请在人人文库网上搜索。1、简述计算机系统的组成。计算机系统由硬件系统和软件系统组成。硬件系统包括以下五个部分:...
  • 计算机系统的时间

    千次阅读 2019-04-26 17:56:00
    计算机系统的时间 目录 1. 计算机系统时间的组成 2. 计算机系统时钟 3. 计算机系统时钟运行的行为 4. 计算机时钟查看与维护 4.1 硬件时钟 4.2 系统时钟 4.2.1 读取时钟 ...
  • 1.计算机系统的组成 一个完整的计算机系统由计算机硬件系统和软件系统两部分组成。如果仅有硬件系统,计算机不能做任何有意义的工作,硬件仅仅的建立了计算机的物质基础。如果要计算机硬件发挥作用,必须配置软件...
  • 深入理解计算机系统(1)

    千次阅读 2018-09-03 22:50:25
    我们一般说的都是相对复杂的计算机系统比如手机、电脑等,这些需要操作系统支持,而程序也需要由操作系统进行调度,程序中的函数的执行也可能需要调用操作系统的函数来实现。操作系统及其以上是搞软件的人所关注的。...
  • 计算机系统概述 计算机发展历程 计算机硬件的发展 世界上第一台电子数字计算机【ENIAC】 计算机的四代变化 电子管时代 晶体管时代 中小规模集成电路时代 超大规模集成电路时代 计算机元件的更新换代 计算机...
  • 一个完整的计算机系统由硬件和软件系统构成,其中硬件系统。硬件系统是计算机系统的内核,进行信息处理的实际物理装置,包括中央处理器、存储器、输入输出控制系统和各种外部设备。连接人与硬件系统之间的接口界面...
  • 相关题目与解析以下那个不是常用的保护计算机系统的方法()A、禁用不必要的服务B、安装补丁程序在()中规定了计算机系统安全保护能力的五个等级。随着计算机应用的深入,开发各种不同的企业内部信息管理系统越来越多。...
  • 什么是计算机系统的记忆部件

    千次阅读 2021-07-21 06:22:16
    满意答案clxzjken推荐于 2017.09.09采纳率:49%等级:10已帮助:269人计算机的五部分:运算器、控制器、存储器、输人设备和输出设备存储器存储器是计算机的记忆装置,它的主要功能是存放程序和数据。程序是计算机...
  • 计算机系统可靠性分析评测技术【全讲解】

    千次阅读 多人点赞 2020-08-30 17:10:27
    在一般情况下,计算机系统的硬件故障通常是由元器件的失败引起的,在对元器件进行了寿命试验并根据实际资料的统计得出:元器件的可靠性一般可以分为三个阶段: 第一阶段:即开始阶段,元器件的工作.
  • 【计算机组成原理】计算机系统

    千次阅读 多人点赞 2020-02-23 11:53:42
    图文计算机系统~
  • 计算机系统的五大层次结构 和 三种级别的语言
  • 计算机的层次结构计算机系统的基本组成计算机硬件的基本组成计算机的软件与硬件的关系计算机的工作过程(指令执行的过程)3.计算机的性能指标 ==(重点)==二、计算机发展历程1.计算机硬件的发展2. 计算机的分类按...
  • 计算机系统基础学习报告(一)

    千次阅读 2019-05-26 13:44:05
    计算机系统基础学习报告(一) 今晚学习计算机网课开始是很难受的。 总觉得讲师从层次分明的大结构入手加以讲解编程、操作系统与指令集体系结构有一些问题。至少对于我而言还只能理解一个大的框架,而不能够去仔细...
  • 计算机系统结构基本概念

    万次阅读 多人点赞 2018-08-08 21:20:39
    计算机系统=硬件/固件+软件 虚拟机器和实际机器: 完全由软件实现的机器为虚拟机器,由硬件或固件实现的机器为实际机器。  仿真:由微程序解释指令集。  翻译技术是先把L+1级程序全部变换成L级程序后,再去...
  • 计算机系统构成及硬件基础知识

    千次阅读 2018-03-15 20:54:47
    目录 数值转换 ...计算机体系软硬件的层次结构 计算机的一些基本概念 本章主要包括以下部分: 数值转换 数的表示 计算机体系结构 计算机的组成 寻址方式 校验码 数值转换 R进制转十进制...
  • 计算机系统的基本组成

    千次阅读 2019-09-04 20:41:16
    1.计算机系统的基本组成 计算机由软件系统和硬件系统组成 1.硬件系统 计算机硬件系统是由运算器,控制器,控制器,输入设备和输出设备五大设备及总线组成 运算器(ALU)是计算机进行数据加工的部件,主要完成...
  • 计算机系统组成思维导图

    千次阅读 2020-08-12 19:51:27
    计算机系统组成:
  • 计算机系统概论》-第1章-习题答案

    千次阅读 多人点赞 2019-06-12 22:07:37
    试解释1.5节中两个重要思想中的第一个。 所有计算机的模型都是一样的,只要输入是一样的,输出结果也是一样的。 试问,同汇编语言相比,高级语言是否能向...因为模拟计算机(机械设备就属于模拟计算机)很难...
  • 计算机系统中的存储系统

    千次阅读 2018-09-27 20:49:53
    计算机系统中包含各种存储器,如CPU内部的通用寄存器组、CPU内的Cache(高速缓存)、CPU外部的Cache、主板上的主存储器、主板外的联机磁盘存储器以及脱机的磁带存储器和光盘存储器等。不同特点的存储器通过适当的...
  •  本书的最大优点是为程序员描述计算机系统的实现细节,帮助其在大脑中构造一个层次型的计算机系统,从最底层的数据在内存中的表示到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库,到最后的用户态应用...
  • 深入理解计算机系统 PDF

    万次阅读 2020-03-02 14:43:14
    和第2版相比,本版内容上*大的变化是,从以IA32和x86-64为基础转变为完全以x86-64为基础。主要更新如下: 基于x86-64,大量地重写代码,首次介绍对处理浮点数据的程序的机器级支持。 处理器体系结构修改为支持64位字...
  • 计算机系统有硬件系统和软件系统两大部分组成 1.计算机:俗称电脑,是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动、高速地处理,然后把处理结果输出的现代化智能电子设备。 2.发展历史: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,955,832
精华内容 782,332
关键字:

计算机系统

友情链接: 26137113.rar