倍增算法
所谓“倍增”,就是成倍增长。在一些求解空间较大的问题中,如果使用通常的线性递推,需要线性的时间复杂度。而如果采用倍增的方式,通常能优化为对数时间复杂度。简单地解释倍增思想,就是每次都试图使结果范围扩大一定长度,如果扩大后仍满足要求,则扩大,并将下一次试图扩大的长度变为原来的两倍;若不满足,则将扩大长度减半,再次尝试,若仍不满足,则继续减半。最终,扩大长度减为0,就得到了所需的结果。下面是两个使用倍增算法的例子。
求小于T的最大数组前缀和
给定一个长度为N的数列 A,然后进行若干次询问,每次给定一个整数T,求大的 k,满足 $\sum_{i=1}^{N}{A[i]}\le T$。你的算法必须是在线的(必须即时回答每一个询问能等待收到所有询问后再统一处理),假设$0\le T\le\sum_{i=1}^{N}{A[i]}$。
最朴素的做法当然是从前往后累加数组,直到累加和大于T,时间复杂度是O(N)。
首先用O(N)的时间预处理,求出前缀和数组,再用二分查找确定小于等于T的上界。每次查找O(logN)。
如果每次查找的T都很小,使用二分查找可能还不如直接从头遍历数组,那么可以使用倍增算 ...
互联网计算-名词解释
互联网计算-名词解释
英文简称
英文全称
中文
解释
ABR
area border routers
区域边界路由器
在使用OSPF的网络中,拥有连接不同区域的接口的路由器,通常是Area 0 和其他区域。
Access links
接入链路
交换机上的链路,只属于一个VLAN
ACK
acknowledgement
确认字符
在有确认的传输中,接收方发送给发送方的一种控制字符,表示发来的数据与收到
ACL
access control list
访问控制列表
路由器或交换机接口的指令列表,控制端口进出数据包。
ad-hoc Network
自组网络
属于一次对话的各帧
Administrative Distance
管理距离
⼀个0-255的值,提供路由可靠性的⼀个可选参数
ADSL
asymmetric digital subscriber line
非对称数字用户线
上行和下行宽带不对称,利用频分服用,用电话线提供宽带服务
AMI
alternate mark inversion
双极性传号交替反转码
n零电平表示“0”,正负 ...
《计算机组织结构》期末复习-第17讲-输入输出
第17讲-输入输出
外围设备
输入输出操作通过连接到输入输出模块的各种外部设备完成,这些外部设备提供了在外部环境和计算机系统之间的数据交换,通常被称为外围设备(peripheral device),简称为外设(peripheral)
类型
人可读设备:适用于与计算机用户通信
显示器,打印机
机器可读设备:适用于与设备通信
磁盘,磁带
通信设备:适用于与远程设备通信
不能把外设直接连接到系统总线上
外设种类繁多,操作方法多种多样
外设的数据传送速度一般比存储器或处理器的慢得多
某些外设的数据传送速度比存储器或处理器要快
外设使用的数据格式和字长度通常与处理器不同
I/O模块
通过系统总线或中央交换器和存储器连接;通过专用数据线与一个或多个外设连接。I/O模块是计算机内部系统和外设之间的桥梁
外围设备的接口
输入输出模块的接口以控制、状态和数据信号的形式出现
与设备相关的控制逻辑控制外设的操作,以响应来自输入输出模块的命令
缓冲器用于缓存输入输出模块和外设之间传送的数据
缓冲器的大小一般为8 位或16 位
I/O模块的功能
处理器通信
命令译 ...
《计算机组织结构》期末复习-第16讲-控制器
第16讲-控制器
处理器的结构
寄存器
寄存器分类
用户可见寄存器(user visible register)
允许编程人员通过机器语言或汇编语言访问,通过优化寄存器的使用而减少对主存的访问
控制和状态寄存器(control and status register)
由控制器来控制CPU 的操作,并由拥有特权的操作系统程序来控制程序的执行
大多数控制和状态寄存器在大多数机器上是用户不可见的
某些在控制或操作系统模式下执行的机器指令是用户可见的(如程序计数器,在x86上是用户可见的)
两者的区分并不严格
用户可见寄存器
通用寄存器(general purpose register,简称GPR)
可被程序员指派各种用途
数据寄存器(data register)
仅可用于保持数据而不能用于操作数地址的计算
地址寄存器(address register)
可以是自身有某些通用性,或是专用于某种具体的寻址方式
例如:段指针、变址寄存器、栈指针
条件码寄存器(condition codes register)/ 标志(flag)寄存器
CPU硬件设置这些条件 ...
《计算机组织结构》期末复习-第15讲-指令周期和指令流水线
第15讲-指令周期和指令流水线
指令周期
指令周期:处理单个指令的过程(时间)
取指周期:从内存中提取一条指令
执行周期:执行所提取的指令
只有当机器关闭、发生某种不可恢复的错误或遇到停止计算机的程序指令时,程序执行才会停止
间址周期
指令的执行可能涉及一个或多个存储器中的操作数,它们每个都要求一次存储器访问
使用间接寻址,还需要额外的存储器访问
间址周期:把间接地址的读取看成是一个额外的指令子周期
取操作数发生了2次
CPU的任务
取指令:CPU 必须从存储器(寄存器、cache 、主存)读取指令
解释指令:必须对指令进行译码,以确定所要求的动作
取数据:指令的执行可能要求从存储器或输入/输出(I/O)模块中读取数据
处理数据:指令的执行可能要求对数据完成某些算术或逻辑运算
写数据:执行的结果可能要求写数据到存储器或I/O 模块
CPU需求:寄存器
CPU需要在指令周期中临时保存指令和数据
CPU需要记录当前所执行指令的位置,以便知道从何处得到下一条指令
CPU需要一些小容量的内部存储器
假定CPU 有:
1个存储地址寄存器(MAR)
1个存储 ...
《计算机组织结构》期末复习-第14讲-指令系统
第14讲-指令系统
指令
指令的要素
操作码:指定将要完成的操作
源操作数引用:操作会涉及一个或多个源操作数,这是操作所需的输入
结果操作数引用:操作可能会产生一个结果
下一指令引用:告诉处理器这条指令执行完成后到哪儿去取下一条指令
指令表示
在计算机内部,指令由一个位串来表示
指令格式:对应于指令的各要素,这个位串划分成几个字段
大多数指令集使用不止一种指令格式
机器指令符号表示法:
操作码被缩写成助记符来表示
MUL:乘,DIVDIV:除,LOAD:由存储器装入,STOR:保存到存储器
操作数也可以用符号表示
用寄存器编号或内存地址替换操作数
指令格式
定长操作码:𝒏位操作码字段的指令系统最大能够表示𝟐 𝒏 条指令
可变长操作码
扩展操作码:不同地址数的指令具有不同长度的操作码
15条三地址指令操作码:0 0 0 0 ~ 1 1 1 015条二地址指令操作码:1 1 1 1 0 0 0 0 ~ 1 1 1 1 1 1 1 015条一地址指令操作码:1 1 1 1 1 1 1 1 0 0 0 0 ~ 1 1 1 1 1 1 1 1 1 1 1 ...
《计算机组织结构》期末复习-第13讲-总线
第13讲-总线
总线概述
类型
芯片内部总线:连接芯片内部的各个部分
例:CPU 中连接寄存器、ALU 等部分
系统总线:连接CPU 、存储器、IO 控制器和其他功能设备
通信总线:连接主机和I/O 设备,或连接不同的计算机系统
总线结构
数据线:在系统组件之间传输数据
数据线的数量决定了一次可以传输的数据的大小
地址线:在数据线和地址I/O 端口上指定数据的来源和去向
地址线的数量决定了寻址空间的大小
控制线:控制对数据线和地址线的存取和使用
时钟(clock):用于总线同步操作
总线请求(bus request):表示模块需要获得对总线的控制
总线允许(bus grant):发出请求的设备已经被允许控制总线
中断请求(interrupt request):表示某个中断正在悬而未决
中断响应(interrupt ACK):未决的终端请求被响应
存储器读(memory read):从存储器读数据到总线
存储器写(memory write):将数据从总线写入存储器
I/O读(I/O read):从I/O 端口读数据到总线
I/O写(I/O write):将数据从总线写 ...
《计算机组织结构》期末复习-第12讲-虚拟存储器
第12讲-虚拟存储器
操作系统的出现
第一台计算机诞生时,采用手工操作的方式
一个用户独占全机:不会出现因资源已被其他用户占用而等待的现象,但资源的利用率低
CPU等待手工操作:CPU 的利用不充分
批处理系统:加载在计算机上的一个系统软件,在它的控制下,计算机能够自动地、成批地处理一个或多个用户的作业(包括程序、数据和命令)
联机批处理系统,脱机批处理系统
操作系统:一种控制应用程序运行和在计算机用户与计算机硬件之间提供接口的程序
目标:使计算机使用起来更方便;允许计算机系统的资源以有效的方式使用
存储器管理
早期计算机的主存中仅包含系统软件和一个用户程序
单道程序设计
现在计算机的主存中包含操作系统和若干个用户程序
当所有任务都需要等待I/O 时,为了避免处理器处于空闲状态,需要尽可能让更多的任务进入主存
多道程序设计:让处理器一次处理多个任务,提高处理器的利用率
存储器管理
在多道程序系统中,主存需要进一步划分给多个任务,划分的任务由操作系统动态执行
本门课不区分“进程”和“任务”这个更抽象的概念
交换技术
如何将更多更大的任务装入主存
增大主存容量
使用 ...
《计算机组织结构》期末复习-第11讲-冗余磁盘阵列
第11讲-冗余磁盘阵列
RAID简介
冗余磁盘阵列/独立磁盘冗余阵列:Redundant Arrays of Independent Disks (RAID)
基本思想
将多个独立操作的磁盘按某种方式组织成磁盘阵列,以增加容量
将数据存储在多个盘体上,通过这些盘并行工作来提高数据传输率
采用数据冗余来进行错误恢复以提高系统可靠性
特性
由一组物理磁盘驱动器组成,被视为单个逻辑驱动器。
数据是分布在多个物理磁盘上,分布方案称为条带。
冗余磁盘容量用于存储奇偶校验信息,保证磁盘万一损坏时能恢复数据。
RAID 0
数据以条带的形式在可用的磁盘上分布
不采用冗余来改善性能(不是RAID 家族中的真正成员)
用途
高数据传输率
高速响应I/O 请求:两个I/O 请求所需要的数据块可能在不同的磁盘上.如果条的大小相对较大,那么单个IO请求只涉及单个磁盘访问,则多个等待的IO请求就可以被并行处理,减少了每个请求的排队时间。
RAID 1
采用了数据条带,采用简单地备份所有数据的方法来实现冗余。
优点
高速响应I/O 请求:即便是同一个磁盘上的数据块,也可以由两组硬盘 ...
《计算机组织结构》期末复习-第10讲-数据校验码
第10讲-数据校验码
差错(Error)
数据在计算机内部进行计算、存取和传送过程中,由于元器件故障或噪音干扰等原因,会出现差错
以存储为例
硬故障(hard failure):永久性的物理故障,以至于受影响的存储单元不能可靠地存储数据,成为固定的“1”或“0”故障,或者在0 和1之间不稳定地跳变。由恶劣的环境、制造缺陷和旧损引起
软故障(soft error):随机非破坏性事件,它改变了某个或某些存储单元的内容,但没有损坏机器。由电源问题或α 粒子引起
解决方案
从计算机硬件可靠性入手,在电路、电源、布线等方面采取必要的措施,提高计算机的抗干扰能力
采取数据检错和校正措施,自动发现并纠正错误
纠错(Error Correction)
基本思想:存储额外的信息以进行检错和校正
处理过程
数据输入:使用函数𝑓在𝑀位数据𝐷上生成𝐾位校验码𝐶
数据输出:使用函数𝑓在𝑀位数据𝐷 上生成新的𝐾位代码𝐶”,并与取出的𝐾位码𝐶 进行比较
没有检测到差错:使用数据𝐷
检测到差错且可以校正:校正数据𝐷 来生成数据𝐷”,并用数据𝐷
检测到差错但无法纠正:报告
...