计算机系统_计算机系统概论 - CSDN
精华内容
参与话题
  • 《深入理解计算机系统》学习总结一

    万次阅读 多人点赞 2018-02-27 21:30:54
    前几天开始看的《深入理解计算机系统》这本书,东西超级多,书老厚了。但是为了巩固一下我薄弱的计算机的基础知识还是决定看看。下面的是我写的关于这本书上对我来讲比较重要的一些知识点,外加一些东西的总结。因为...

      前几天开始看的《深入理解计算机系统》这本书,东西超级多,书老厚了。但是为了巩固一下我薄弱的计算机的基础知识还是决定看看。下面的是我写的关于这本书上对我来讲比较重要的一些知识点,外加一些东西的总结。因为书太厚了,所以博客会不断更新。

    第一章 计算机系统

      这章主要是对后面的内容的梳理,简略的谈了一下。但是个人认为我们在接触一本新书的时候看目录来加深自己的宏观把握能力也很重要。另外,本书很重要的一个前提就是——基于Linux系统。本章需要注意一下的知识点如下:
      1.关于C语言中的hello world的源文件hello.c:
      (1)hello.c程序是以字节序列的方式存储在文件中的。像hello.c这样只由ASCII字符构成的文件成为文本文件,所有其他的文件成为二进制文件。
      (2)从hello.c到可执行程序文件的过程:linux> gcc -o hello hello.c 这个过程大致可以分为四个阶段,执行这四个阶段的程序(预处理器、编译器、汇编器和链接器)一起构成了编译系统。gcc编译器是Linux系统默认的编译器。
      这里写图片描述
      预处理就是将头文件等直接插入程序文本中,并将宏定义等的替换内容替换掉;编译过程是将C语言程序翻译成汇编语言程序;汇编过程是将汇编语言翻译成机器语言命令,把这些命令打包成一种叫做可重定位目标程序的格式,形成目标文件;链接阶段就负责将之前引用的库函数的实体合并到hello.o程序中,形成hello这个可执行目标文件。
      (3)hello.c被翻译成可执行文件hello之后被存放在磁盘上,如果需要系统执行文件,那么在shell中输入:linux>./hello 结果:hello,world 。shell是命令行解释器,如果该命令行的第一个单词不是一个内置的shell命令,那么shell会假设这是一个可执行文件的名字,它会加载并运行这个文件。
      
      2.系统的硬件组成:
      (1)总线:贯穿整个系统的是一组电子管,称作总线。通常总线被设计成传送定长的字节块,也就是字。但是这个字在各个系统中的设置一般也不相同。
      (2)I/O设备:每个I/O设备都通过控制器或者适配器与I/O总线相连。控制器是I/O设备本身或者系统的主印制电路板(主板)上的芯片组,而适配器是一块插在主板插槽上的卡。
      (3)主存:主存是一个临时存储设备,用来存放程序和程序处理的数据。主存是由一组动态随机存取存储器(DRAM)芯片组成的。从逻辑上来说,存储器是一个线性的字节数组,每个字节都有唯一的地址(数组索引),这些地址是从零开始的。
      (4)处理器:也就是CPU。处理器的核心是一个大小为一个字的存储设备(或寄存器),称为程序计数器(PC).在任何时刻,PC都指向主存中的某条机器语言命令(含有该条指令的地址)。处理器一直不断地执行PC指向的指令,再更新PC,使其指向下一条指令。处理器中还有寄存器和ALU,寄存器是小的存储设备,每个寄存器都有唯一的名字;ALU是算数逻辑单元,用来计算新的数据和地址值。
      这里写图片描述
      3.运行hello程序过程:
      (1)当在键盘上输入“./hello”之后,shell将字符读入寄存器,再把它复制到内存中。
      (2)按下回车之后,shell程序执行一系列指令来加载可执行的hello文件,这些指令将hello目标文件中的代码和数据从磁盘复制到主存
      (3)一旦目标文件中的代码和数据被加载到主存,处理器就开始执行hello程序中的main的机器语言指令,最后将程序的的结果从主存复制到寄存器,再从寄存器复制到显示设备。
      4.高速缓存:
      由于技术的发展导致处理器与驻村之间的差距不断地增大,加快处理器的运行速度比加快主存的运行速度要容易和便宜的多。针对这种差异,高速缓存存储器(cache)被设计出来,作为暂时的集结区域,存放处理器近期可能会需要的信息。
      这里写图片描述
      L1高速缓存位于处理器芯片上,容量可以达到数万字节,访问速度几乎可以和访问寄存器文件一样快。
      L2高速缓存通过一条特殊的总线连接到处理器,容量为数十万字节到数百万字节,进程访问L2高速缓存的时间要比访问L1的时间长5倍。L1和L2都是SRAM.
      有的更新的系统包含了L1、L2和L3三级缓存。通过让高速缓存里存放可能经常访问的数据,大部分的内存操作都能在快速的高速缓存中完成。
      5.存储器的层次结构:
    这里写图片描述
      存储器层次结构的主要思想是上一层的存储操作作为下一层存储器的高速缓存。也就是说寄存器是L1的高速缓存,L1是L2的高速缓存。。。
      6.操作系统中几个抽象的概念:
      操作系统在实现基本功能的时候提供了几个抽象的概念:进程、虚拟内存和文件
      这里写图片描述
      (1)进程:是操作系统对一个正在运行的程序的抽象。而并发执行则是说一个进程的指令和另一个进程的指令是交错执行的(看上去像是多个进程同时执行,但是针对单个处理器来说,每个时间片只有一个进程的代码在执行)。从一个进程到另一个进程的切换是由操作系统内核管理的,内核是操作系统代码常驻主存的部分(注意:内核不是一个独立的进程,相反,它是系统管理全部进程代码和数据结构的集合)
      (2)线程:在现代操作系统中,一个进程实际上可以由多个成为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。多线程之间比多进程之间更容易共享数据,也因为线程一般比进程更高效。线程甚至被认为是轻量级进程。
      (3)虚拟内存:它为每个进程提供了一个假象,即每个进程都在独占的使用主存。每个进程看到的内存都是一样的,成为虚拟地址空间。下面为linux进程的虚拟地址空间(注意图中的地址是从下往上增大的)
      这里写图片描述
      1>程序代码和数据:对所有的进程来说,代码是从同一固定地址开始。代码和数据区是直接按照可执行目标文件的内容初始化的。
      2>堆:不同于代码和数据区在进程一开始运行时就被指定了大小,堆可以在运行时动态的扩展和收缩。
      3>共享库:用来存放像C标注库和数学库这样的共享哭的代码和数据的区域。(这是个强大的概念)
      4>栈:编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态的扩展和收缩。
      5>内核虚拟内存:地址空间顶部是为内核保留的,不允许应用程序读写这个区域的内容或者直接调用内核代码定义的函数。相反,它们必须调用内核来执行这些操作。
      虚拟内存的运作需要硬件和操作系统软件之间精密复杂的交互。其基本思想是吧一个劲进程虚拟内存的内容存储在磁盘上,然后用主存作为磁盘的高速缓存。
      (4)文件:就是字节序列。在linux系统中,每个I/O设备,包括磁盘、键盘、显示器,甚至网络,都可以看成是文件。
      6.并行和并发:
      并发(concurrency)是一个通用的概念,指一个同时具有多个活动的系统
      并行(parallelism)指的是用并发来使一个系统运行的更快。
      通俗点说,并发指的是多个任务能被来回切换的做;而并行则指的是几件事情可以同时做(并发是两个队列交替使用一台咖啡机,并行是两个队列同时使用两台咖啡机)。并发和并行都可以指多个线程,如果这些线程可以被分配到多个CPU上同时执行,那么就是并行;如果是单CPU对多线程进行切换式处理,那么就是并发。
      7.多核处理器与超线程:
      多核处理器是将多个CPU集成到一个集成电路芯片上。每个核都有自己的L1和L2告诉缓存,其中L1高速缓存又分为保存指令的和保存数据的。这些核共享更高层次的高速缓存以及到主存的接口。
      这里写图片描述
      超线程:有时也被成为同时多线程,是一项允许一个CPU执行多个控制流的技术。常规的处理器需要大约20000个时钟周期做不同线程间的转换,而超线程的处理器可以在单个周期的基础上决定要执行哪一个线程。
      
      
      

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

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

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

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

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

    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

    展开全文
  • 计算机系统概述

    2018-09-28 09:09:59
    现代计算机特点: 1.数字化处理信息; 2.采用存储程序的工作方式。   现代计算机采用数字化存储信息,利用物理表示较为容易,例如:用电平高低表示0和1,或用脉冲有无表示0和1。   信息数字化的好处: 1。...

    现代计算机特点:

    1.数字化处理信息;

    2.采用存储程序的工作方式。

     

    现代计算机采用数字化存储信息,利用物理表示较为容易,例如:用电平高低表示0和1,或用脉冲有无表示0和1。

     

    信息数字化的好处:

    1。物理上易表示存储;

    2抗干扰能力强,可靠性高;

    3.表示范围大,精度高;

    4.信息类型广泛;

    5.用数字逻辑技术处理信息。

     

    冯诺依曼体系思想:

    1.用二进制代表程序和数据;

    2.采用存储程序的工作方式;

    3.将计算机体系分为:控制器,运算器,存储器,输入和输出设备。

     

    计算机分为模拟计算机和数字计算机;

    模拟计算机处理连续模拟信号,数字计算机可处理离散数值。

    数字计算机根据用途分为专用计算机和通用计算机,通用计算机和通用计算机相比,牺牲了效率和速度。

     

    计算机发展方向:

    1.巨型化(大数据领域需要)

    2.微型化(便捷使用)

    3.多媒体化(用户体验)

    4.网络化(共享资源)

    5.智能化

     

    计算机体系组织分为:

    1.运算器(主要完成算数和逻辑运算)

    ALU:算数逻辑单元,运算器的主要组成,以全加器为核心;

    2.控制器:产生控制命令;

    3.存储器:存储数据和数字化的程序(数据和程序都以二进制存储)

    存储单元:存储一个n位二进制数的n个存储电路;

    地址:存储单元的编号;

    存储容量:存储单元总数,单位为:KB、MB、GB、TB、PB等

    内存储器(半导体芯片):即主存,用来存放直接为CPU提供服务的程序和数据的存储器

    外存储器:辅助存储器,外存,多为磁盘,光盘

    4.输入输出设备

    输入时:原始信息——>二进制代码;

    输出时:处理结果——>用户可感知的形式(声音、图像、文字)输出给用户

    5.总线:为多个部件分时共享的一组信息传送通道

    数据总线:传送数据信息;

    地址总线:传送地址信息;

    控制总线:传送控制信号

    6.接口:为了将总线和各类外设连接,需在两者之间设置一些部件,具有缓冲、转换、连接的功能,这些部件就是接口。

     

    计算机硬件的典型架构

    1.微型计算机:南北桥架构

    2.小型计算机:多处理器架构

    3.超级计算机:集群式架构

     

    多处理机系统结构特点:用多CPU构成;分为紧密偶合型和松散偶合型多机系统。

    软硬件系统层次结构

    软硬件逻辑等价性

    软件:易于实现各种逻辑和运算能力,但是常受到速度指标和软件容量的限制;

    硬件:可以高速实现逻辑和运算功能,但是难以实现复杂功能和计算,受到控制复杂性指标的限制。

     

    计算机性能指标

    字长:指一次数据操作的基本位数;字长越长,运算精度越高,指令越丰富

    外频:外部频率或基频;系统时钟频率

    CPU主频=外频x倍频系数;

    IPS,每秒执行指令数;

    CPI,表示每条计算机指令执行所需的时钟周期,clock-Cycles Per Instruction

    FLOPS:每秒执行浮点运算的次数;

    CPU功耗:动态功耗,静态功耗;

    带宽:数据传输率,单位时间数据传输量,工作频率X位宽/8 (b/s);

    存储器容量:

    内存:可编址的存储单元个数X存储单元位宽

    外存:辅助存储器容量,与总线地址码位数无关

     

    展开全文
  • 深入理解计算机系统-笔记

    千次阅读 2017-12-14 13:10:23
    计算机系统漫游 程序  程序的生命周期从一个源程序(源文件)开始,即程序员利用编辑器创建并保存的文本文件,如文件名为hello.c的c语言程序。源程序是由0和1组成的位序列,8个位被组织成一组,称为字节。每个...


    计算机系统漫游

    程序

             程序的生命周期从一个源程序(源文件)开始,即程序员利用编辑器创建并保存的文本文件,如文件名为hello.c的c语言程序。源程序是由0和1组成的位序列,8个位被组织成一组,称为字节。每个字节表示程序中的某个文本字符。这种形式能够被人读懂

     

    基本思想:系统中的所有的信息-包括磁盘文件、存储器中的程序、存储器中存放的用户数据以及网络上传送的数据,都是由一串位表示的。区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文

     

             为了在系统上运行hello.c程序,每条c语句都必须被其他程序转化为一系列的低级机器语言指令(如汇编语言)。然后,这些指令按照可执行目标程序的格式打好包,以二进制磁盘文件的形式存放起来,其称为可执行目标程序。

             从hello.c到hello.exe的翻译过程可分为四个阶段完成。执行这四个阶段的程序(预处理器、编译器、汇编器和链接器)一起构成了编译系统。

     

    程序由操作系统执行。Unix系统中通过shell应用程序及相关命令加载执行。

    硬件设备

             总线:贯穿整个系统的一组电子管道,其携带信息字节并负责在各个部件间传递。通常总线被设计成传送定常的字节块,也就是字。

             I/O设备:系统与外部世界的联系通道。鼠标、键盘、显示器、磁盘驱动器等。每个I/O设备通过一个控制器或适配器与I/O总线相连。控制器是至于I/O设备本身的或者系统的主板上的芯片组,而适配器是一块插在主板插槽上的卡。其区别主要在于封装的方式不一样。

             主存:临时存储设备,在处理器执行程序时,用来存放程序和程序处理的数据。

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

             处理器从程序计数器指向的存储器处读取指令,解释指令中的位,执行该指令指示的简单操作,然后更新程序计数器,使其指向下一条指令,而这一条指令并不一定与存储器中刚刚执行的指令相邻。

    操作系统

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


    操作系统基本功能:

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

    2)向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备。

    其通过进程、虚拟存储器、文件等抽象概念来实现这两个功能。

             文件是对I/O设备的抽象,虚拟存储器是对主存(内存)和磁盘I/O设备的抽象,进程则是对处理器、贮存和I/O设备的抽象。


             进程。进程是操作系统对一个正在运行的程序的一种抽象。在一个系统上可以同时运行多个进程,而每个进程都好像在独占地使用硬件。传统系统在一个时刻只能执行一个程序,而多核处理器能同时执行多个程序。无论是单核还是多核系统,一个cpu通过在进程间切换,可以并发的执行多个进程。

             操作系统保持跟踪进程运行所需的所有状态信息,即上下文,包括程序计数器和寄存器文件的当前值,主存内容等。在任何一个时刻,单处理器系统都只能执行一个进程的代码。当操作系统决定要把控制权从当前进程转移到某个新进程时,就会进行上下文切换。

    实现进程这个抽象概念需要低级硬件和操作系统软件之间的紧密合作。

     

             线程。一个进程实际上可以由多个称为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。由于网络服务器对并行处理的需求,线程成为非常重要的编程模型,因为多线程之间比多进程之间更容易共享数据;当多处理器可用的时候,多线程也是一种使程序可以更快运行的方法。

     

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

     

             文件。文件就是字节序列。每个I/O设备,磁盘、键盘、显示器、网络等都可以视为文件。文件这个抽象向应用程序提供了一个统一的视角来看待系统中可能出现的各种I/O设备

    并发、并行和抽象

    并发concurrency是一个通用的概念:指同时具有多个活动的系统

    并行parallelism:指用并发使一个系统运行得更快。并行可以在计算机系统的多个抽象层次上运用。

    1.  线程级并发

             构建进程这个抽象,我们能够设计出同时执行多个程序的系统,这就导致了并发。使用线程,我们能够在一个进程中执行多个控制流。

             单处理器系统中,并发执行只是模拟出来的,是通过使一台计算机在他正在执行的进程间快速切换的方式实现的。

        当构建一个由单操作系统内核控制的多处理器组成的系统时,就得到一个多处理器系统。多处理器是将多个cpu集成到一个集成电路芯片上。超线程(同时多线程)处理器是一项允许一个cpu执行多个控制流的技术。如常规的处理器需要大约20000个时钟周期做不同的线程切换,而超线程处理器可以在单个周期的基础上进行切换。这使得cpu可以更好的利用其处理资源。


             多处理器的使用可以从两个方面提高系统性能。首先,它减少了在执行多个任务时模拟并发的需要。其次,它可以使应用程序运行的更快。当然,这必须要求程序是以多线程方式来书写的,这些线程可以并行地高效执行。

    2. 指令级并行

             在较低的抽象层次上,现代处理器可以同时执行多条指令的属性指令级并行。基本思想是将一条指令所需要的活动划分为不同的步骤,将处理器的硬件组织成一系列的阶段,每个阶段执行一个步骤。这些阶段可以并行的操作,用来处理不同的指令的不同部分。其通过硬件设计,能够达到接近于一个时钟周期一条的指令的执行速率。甚至更快,称为超标量处理器。

    3. 单指令、多数据并行

             在最低的层次上,许多现代处理器拥有特殊的硬件,允许一条指令产生多个并行执行的操作,这种方式称为单指令、多数据SIMD并行。如专门处理向量计算的处理器。

     

             抽象。抽象是计算机科学中最为重要的概念之一。如一组函数的API等,类的封装,接口。

             在处理器中,指令集结构提供了对实际处理器硬件的抽象。使用这个抽象,机器代码程序表现得好像它是运行在一个一次只执行一条指令处理器上。实际上,底层的硬件比抽象描述的要复杂精细的多,它并行地执行多条指令,但又总是与那个简单有序的模型保持一致。

    操作系统中,文件是对I/O的抽象;虚拟存储器是对程序存储器的抽象;进程是对一个正在运行的程序的抽象。

             而虚拟机,他提供了对整个计算机的抽象。


             计算机系统中的一个重大主题就是提供不同层次的抽象表示,而隐藏实际实现的复杂性。类比计算机网络。

    信息的表示和处理

    信息的存储

             大多数计算机使用8位的块,或者字节,作为最小的可寻址的存储器单位,而不是在存储器中访问单独的位。机器级程序将存储器是为一个非常大的字节数组,称为虚拟存储器。存储器的每个字节都由一个唯一的数字来标识,称为地址。所有可能的地址集合称为虚拟地址空间。

             虚拟地址空间只是一个展现给机器级程序的概念性映像。实际的实现是将随机访问存储器ram、磁盘存储器、特殊硬件和操作系统软件结合起来,为程序提供一个看上去统一的字节数组。

    优化程序性能

    消除循环的低效

    减少过程的调用

    等。。

     

    存储器的层次结构

             我们可以建立一个简单的计算机系统模型。Cpu执行指令,而存储器系统为cpu存放指令和数据。在这个模型中,存储器系统是一个线性的字节数组,cpu能够在常数时间内访问每个存储器位置。这是个有效的模型,但其没有反映系统实际工作的方式。

             实际上,存储器是一个具有不同容量、成本和访问时间的存储设备的层次结构。高层次存储器速度快,成本高;低层次速度慢,成本低。整体效果是一个大的存储器池,其成本与层次结构底层最便宜的存储设备相当,但是却以接近于层次结构顶部存储设备的高速率向程序提供数据

             如果你的程序需要的数据在cpu的寄存器中,那么在0个cpu周期就能访问到,如果在高速缓存中需要1-30个周期,如果在主存中需要50-200个周期,如果在磁盘上需要约几千万个周期。

             思想:如果你了解系统是如何将数据在存储器层次结构中上上下下移动的,那么你就可以编写你的应用程序,使得它们的数据项存储在层次结构中较高的地方,在那里cpu能更快地访问到它们。即程序的局部性locality。

     

             Cpu使用一种称为存储器映射I/O的技术向I/O设备发出命令。在使用存储器映射I/O的系统中,地址空间中有一块地址是为与I/O设备通信保留的。每个这样的地址称为一个I/O端口。当一个设备连接到总线时,她与一个或多个端口相关联(或它被映射到一个或多个端口)。(Note:每一个I/O设备都有一个处理器)

     

             局部性思想: 局部性通常有两种不同的形式即时间局部性和空间局部性。在一个具有良好的时间局部性的程序中,被引用过一次的存储器位置很可能在不远的将来再被多次引用。在一个具有良好空间局部性程序中,如果一个存储器位置被引用了一次,那么程序很可能在不愿的将来引用附近的一个存储器位置。局部性原理在应用程序的设计中扮演着重要的角色。如web浏览器将最近被引用的文档放在本地磁盘上,利用的就是时间局部性。

             评价一个程序的局部性原则:

             1.重复引用同一个变量的程序具有良好的时间局部性

             2.对于具有步长为k的引用模式的程序,步长越小,空间局部性越好。

             3.对于取指令来说,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。

     

    存储器层次结构的本质是每一层存储设备都是较低一层的缓存。

    在系统上运行程序

    链接

             链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或被拷贝)到存储器并执行。链接可以执行于编译时(源代码被翻译成机器代码时);也可以执行于加载时(程序被加载器加载到存储器并执行时);还可以执行与运行时,由应用程序来执行。

             链接是由叫做连接器linker的程序自动执行的。链接器使得分离编译成为可能。我们不需要将一个大型的应用程序组织为一个巨大的源文件,而是可以把它分解为更小、更好管理的模块,可以独立的修改和编译这些模块。

             理解链接器将帮助你构造大型程序;将帮助你避免一些编程错误;将帮助你理解语言的作用域规则如何实现;有助于理解和使用共享库等。

     

    目标文件三种形式:

    1. 可重定位目标文件

    2. 可执行目标文件

    3. 共享目标文件。可以在加载或者运行时被动态地加载到存储器并链接。

             编译器和汇编器生成可重定位目标文件(包括共享目标文件)。链接器生成可执行目标文件。一个目标模块就是一个字节序列,一个目标文件就是一个存放在磁盘文件中的目标模块。

     

    异常控制流

             从给处理器加电开始,直到断电为止,程序计数器假设一个值的序列a0,a1,..,an-1。其中,每个ak是某个相应的指令Ik的地址。每次从ak到ak+1的过渡称为控制转移。这样的控制转移序列叫做处理器的控制流。Flow of control, control flow。(程序计数器值(指令地址)序列称为控制流。)

     

             最简单的一种控制流是一个“平滑的”序列,其中每个Ik与Ik+1在存储器中都是相邻的。这种平滑的突变,即Ik与Ik+1不相邻,是由诸如跳转、调用和返回等程序指令造成的。这使得程序能够对由程序变量表示的(捕获的)内部程序状态中的变化做出反应。

     

             此外,系统也必须能够对系统状态的变化做出反应,这些系统状态不是被内部程序变量捕获的,而且也不一定要和程序的执行相关。

             如一个硬件定时器定期产生信号,这个事件必须得到处理;包达到网络适配器后,必须存放在存储器中;程序向磁盘请求数据,然后休眠,直到被通知数据已就绪;当子进程终止时,创造这些子进程的父进程必须得到通知。

     

             现代系统通过使控制流发生突变来对这些情况做出反应。我们把这些突变称为异常控制流(execptional control flow)。异常控制流发生在计算机系统的各个层次。

             在硬件层,硬件检测到的事件会触发控制突然转移到异常处理程序。

             在操作系统层,内核通过上下文切换将控制从一个用户进程转移到另一个用户进程。

             在应用层,一个进程可以发送信号到另一个进程,而接收者会将控制突然转移到他的一个信号处理程序。一个程序可以通过回避通常的栈规则,并执行到其他函数中任意位置的非本地跳转来对错误做出反应。

    异常

    异常处理

             异常就是控制流中的突变,用来响应处理器状态中的某些变化。在处理器中状态被编码为不同的位和信号。状态变化称为事件。当处理器检测到有事件发生时,它就会通过一张叫做异常表的跳转表,进行一个间接过程调用,到一个专门设计用来处理这类事件的操作系统子程序(异常处理程序)

             异常有硬件异常和软件异常。

             系统中可能的每种类型的异常都分配了一个唯一的非负整数的异常号。其中一些号码是由处理器的设计者分配的,其他号码是由操作系统内核的设计者分配的。前者包括被0除、缺页、存储器访问违例、断点以及算数溢出。后者包括系统调用和来自外部I/O设备的信号。

             在系统启动时,操作系统分配和初始化一张称为异常表的跳转表(数组),其中条目k包含异常k的处理程序地址。

             当系统在执行某个程序时,处理器检测到发生了一个事件,并且确定了相应的异常号k。随后,处理器触发异常,执行间接过程调用,通过异常表的条目k转到相应的处理程序

             异常号是到异常表中的索引,异常表的起始地址放在一个叫做异常表基址寄存器的特殊cpu寄存器中。

    异常分类

             异常可以分为四类:中断interrupt、陷阱trap、故障fault、终止abort。

             中断。中断是异步发生的,是来自处理器外部的I/O设备的信号的结果。硬件中断不是由任何一条专门的指令造成的,从这个意义上来说它是异步的。硬件中断的异常处理程序通常称为中断处理程序。

     

             陷阱和系统调用。陷阱是有意的异常,是执行一条指令的结果。陷阱处理程序将控制返回到下一条指令。陷阱最重要的用途是在用户程序和内核之间提供一个像过程一样的接口,叫做系统调用

             用户程序经常需要向内核请求服务,比如都一个文件read,创建一个新的进程fork,加载一个新的程序execve,或者终止当前进程exit。为了允许对这些内核服务的受控的访问,处理器提供了类似“syscall  n”指令,当用户程序想要请求服务n时,可以执行这条指令。执行syscall 指令会导致一个到异常处理程序的陷阱,这个处理程序对参数解码,并调用适当的内核程序。

             从程序员的角度看,系统调用和普通的函数调用时一样的。但是,普通函数运行在用户模式中,用户模式限制了函数可以执行的指令类型,而且它们只能访问与调用函数相同的栈。系统调用运行在内核模式中,内核模式允许系统调用执行指令,并访问定义在内核中的栈。

     

             故障。故障由错误情况引起,其可能能够被故障处理程序修正。如果处理程序能够修正这个错误的情况,它就将控制返回到引起故障的指令,从而重新执行它;否则,处理程序返回到内核中的abort例程,以终止引起故障的应用程序。一个典型的故障时缺页异常,当指令引用一个虚拟地址,而与该地址相对应的物理页面不存在存储器中,因此必须从磁盘中取出时,就会发生故障。

     

             终止。终止是不可恢复的致命错误造成的结果。处理程序将控制返回至abort例程,终止这个应用程序。

     

    每个系统调用都有一个唯一的整数号n,对应于一个到内核中跳转表的偏移量

             C语言用syscall(n)函数可以直接调用任何系统调用。但这需要你记得每个系统调用的整数号,比较繁琐。标准c库提供了一组方便的包装函数。这些包装函数将参数打包到一起,以适当的系统调用号陷入内核,然后将系统调用的返回状态传递回调用函数。这样你只要知道函数名即可。这样的包装函数称为系统级函数

    进程

             当我们在系统上运行一个程序时,会得到一个假象-我们的程序是系统中当前运行着的唯一的程序。我们的程序好像是独占地使用处理器和存储器。处理器好像无间断地一条接一条地执行程序中的指令。程序中的代码和数据好像是系统存储器重唯一的对象。

    这些假象都是通过进程的概念提供给我们的。

     

             进程是一个执行中的程序的实例。系统中的每个程序都是运行在某个进程的上下文中的上下文包括存放在存储器中的程序代码和数据,它的栈、通用目的寄存器内容、程序计数器、环境变量以及打开文件描述符的集合

             每次用户通过向shell输入一个可执行目标文件的名字,并运行一个程序时,shell就会创建一个新的进程,然后在这个新的进程的上下文中运行这个可执行目标文件。应用程序也能够创建新的进程。

             进程提供给应用程序两个关键抽象

             1.一个独立的逻辑控制流,其提供一个假象,好像我们的程序独占地使用处理器

             2.一个私有的地址空间,其提供一个假象,好像我们的程序独占地使用存储器系统

    逻辑控制流

             逻辑控制流即程序计数器值的序列,简称逻辑流。如下图,处理器的一个物理控制流分成了三个逻辑流,每个进程一个。显然,实际上进程是轮流使用处理器的。

             一个逻辑流的执行在时间上与另一个流重叠,称为并发流,这俩个流被称为并发地运行。多个流并发地执行的一般现象称为并发。一个进程和其他进程轮流运行的概念称为多任务。一个进程执行它的控制流的一部分的每一时间段叫做时间片。多任务也叫时间分片。

             并发的思想与流运行的处理器核数或者计算机数无关。如果两个流在时间上重叠,那么就是并发的。并行流是并发流的一个真子集。如果两个流并发地运行在不同的处理器核或者计算机上,那么我们称他们为并行流,它们并行地运行和执行。

    私有地址空间

             进程也为每一个程序提供一种假象,好像它独占地使用系统地址空间。一台有n位地址的机器,地址空间是2^n个可能地址的集合,0,1,…,2^n-1。一个进程为每个程序提供它自己的私有地址空间一般而言,和这个空间中某个地址相关联的那个存储器字节是不能被其他进程读或写的,所以说,这个地址空间是私有的。

             地址空间的组织结构。地址空间底部是保留给用户程序的,包括通常的文本、数据、堆和栈段。地址空间顶部是留给内核的。这个部分包含内核在代表进程执行指令时(比如,当应用程序执行一个系统调用时)使用的代码、数据和栈。

     

    进程控制

             可以通过系统级函数(这里C程序)调用来控制进程。

             获取进程ID:每个进程都有一个唯一的帧数进程ID(PID),pid_t getpid(void)

             创建和终止进程:我们可以认为进程总处于三种状态之一

    n  运行。进程要么在cpu上执行,要么在等待被执行且最终会被内核调度

    n  停止。进程的执行被挂起,且不会被调度。当收到SIGSTOP、SIGTSTP、SIDTTIN或者SIGTTOU信号时,进程就停止,并且保持停止到它收到一个SIGCONT信号,在这个时刻,进程再次开始运行。(信号是软件中断的形式

    n  终止。进程永远停止。三种原因:1)收到信号的行为是终止程序2)从主程序返回3)调用exit函数。Exit函数以退出状态如exit(0)来终止进程。另一种设置退出状态的方法是从主程序main返回一个整数值。

    信号

             一个信号就是一条小消息,它通知进程系统中发生了一个某种类型的事件。这是一种更高层的软件形式的异常,它允许进程中断其他进程。

             每种信号类型都对应于某种系统事件。低层的硬件异常是由内核异常处理程序处理的,正常情况下,对用户进程而言是不可见的。信号提供了一种机制,通知用户进程发生了这些异常。

             比如,如果一个进程试图除以0,那么内核就发送给它一个SIGFPE信号(序号8)。再如,当前进程在前台运行时,你键入ctrl-c,那么讷河就会发送一个SIGINT信号(序号2)给这个前台程序;一个进程可以通过向另一个进程发送一个SIGKILL信号(序号9)强制终止它;当一个子进程终止或者停止时,内核会发送一个SIGCHILD信号(序号17)给父进程。

    传送一个信号到目的进程是由两个不同步骤组成的:

    n  发送信号。内核通过更新目的进程上下文中的某个状态,发送一个信号给目的进程。发送信号原因:1)内核检测到一个系统事件,比如被0除错误2)一个进程调用了kill函数,显式地要求内核发送一个信号给目的进程。一个进程可以发送信号给它自己。

    n  接收信号。当目的进程被内核强迫以某种方式对信号的发送做出反应时,目的进程就接收了信号。进程可以忽略这个信号,终止或者通过执行一个称为信号处理程序的用户层函数捕获这个信号。

    发送信号

    Unix系统提供了大量向进程发送信号的机制。所有这些机制都是基于进程组process group这个概念。

    I/O编程

    文件描述符

             文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于UNIX、Linux这样的操作系统。

     

             对于ANSI C规范中定义的标准库的文件I/O操作。ANSI C规范给出了一个解决方法,就是使用FILE结构体的指针。事实上,UNIX/Linux平台上的FILE结构体的实现中往往都是封装了文件描述符变量在其中。

             在UNIX/Linux平台上,对于控制台(Console)的标准输入,标准输出,标准错误输出也对应了三个文件描述符。它们分别是0,1,2。在实际编程中,如果要操作这三个文件描述符时,建议使用<unistd.h>头文件中定义的三个宏来表示: STDIN_FILENO, STDOUT_FILENO以及STDERR_FILENO。

    文件描述符与文件指针的区别

             文件描述符:在linux系统中打开文件就会获得文件描述符,它是个很小的正整数。每个进程在PCB(Process Control Block)中保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针。

             文件指针:C语言中使用文件指针做为I/O的句柄。文件指针指向进程用户区中的一个被称为FILE结构的数据结构。FILE结构包括一个缓冲区和一个文件描述符。而文件描述符是文件描述符表的一个索引,因此从某种意义上说文件指针就是句柄的句柄(在Windows系统上,文件描述符被称作文件句柄)。

     

    展开全文
  • 一、计算机系统知识

    2019-01-11 17:02:05
    1.1计算机系统基础知识 1.1.1计算机系统已经基本组成 计算机系统是由软件和硬件组成的,它们协同工作来运行程序。计算机的基本硬件系统由运算器、控制器、存储器、输入设备、输出设备5大部件组成。运算器、控制器等...
  • 【深入理解计算机系统】第一章 计算机系统漫游

    千次阅读 多人点赞 2018-12-19 20:27:38
    ”程序的生命周期,讲解计算机硬件和软件如何协同工作,以及了解: 1. C代码的简单优化与现代处理器和存储器系统设计的关系。 2. 编译器的过程调用及避免缓冲区溢出技巧。 3. 编写自己的Unix shel、动态储存分配包、...
  • 计算机操作系统-操作系统的定义

    千次阅读 2019-01-15 09:31:20
    计算机系统的层次结构 用户 应用程序 操作系统 纯硬件:CPU、RAM、ROM 其中,操作系统: 从操作系统层往两侧看:负责管理协调硬件、软件等计算机资源的工作 从上往下看:为上层的应用程序和...
  • 计算机系统组成与基本工作原理

    万次阅读 多人点赞 2016-12-15 11:03:33
    计算机的组成、基本工作原理
  • 计算机系统结构--复习(Part 1)

    千次阅读 多人点赞 2018-11-19 16:21:32
    适用于期末考试之前的知识点复习. 往期回顾: Part 1(chapter 1 - chapter 5):https://blog.csdn.net/zongza/article/details/83780572 Part 2(chapter 5 - chapter 10):... Par...
  • 1.总线:贯穿整个系统的管道,用于在各个组件中传递定长的字节块(字)。字长在不同系统中各不相同,要么是4个字节(32位),要么是8个字节(64位)。 2.I/O设备是系统与外界的连接通道,例如:鼠标、键盘、显示器、...
  • P3 1.2.冯诺依曼的结构主要思想 第一台通用电子计算机的诞生 1946年,第一题爱通用电子计算机ENIAC诞生 ...1946年,普林斯段高等研究院开始设计存储程序的计算机,被称为IAS计算机(1951年才完成的,并不是第一台
  • 计算机系统结构(Computer Architecture)、计算机组成(Computer Organization)和计算机实现(Computer Implementation)是三个不同而又重要的概念, 它们有各自不同的内容定义和技术层面,又有紧密的关联关系。...
  • 微处理器、微型计算机、微型计算机系统有什么联系与区别? 微处理器只是一个中央处理器(CPU),由算术逻辑部件(ALU),累加器和通用寄存器组,程序计数器,时序和控制逻辑部件,内部总线等组成。微处理器不能构成...
  • 软件工程习题

    万次阅读 2020-02-16 11:32:40
    数据流图: ER图:
  • 转自:http://blog.sina.com.cn/s/blog_6c4bb5a80100l6i9.html 嵌入式系统是指以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。...
  • 1、计算机信息系统集成资质信息产业部从1999年开始建立计算机信息系统集成资质管理制度,制定并发布了《计算机信息系统集成资质管理办法》。 计算机信息系统集成资质等级分一、二、三、四级。一级:具有独立承担国家...
  • 大学计算机专业学习哪些课程?

    万次阅读 2020-09-29 15:25:12
    大学计算机专业课程:电子技术、离散数学、程序设计、数据结构、操作系统、计算机组成原理、微机系统、计算机系统结构、编译原理、计算机网络、 数据库系统、软件工程、人工智能、计算机图形学、数字图像处理、...
  • 计算机系统的层次存储结构详解

    万次阅读 2017-01-26 21:30:31
    存储器
  • 计算机组成原理----思维导图

    万次阅读 多人点赞 2019-01-12 15:58:25
    一、绪论 二、数据信息的表示
  • http://download.csdn.net/detail/l1505624/9783279
1 2 3 4 5 ... 20
收藏数 1,373,538
精华内容 549,415
关键字:

计算机系统