- 内存分区模型
C++程序在执行时,将内存大方向划分为4个区域;
代码区:存放函数体的二进制代码,由操作系统进行管理的
全局区:存放全局变量、静态变量、常量
栈区:由编译器自动分配释放,存放函数的参数值、局部变量等
堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收
- 广域网和局域网的区别?
它们的任务都是提供通信。
广域网,顾名思义其覆盖范围很广,通常为几十千米到几千千米的区域,广域网是因特网的核心,连接广域网的各结点交换机的链路一般都是高速链路,具有较大的通信容量。
局域网,覆盖范围较小,通常为几十米到几千米的区域,一般用微机或者工作站通过高速线路相连。局域网在计算机配置的数量上没有太多的限制,少的可以只有两台,多的可达几百台。
传统上,局域网使用广播技术,而广域网使用交换技术。
- 计算机网络的功能?
数据通信 (连通性 有线:双绞线,同轴电缆,光纤。无线:卫星,无线电波,微波)
资源共享 (硬件(例:打印机)、软件、数据(例:百度文库))
分布式处理 当一个计算机网络中的某个计算机系统负荷过重的时候,就可以把任务分给其他计算机系统一起做,即多台计算机各自承担同一工作任务的不同部分(常见的分布式处理平台:Hadoop平台,它不仅可以对分布式数据进行存储,也可以对数据进行处理和加工)
提高可靠性 (链路中有某一台主机出现故障,可以走另一条链路)
负载均衡 (分布式处理所达到的一个效果,使多台计算机一起工作)
- http和https的区别?
http全称是Hyper Text Transfer Protocol,超文本传输协议,它用于Web浏览器和网站服务器之间传递信息,HTTP所封装的信息是明文的,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以分析其中的信息内容。因此http协议不适合传输一些敏感的信息,像信用卡号,支付密码等信息
https全称是Hyper Text Transfer Protocol Secure,比http多了一个secure安全,超文本安全传输协议,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL(安全套接字协议)依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。但https也不足够安全,因为你是谁,你访问了什么网站这些信息并没有被保护,当然这个可以使用VPN解决
http和https连接的端口也不一样,http是80,https是443
- RESTful api
API(Application Programming Interface,应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问原码,或理解内部工作机制的细节。
REST即表述性状态传递(英文:Representational State Transfer,简称REST)是一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
RESTful api就是REST风格的接口
GET /orders/1 :返回订单编号为1的订单
POST /orders :增加一个订单
Delete /orders/1 :删除一个订单编号为1的订单
PUT /orders/1 :更新订单编号为1的订单
- 超长指令字:采用多个独立的功能部件,将多条指令的操作打包,形成一条非常长的指令,选择同时可流出的多条指令的任务由编译器完成(而在超标量机器中此功能是由硬件完成的,所以超长指令字机器可以节省大量硬件。)
- 操作系统内存管理虚拟内存分页 :作系统会将辅助存储器(通常是磁盘)中的数据分区成固定大小的区块,称为“页”。当不需要时,将分页由主存(通常是内存)移到辅助存储器;当需要时,再将数据取回,加载主存中。
- 虚拟地址到物理地址翻译全过程:
- 最小生成树和最短路径的区别
- 双向链表怎么删除结点的
- 集线器和交换机的区别
- CISC和RISC的区别
- 流水线是怎么构造的:把一个重复的过程分解成为若干个子过程,每个子过程由专门的功能部件来实现。把多个处理过程在时间上错开,依次通过各功能段,这样每个子过程就可以和其他子过程并行执行。
- 流水线不是一直都可以顺利运行的,会发生什么问题
相关是导致流水线冲突的原因,但是相关是指令间的静态属性,但是存在相关的指令不一定会导致流水线冲突
-
- 资源相关----是指多条指令进入流水线后在同一个时钟周期内争用同一功能部件所发生的相关(引入Bubble(停顿)消除结构冲突;设置相互独立的指令存储器和数据存储器,或者将统一的Cache分成独立的指令Cache和数据Cache)
- 数据相关----是指由于相邻的两条或多条指令使用了相同的数据地址而发生的关联。(定向技术,后面指令在前面的ALU之后出现ALU的使用可以使用定向技术进行操作,但是如果当前需要ALU的结果在前面的ALU运算之前就没有办法通过定向技术解决。;bubble停顿;编译器重新组织指令顺序)
- 控制相关----是指由转移指令引起的相关。(预测分支失败;延迟分支)
- 数据相关不是每次都能用数据旁路解决的,什么时候不可以?
后面指令在前面的ALU之后出现ALU的使用可以使用定向技术进行操作,但是如果当前需要ALU的结果在前面的ALU运算之前就没有办法通过定向技术解决
- Intel的X86是CISC还是RISC
X86是CISC,ARM是RISC
- 冒泡排序、快速排序
- 磁盘调度
磁臂粘着--------有一个或几个进程对某一磁道有较高的访问频率,这些进程反复请求对某一磁道的I/O操作,从而垄断了整个磁盘设备。
- 内存碎片
- 套接字(Socket)有什么类型
流套接字(SOCK_STREAM):流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议,即TCP(The Transmission Control Protocol)协议。
数据报套接字(SOCK_DGRAM):数据报套接字提供了一种无连接的服务。该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。数据报套接字使用UDP(User Datagram Protocol)协议进行数据的传输。由于数据包套接字不能保证数据传输的可靠性,对于有可能出现的数据丢失情况,需要在程序中做相应的处理。
原始套接字(SOCK_RAW):原始套接字与标准套接字(标准套接字指的是前面介绍的流套接字和数据报套接字)的区别在于:原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据报套接字只能读取UDP协议的数据。因此,如果要访问其他协议发送数据必须使用原始套接字。
- 详细描述中断到底发生了什么
中断允许触发器:在CPU内部设置一个中断允许触发器,只有该触发器置“1”,才允许中断;置“0”,不允许中断。
中断优先级:在有多个中断请求时,总是响应与处理优先级高的设备的中断请求。
中断(interrupt)是异步的事件,典型的比如由I/O设备触发;异常(exception)是同步的事件,典型的比如处理器执行某条指令时发现出错了等等。
中断处理的基本过程包括中断请求、中断判优、中断响应、中断服务 和中断返回等五个阶段。
- 有序的数字想进行查找,应该采用什么数据结构(二叉搜索树)
- 删除一个结点应该怎么做,用伪代码描述
- 软件工程测试的白盒测试和黑盒测试在做什么
白盒测试:白盒测试就是把程序看成一个透明的白盒里,测试者完全知道程序的结构和处理算法。白盒测试按照程序内部的逻辑测试程序,检验程序中的主要执行通路是否都能按预定要求正确工作。白盒测试又称结构测试。典型技术:1)逻辑覆盖
2)控制结构测试
黑盒测试:黑盒测试是把程序看成一个黑盒子,完全不考虑程序的内部逻辑。黑盒测试是在程序接口进行的测试,它只检测程序功能是否能按照规格说明书的规定正常使用,程序接收输入数据后是否能产生正确的输出信息,程序运行过程中是否能保持外部信息(如数据库或文件)的完整性。黑盒测试又称为功能测试,它并不能取代白盒测试,而是与白盒测试互补的测试方法。黑盒测试力图发现以下错误:功能不正确或遗漏了功能 界面错误 数据结构错误或外部数据库访问错误 性能错误 初始化和终止错误。典型技术:1)等价划分
2)边界值分析
3)错误推测
- 解释一下Map reduce
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。
MapReduce框架由Map和Reduce组成。
Map()负责把一个大的block块进行切片并计算。
Reduce() 负责把Map()切片的数据进行汇总、计算。
一个映射map函数就是对一些独立元素组成的概念上的列表的每一个元素进行指定的操作。事实上,每个元素都是被独立操作的,而原始列表没有被更改,因为这里创建了一个新的列表来保存新的答案。
化简reduce操作指的是对一个列表的元素进行适当的合并(继续看前面的例子,如果有人想知道班级的平均分该怎么做?它可以定义一个化简函数,通过让列表中的元素跟自己的相邻的元素相加的方式把列表减半,如此递归运算直到列表只剩下一个元素,然后用这个元素除以人数,就得到了平均分。)。虽然他不如映射函数那么并行,但是因为化简总是有一个简单的答案,大规模的运算相对独立,所以化简函数在高度并行环境下也很有用。
- Hadoop是指大数据中的“大”,“数”还是“据”
Hadoop就是存储海量数据和分析海量数据的工具
- 解释一下交换方式(报文,电路,数据报),这几种方式有什么区别
- 图的存储结构是什么
- 快排的过程,选哪个位置作为枢轴?改变枢轴的位置?
- 快排算法什么时候会导致O(N²)的复杂度?
- C语言的内存分配,,假设某个函数调用,这样的话会涉及到哪些区块的使用?
- 公钥加密,私钥加密,对称加密
对称加密算法(私钥加密) 是应用较早的加密算法,又称为 共享密钥加密算法。在 对称加密算法 中,使用的密钥只有一个,发送 和 接收 双方都使用这个密钥对数据进行 加密 和 解密。这就要求加密和解密方事先都必须知道加密的密钥。
非对称加密算法(公钥加密),又称为 公开密钥加密算法。它需要两个密钥,一个称为 公开密钥 (public key),即 公钥,另一个称为 私有密钥 (private key),即 私钥。
数字签名,简单来说就是通过提供 可鉴别 的 数字信息 验证 自身身份 的一种方式。一套 数字签名 通常定义两种 互补 的运算,一个用于 签名,另一个用于 验证。分别由 发送者 持有能够 代表自己身份 的 私钥 (私钥不可泄露),由 接受者 持有与私钥对应的 公钥 ,能够在 接受 到来自发送者信息时用于 验证 其身份。
- 主析取范式和主合取范式
- 进程和线程的基本概念
- 异步和同步
- 工厂模式
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
- 软件工程的流程,在每个流程里面涉及到什么图
可行性分析,需求分析,概要设计,详细设计,编码,测试,软件交付,验收,维护
- TCP三次握手的过程
那如果两次握手会怎么样呢?就是A为什么还要发送一次确认。
为了防止已经失效的连接请求报文又突然传送到了B,而产生错误。假设一种异常,A发出的请求由于网络阻塞没有及时到达B,后又重传请求,之后B响应了,且建立了连接,之后连接又释放了。此时假设A发出的第一个请求到达B,B误以为是A再次请求连接,B建立连接,如果采用两次握手,此时连接建立,而A又不发送数据,浪费了B的资源。
为什么最后要等一个TIME_WAIT时间呢?
一:为了保证最后一个ACK能够到达B,防止丢失了,B重传,A不能回复确认。
二是为了防止之前提到的“已经失效的连接请求报文段“出现在连接中”。A发送完最后一个ACK,再经过时间2MSL,可以使本连接产生的所有请求报文从网络中消失。
- ARP是哪个层次的协议
- 哈希表冲突
解决:开放定址法,再哈希法,拉链法,公共溢出区(建立两张表,一张为基本表,另一张为溢出表。基本表存储没有发生冲突的数据,当关键字由哈希函数生成的哈希地址产生冲突时,就将数据填入溢出表。)
- IO的几种方式
程序控制,中断方式,DMA,通道(专门负责输入输出控制的处理机,当 CPU要完成一组相关的读(或写)操作时,只需要向 I/O 通道发出一条 I/O 指令,指出其所要执行的通道程序的首址和要访问的 I/O 设备),ppu外围处理机(用一个功能较弱的计算机管理 I/O,彻底解放 CPU,硬件结构最复杂。)
- DMA控制器需要初始化什么内容
主存首地址、传送数据个数、传送方向(读出/写入)、设备地址(如磁头号、磁道号、起始扇区号)
初始化工作的最后是向外设接口发送启动读或写的命令。
- 操作系统的四大特征?
并发 并发是指两个或多个事件在同一时间间隔内发生。操作系统的并发性是指计算机系统中同时存在多个运行的程序,因此它具有处理和调度多个程序同时执行的能力。
操作系统的并发性是通过分时得以实现的。(并行性是指系统在同一时刻能完成两种或两种以上的工作。只有多核CPU才支持多个程序并行,单核CPU只能支持多个程序并发)
共享
1.互斥共享方式:系统中的某些资源,某一时刻内只允许一个进程访问该资源(比如:使用QQ和微信,同一时刻只能分配给其中一个进程)
2.同时共享方式:系统中的某些志愿,允许一个时间段内由多个进程“同时”对它们进行访问(比如:使用QQ发送文件A,使用微信发送文件B。从宏观上看,两边都在发送文件,访问硬盘资源。但从微观上看,两个进程是交替着访问硬盘的)
虚拟
虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体是实际存在的,而逻辑对应物是用户感受到的。
虚拟技术可以分为空分复用技术(如虚拟存储器技术)和时分复用技术(如虚拟处理器)。
异步
异步是指在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一管到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
- 操作系统的四大功能
进程管理
内存管理
文件管理
设备管理(输入输出管理)
- 进程的五大状态
创建态
就绪态
运行态 进程的三种基本状态
阻塞态
结束态
记住:阻塞态无法直接到运行态,中间肯定有个就绪态
- 进程通信的三种方式
- 共享存储 基于数据结构的共享
基于存储区的共享
-
- 消息传递 直接通信方式
间接通信方式
-
- 管道通信 管道通信必然是半双工的通信
- 线程和进程的区别?
1.线程最直接的理解就是“轻量级进程”,它是一个基本的CPU执行单元,也是程序执行流的最小单元,由线程ID、程序计数器、寄存器集合和堆栈组成。线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,它与同一进程中的其他线程共享进程所拥有的资源。线程也有就绪、阻塞、运行三种基本状态。
2.引入线程后,进程只作为系统资源的分配单元,而线程则作为处理机调度的基本单位。
3.在同一进程中,线程的切换不会引起进程切换。但在不同的进程中进行线程切换,会引起进程的切换。
4.进程之间可以并发执行,线程之间也可以并发执行。
5.进程间通信需要进程同步和互斥手段的辅助,以保证数据的一致性,而线程间可以之间读/写进程数据段(如全局变量)来进行通信。
48. 多线程模型
1)多对一模型 多个用户级线程映射到一个内核级线程
2)一对一模型 每个用户级线程映射到一个内核级线程
3)多对多模型 n个用户级线程映射到m个内核级线程上,要求m<=n
49. 为什么要进行处理机的调度?
若没有处理机调度,意味着要等到当前运行的进程执行完毕后,下一个进程才能执行。而在实际情况中,进程时常需要等待一些外部设备的输入,而外部设备的速度与处理机相比是非常缓慢的,若让处理机总是等待外部设备,则对处理机的资源是极大的浪费。而引进处理机调度后,可在运行进程等待外部设备时,把处理机调度给其他进程,从而提高处理机的利用率。简单来说就是为了合理地处理计算机的软/硬件资源。
49. 典型的进程调度算法
先来先服务FCFS
短作业优先SJF
优先级调度 ————————————————————— 适合实时操作系统
高响应比优先 (等待时间+要求服务时间)/要求服务时间
时间片轮转调度 适合分时操作系统
多级反馈队列调度
50. 什么叫临界资源?同步和互斥?
一次仅允许一个进程使用的资源称为临界资源。像打印机这种物理设备,还有许多可以被若干进程共享的变量、数据,都属于临界资源。对临界资源的访问,必须互斥地进行。
同步是指多个进程需要协调它们的工作次序而等待、传递信息所产生的制约关系。
互斥是指两个进程不能同时访问同一个临界资源,一个访问另一个必须等待,等到一个退出临界区后另外一个才允许访问。
51. 同步机制应遵循的原则?
1)空闲让进
2)忙则等待
3)有限等待 保证不会饥饿
4)让权等待 当进程不能进入临界区时,应当立即释放处理器,防止进程忙等
52. 死锁、饥饿、死循环的区别
53. 死锁的处理策略
死锁预防、死锁避免(银行家算法)、死锁检测和解除
54.逻辑地址到物理地址的翻译过程
55.请求分页中的地址变换过程
56.什么是文件?什么是文件系统?
文件是以计算机硬盘为载体的存储在计算机上的信息集合,它的形式多样,可以是文本文档、图片、程序等。操作系统中负责管理和存储文件信息的软件机构成为文件管理系统,简称文件系统。文件系统由三部分组成:与文件管理有关的软件、被管理文件、实施文件管理所需要的数据结构。
57.文件系统要完成哪些功能?
对于用户而言,文件系统最主要的功能是实现对文件的基本操作,让用户可以按名存储和查找文件,组织成合适的结构,并应当具有基本的文件共享和文件保护功能。
对于操作系统本身而言,文件系统还需要管理与磁盘的信息交换,完成文件逻辑结构和物理结构上的变换,组织文件在磁盘上的存放,采取好的文件排放顺序和磁盘调度方法以提升整个系统的性能。
- 软链接和硬链接的区别?
硬链接: 与普通文件没什么不同,inode 都指向同一个文件在硬盘中的区块
软链接: 保存了其代表的文件的绝对路径,是另外一种文件,在硬盘上有独立的区块,访问时替换自身路径。
59.文件分配的方式?
1)连续分配
2)链接分配 隐式链接(指针) 显式链接(FAT文件分配表)
3)索引分配
60.文件存储空间管理的方式?
1)空闲表法
2)空闲链表法(盘块链 盘区链)
3)位示图法
4)成组链接法
(4条消息) 操作系统——成组链接法_LengDanRan的博客-CSDN博客_成组链接法
61.磁盘的调度算法?
1)先来先服务FCFS
2)最短寻找时间有限SSTF
3)扫描SCAN(电梯调度算法)-----到达最边上之后,从此处返回
4)循环扫描C-SCAN -----到达最边上之后,从头开始
注:LOOK和C-LOOK算法可以不用到最边上的磁道才改变磁头移动方向
62.I/O控制方式?
1)程序直接控制方式
2)中断驱动方式
3)DMA方式
4)通道方式
63.I/O子系统的层次结构?
用户层I/O软件 |
设备独立性软件 |
设备驱动程序 |
中断处理程序 |
硬件 |
64.路由器的作用
65.OSI七层的作用?
应用层:(FTP、SMTP、HTTP)所有能和用户交互产生网络流量的程序
表示层:(JPG、ASCII)用于处理在两个通信系统中交换信息的表示方式(语法和语义)
功能:数据格式变化(翻译官)
功能:数据加密解密
功能:数据压缩和恢复
会话层:向表示层实体/用户进程提供建立连接并在连接上有序地传输数据
功能:建立、管理、终止会话
功能:使用校验点可使会话在通信失效时从校验点/同步点继续恢复通信,实现数据同步。
传输层:(TCP、UDP)负责主机中两个进程的通信,即端到端的通信。传输单位是报文段或用户数据报。
功能:可靠传输、不可靠传输
功能:差错控制
功能:流量控制
功能:复用分用 复用:多个应用层进程可同时使用下面传输层的服务
分用:运输层把收到的信息分别交付给上面应用层中相应的进程
网络层:(IP、ICMP、IGMP、ARP、RARP、OSPF)主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层的传输单位是数据报
功能:路由选择(最佳路径)
功能:流量控制
功能:差错控制
功能:拥塞控制
数据链路层:(SDLC、HDLC、PPP、STP)主要任务是把网络层传下来的数据报组装成帧。链路层的传输单位是帧
功能:成帧(定义帧的开始和结束)….10000011101010101……
功能:差错控制 (帧错+位错)
功能:流量控制
功能:访问(接入)控制 (控制对信道的访问)
物理层:(Rj45、802.3)主要任务是在物理媒体上实现比特流的透明传输。物理层传输单位是比特
功能:定义接口特性
功能:定义传输模式 单工、半双工、双工
功能:定义传输速率
功能:比特同步
功能:比特编码
上面四层是端到端的,下面三层是点到点的。
66.zigbee协议
Zigbee设备用于智能能源,医疗和家庭自动化。
67.802.11协议
802.11规定了无线局域网的介质访问控制协议及物理层技术规范。
802系列协议,专门用于局域网标准。著名的802.11,802.3等协议,均出于此。下图是该协议族的主要分布。802.1负责定义局域网的体系,结构。802.2负责定义逻辑链路子层(LLC)。802.3是以太网介质访问控制协议。802.5规定了令牌环网的介质访问控制规范。
802.11协议特色:
冲突检测CSMA/CA RTS预约信道/CTS
数据校验
68.我写的代码只有1k行,为什么编译之后目标文件有几百k
因为它不仅包含了这1k行代码,还包含了用来启动和终止程序的代码,以及用来与操作系统交互的代码,而且它也可能链接了很多库函数。一般release版本的会小一些,把一些冗余的调试信息删除了
69.C语言中1e-6的意思
1e-6就是1*10的-6次方
- 什么是设备独立性,如何实现设备独立性
为了实现设备的独立性,应引入逻辑设备和物理设备两个概念。在应用程序中,使用逻辑设备名称来请求使用某类设备;而系统执行时,是使用物理设备名称。
设备独立性软件:执行所有设备的公有操作、完成逻辑设备名到物理设备名的转换(为此应设置一张逻辑设备表)并向用户层(或文件层)软件提供统一接口,从而实现设备的独立性。
在实现了设备独立性的功能后,可带来两方面的好处:(1)设备分配时的灵活性;(2)易于实现I/O重定向(指用于I/O操作的设备可以更换即重定向,而不必改变应用程序)。
71.QQ发送消息,对方接收消息的全过程
72.C++中引用的语法
Int a = 10;
Int &b = a;
73.C++面向对象的三大特性?
封装、继承、多态
74. 不使用库函数将字符串转换为数字
75.冯诺依曼计算机的特点:
计算机由五大部件组成——(输入设备,输出设备,存储器,运算器,控制器)
指令和数据以同等地位存于存储器,可按地址寻访
指令和数据用二进制表示
指令由操作码和地址码组成
存储程序
以运算器为中心(现在一般以存储器为中心)
76.死锁产生的四个必要条件
互斥
占有且等待
不可抢占
循环等待
- 掌握递归算法。C语言十六进制转化为二进制。
78.CPU的功能?
指令控制
操作控制
时间控制
数据加工
中断处理
79. 总线的分类
1)片内总线(芯片内部的总线)
2)系统总线(CPU、主存、I/O接口之间的总线,可分为数据总线(双向),地址总线(单向),控制总线)
3)通信总线(计算机系统之间或计算机系统与其他系统之间的总线,也叫外部总线)
80.系统总线的结构
1)单总线结构
2)双总线结构(主存总线(CPU、主存、通道间传送信息)+I/O总线(通道和外部设备通信))
3)三总线结构(主存总线(CPU、内存间传送信息)+I/O总线(CPU和各类外设间通信)+DMA(直接内存访问)总线(内存和外设之间直接传送数据))
81. 总线定时方式
1)同步定时方式——系统采用一个统一的时钟信号来协调发送和接受双方的传送关系
2)异步定时方式——a)不互锁方式
b)半互锁方式 主设备发出“请求”后,必须接受到从设备的“应答”,才能撤销“请求”信号
c)全互锁方式 主设备发出“请求”后,必须接受到从设备的“应答”,才能撤销“请求”信号。同时从设备发出“应答”后,必须获知主设备“请求”已撤销后,才能撤销“应答”。
82.四种I/O控制方式
程序查询方式——由CPU通过程序不断查询I/O设备是否已准备好,从而控制I/O设备与主机交换信息。
程序中断方式 ——只在I/O设备准备就绪并向CPU发出中断请求时才予以响应。
DMA方式——主存和I/O设备之间有一条直接数据通路,当主存和I/O设备交换信息时,无须调用中断服务程序。
通道方式——在系统中设有通道控制部件,每个通道都挂在若干外设,主机在执行I/O命令时,只需启动有关通道,通道将执行通道程序,从而完成I/O操作。
83. 常见的输入、输出、外存储器设备
输入:键盘、鼠标
输出:显示器、打印机
外存储器:磁盘存储器、光盘存储器、固态硬盘
84. I/O接口和I/O端口的区别
I/O接口(I/O控制器)是主机和外设之间的交接界面,通过接口可以实现主机和外设的信息交换。而I/O端口是指接口电路中可以被CPU直接访问的寄存器。(通常,CPU能对数据端口执行读写操作,但对状态窗口只能执行读操作,对控制端口只能执行写操作)
85. I/O接口的作用?
实现主机和外设的通信联络控制
进行地址译码和设备选择
实现数据缓冲
信号格式的转换
传送控制命令和状态信息
86. 对I/O端口的两种编址方式
I/O端口要想被CPU访问,就必须要对各个端口进行编号,每个端口对应一个端口地址。编制方式有与存储器统一编址和独立编址两种
a)统一编制(存储器映射方式):将I/O端口当做存储器的单元进行地址分配,这种方式不需要设置专门的I/O指令,用统一的访存指令就可以访问I/O端口。
优点:不需要专门的I/O指令,可以使CPU访问I/O的操作更灵活、更方便,还可以使端口有较大的编址空间。
缺点:I/O端口占用了存储器的地址,使得内存容量变小,而且执行速度慢。
b)独立编址(I/O映射方式):I/O端口的地址空间与主存地址空间是两个独立的地址空间,因而无法从地址码上进行区分,需要设置专门的I/O指令来访问I/O端口。
优点:输入输出指令与存储器指令有明显区别,程序编制清晰,便于理解。
缺点:输入/输出指令少,一般只能对端口进行传送操作,尤其需要CPU提供存储器读/写、I/O设备读/写两组控制信号,增加了控制的复杂性。
87.谈谈你自身的优点和缺点
优点:
缺点:sports、must no noise
88. 程序查询方式
88. 中断的作用
89.程序中断方式
程序中断是指计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止线性程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。
90.程序中断方式的思想:
P298
91.内中断和外中断
内中断:指在处理器和内存的内部产生的中断,包括程序运算引起的各种错误(如地址非法、检验错、页面失效、存取访问控制错、算术操作溢出、数据格式非法、除数为0、非法指令、用户程序执行特权指令、分时系统中的时间片中断、用户态到核心态的切换)。
外中断:指在处理器和内存的外部产生的中断,包括I/O设备发出的I/O中断,外部信号中断(如用户按ESC键),以及各种定时器引起的时钟中断等。
92. 硬件中断和软件中断
硬件中断:通过外部的硬件产生的中断。硬件中断属于外中断
软件中断:通过某条指令产生的中断。软件中断可以编程实现,软件中断是内中断
93. 非屏蔽中断和可屏蔽中断
非屏蔽中断:非屏蔽中断是一种硬件中断,此种中断不受中断标志位IF的影响,即使在关中断(IF=0)的情况下也会被响应
可屏蔽中断:可屏蔽中断也是一种硬件中断,此种中断受中断标志位IF的影响,在关中断情况下不接受中断请求
94.中断的优先级:
硬件故障中断>软件中断
非屏蔽中断>可屏蔽中断
DMA请求>I/O设备传送的中断请求
高速设备>低俗设备
输入设备>输出设备
实时设备>普通设备
95.CPU响应中断的条件
需满足:中断源有中断请求
CPU允许中断及开中断
一条指令执行完毕,且没有更紧迫的任务
96. 中断隐指令
CPU响应中断后,经过某些操作,转去执行中断服务程序。这些操作是由硬件直接实现的,叫做中断隐指令。中断隐指令并不是指令系统中的一条真正的指令,它没有操作码。它完成的操作如下:关中断
保存断点
引出中断服务程序——取出中断服务程序的入口地址并传送给PC
97. 中断向量,中断服务程序的关系
中断向量是中断服务程序的入口地址,中断向量地址是中断向量的地址。
98. 中断处理流程
关中断
保存断点
引出中断服务程序
保存现场和屏蔽字
开中断
执行中断服务程序
关中断
恢复现场和屏蔽字
开中断、中断返回
注:其中-是由中断隐指令(硬件自动)完成,-由中断服务程序完成
99. DMA方式
DMA方式有一种完全由硬件进行成组信息传送的控制方式,它具有程序中断方式的优点,即在数据准备阶段,CPU与外设并行工作。DMA方式在外设与内存之间开辟一条“直接数据通道”,信息不再经过CPU,降低了CPU在传送数据时的开销,因此称为直接存储器存取方式。
DMA的数据传输可以以单字节、字、数据块为基本单位。数据传送阶段完全由DMA(硬件)控制。
这种方式适用于磁盘机、磁带机等高速设备大批量数据的传送,它的硬件开销比较大。在DMA方式中, 中断的作用仅限于故障和正常传送结束时的处理。
DMA在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理
预处理:由CPU完成的一些必要的准备工作。首先,CPU执行几条I/O指令,用以测试I/O设备状态,向DMA控制器的有关寄存器置初值、设置传送方向、启动该设备等。然后,CPU继续执行原来的程序,直到I/O设备准备好发送的数据或接收到数据时,I/O设备向DMA控制器发出DMA请求,再由DMA控制器向CPU发出总线请求,用以传输数据。
后处理:DMA控制器向CPU发送中断请求,CPU执行中断服务程序做DMA结束处理,包括校验送入主存的数据是否正确、测试传送过程中是否出错(错误则转入诊断程序)、决定是否继续使用DMA传送其他数据块等。
100. DMA的传送方式
停止CPU访问主存——要求CPU放弃总线使用权,DMA接口获得总线控制权,开始进行数据传送,数据传送结束后,DMA接口通知CPU可以使用主存,并把总线控制权交还给CPU
DMA与CPU交替访存——将一个CPU周期分为C1和C2两个周期,其中C1给DMA访存,C2给CPU访存。总线使用权是通过C1和C2分时控制的
周期窃取——一旦I/O设备有个DMA请求,就会遇到三种情况
a)此时CPU未在访存,那么无冲突
b)此时CPU正在访存,那么等CPU存取周期结束后,CPU将总线控制权让给DMA
c)I/O和CPU同时请求访存,那么就CPU暂时放弃总线占有权,由I/O设备挪用一个或几个周期
101.DMA方式和中断方式的区别
程序中断是指计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止线性程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。
DMA方式是一种完全由硬件进行成组信息传送的控制方式,它具有程序中断方式的优点,即在数据准备阶段,CPU与外设并行工作。DMA方式在外设与内存之间开辟一条“直接数据通道”,信息不再经过CPU,降低了CPU在传送数据时的开销,因此称为直接存储器存取方式。
中断方式是程序的切换,需要保护和恢复现场;而DMA方式除了预处理和后处理,其他时候不占用CPU的任何资源。
对中断请求的响应只能发生在每条指令执行完毕时(即指令的执行周期后);而对DMA请求的响应可以发生在每个机器周期结束时(在取指周期、间址周期、执行周期后均可),只要CPU不占用总线就可被响应
中断传送过程需要CPU的干预,而DMA方式不需要CPU的干预。因此DMA的方式数据传输率非常高,适合于高速外设的成组数据传送
从数据传送来看,中断方式靠程序传送,而DMA方式靠硬件传送
中断方式具有对异常事件的处理能力,而DMA方式仅局限于传送数据块的I/O操作
DMA请求的优先级高于中断请求
102. 存储器按存取方式分类
1)随机存储器(RAM) 易失性存储器
2)只读存储器(ROM) 非易失存储器
3)串行访问存储器——包括顺序存取存储器(SAM,如磁带)和直接存取存储器(DAM,如磁盘)
103. 多级存储器结构
从上到下:CPU、寄存器、Cache、主存、磁盘、磁带+光盘
- SRAM(静态随机存储器)和DRAM(动态随机存储器)的区别
105. ROM的类型
掩模式只读存储器(ROM)
一次可编程只读存储器(PROM)
可擦除可编程只读存储器(EPROM)
闪速存储器(Flash Memory)
固态硬盘(Solid State Drives)
106. 主存容量的扩展
107. 低位交叉编织
单体多字系统的特点是存储器中只有一个存储体,每个存储单元存储 m 个字,总线宽度也为 m 个字。一次并行读出 m 个字,地址必须顺序排列并处于同一存储单元。
高位交叉编址:高位地址表示体号,低位地址为体内地址。采用高位交叉编址方式的存储器仍是顺序存储器。
低位交叉编址:低位地址为体号,高位地址为体内地址。由于程序连续存放在相邻体中,因此采用此编址方式的存储器称为交叉存储器。
108.局部性原理
时间局部性:指在最近的未来要用到的信息,很可能是现在正在使用的信息。(循环)
空间局部性:指在最近的未来要用到的信息,很可能与现在正在使用的信息在存储空间上是临近的。(数组)
109. Cache的基本工作原理
Cache利用了局部性原理。当CPU发出读请求时,若访存地址在Cache中命中,就将此地址转换成Cache地址,直接对Cache进行读操作,与主存无关;若Cache未命中,则仍需访问主存,并把此字所在的块一次性地从主存调入Cache。若此时Cache已满,则需要根据某种替换算法,用这个块替换Cache中原来的某一块。
注:CPU与Cache之间的数据交换以字为单位,而Cache与主存之间的数据交换则以Cache块为单位。
110. Cache和主存的映射方式
1)直接映射——
标记+cache行号+块内地址
2)全相联映射——主存中的每一块可以装入Cache中的任何位置。全相联映射方式下,Cache块的冲突率最低,空间利用率高,命中率也高,缺点是标记的比较速度较慢
标记+块内地址
3)组相联映射——组间采取直接映射,而组内采取全相联映射
标记+cache组号+块内地址
111. Cache中主存块的替换算法
1)随机算法
2)先进先出算法
3)最近最久未使用算法LRU
112. Cache的写策略
对于Cache写命中,有两种处理方法
1)全写法(写直通法)——当CPU对Cache写命中时,必须把数据同时写入Cache和主存
2)写回法——当CPU对Cache命中时,只修改Cache的内容,而不立即写入主存,当此块被换出时才写回主存。需要设置一个标志位(脏位)
对于Cache写不命中,有两种处理方法
- 写分配法——写不命中时,加载主存的块到Cache中,然后更新这个Cache块
- 非写分配法——写不命中时,只写入主存,不进行调块
各级Cache之间常采用“全写法”+“非写分配法”(都不会导致不一致)
Cache和主存之间常采用“写回法”+“写分配法”(都会导致不一致)
113. 带TLB的虚拟存储器的CPU访存过程
114. 指令格式
零地址指令——有两种可能,一是不需要操作数的指令,例如空操作指令、停机指令、关中断指令。二是用在堆栈计算机中,通常参与运算的两个操作数从栈顶和次栈顶弹出,运算之后,再把运算结果压入堆栈
一地址指令——有两种可能,一是单操作数指令,二是另一个操作数由累加器(ACC)提供
二地址指令——完成一条指令(单字长指令)需要4次访存,取指、读1地址、读2地址、写回1地址
三地址指令
四地址指令
115. 指令寻址和数据寻址
1.指令寻址有两种,
1)顺序寻址方式——通过PC自动加1(1个指令字长),自动形成下一条地址的指令
2)跳跃寻址方式——通过转移类指令实现,跳跃寻址就是下条指令的地址码不由程序计数器直接给出,而是由本条指令给出下条指令地址的计算方式。是否跳跃可能会受到状态寄存器PSW和操作数的控制。跳跃到的地址分为绝对地址(由标记符直接得到)和相对地址(相对于当前指令地址的偏移量),跳跃后的地址存入PC,所以下一条指令仍然通过PC给出
2.数据寻址
数据寻址是指如何在指令中表示一个操作数的地址,如何用这种表示得到操作数或怎样计算出操作数的地址
常见的数据寻址方式
- 隐含寻址
- 立即数寻址
- 直接寻址
- 间接寻址
- 寄存器寻址
- 寄存器间接寻址
- 相对寻址 (PC)+A —> EA
- 基址寻址 (BR)+A —> EA 形式地址A作为偏移量,BR值不变
- 变址寻址[数组](IX)+A —> EA 变址寄存器IX中的内容为偏移量,A不变
- 堆栈寻址 硬堆栈(寄存器堆栈)和软堆栈(从主存中划出一段区域做堆栈)
116. RISC和CISC的区别
CISC是复杂指令系统计算机,指令系统复杂庞大,指令长度不固定,可以访存的指令不受限制,控制器大多数采用微程序控制,各种指令执行时间相差很大,大多数指令需要多个时钟周期才能完成。
RISC是精简指令系统计算机,指令系统精简,只有一些使用频率高的简单指令,指定长度固定,只有Load/Store(取数/存数)指令访存,控制器以硬布线为主,CPU中通用寄存器的数量很多,RISC一定采用指令流水线技术,大部分指令在一个时钟周期内完成。
117. 指令流水线
计算机的流水线把一个重复的过程分解为若干子过程,每个子过程与其他子过程并行执行,采用流水线技术可以把计算机速度提高几倍。
118. 线性流水线和非线性流水线
按流水线的各个功能段之间是否有反馈信号,流水线可分为线性流水线和非线性流水线。线性流水线中,从输入到输出,每个功能段只允许经过一次,不存在反馈回路。
非线性流水线存在反馈回路,从输入到输出的过程中,某些功能段将数次通过流水线,这种流水线适合进行先行地柜的运算。
119. 影响流水线性能的因素
1)资源冲突(结构相关)——由于多条指令在同一时刻争用同一资源而形成的冲突
解决办法:前一指令访存时,使后一条相关指令(及其后续指令)暂停一个时钟周期
单独设置数据存储器和指令存储器,使两项操作各自在不同的存储器中进行
2)数据冲突(数据冒险)——在一个程序中,下一条指令会用到这一条指令计算出的结果,此时这两条指令即为数据冒险。
解决办法:把遇到数据相关的指令及其后续指令都暂停一至几个时钟周期,直到数据相关问题消失后再继续执行。(如插入空指令NOP 或 硬件阻塞)
数据旁路技术:设置相关专用通路,也就是不等前一条指令把计算结果写回寄存器组,下一条指令也不再读寄存器组,而是直接把前一条指令的ALU的计算结果作为自己的输入数据开始计算过程,使得本来需要暂停的操作变得可以继续执行。
通过编译器对数据相关的指令编译优化的方法,调整指令顺序来解决数据相关
- 控制冲突(控制冒险)——一条指令要确定下一条指令的位置,例如在执行转移、调用、返回等指令时会改变PC值,而造成断流,会引起控制冒险
解决方法:对转移指令进行分支预测,尽早生成转移目标地址
预期转移成功和不成功两个控制流方向上的目标指令
加快和提前形成条件码
提高转移方向的猜测率
注意:Cache缺失的处理过程也会引起流水线阻塞。
120. 超标量流水线技术——每个时钟周期内可以并发多条独立指令
超流水线技术——在一个时钟周期内再分段
超长指令字——由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字,为此需要采用多个处理部件
121.三种方式判断循环队列已满/已空
浪费一个存储空间。判满:队尾指针的下一个位置是队头指针
即:(Q.rear+1)% MaxSize == Q.front
判空:Q.rear==Q.front
增加当前队列长度。判满:Q.size==Maxsize
判空:Q.size==0
增加tag表示最近的操作删除还是插入,只有删除才可能队空,只有插入才可能队满。
每次删除操作成功时,都令tag=0;每次插入操作成功时,都令tag=1;
判满:Q.front == Q.rear && tag==1
判空:Q.front == Q.rear && tag==0
122.树和森林的遍历与二叉树遍历的对应关系
树 | 森林 | 二叉树 |
先根遍历 | 先序遍历 | 先序遍历 |
后根遍历 | 中序遍历 | 中序遍历 |
记住:先先先,后中中。后是树
123红黑树的特点
124. 平衡二叉树的插入
1)LL——右旋
2)RR——左旋
3)LR——先左后右
4)RL——先右后左
125. 平衡二叉树的结点个数,深度,平均查找长度
假设n表示深度为h的平衡树中含有的最少结点数
那么,n0=0,n1=1,n2=2,n3=4
nh = n(h-1)+n(h-2)+1
含有n个结点的平衡二叉树的最大深度为O(log2N)
平衡二叉树的平均查找长度为O(log2N)
126. 哈夫曼树的定义
在含有n个带权叶节点的二叉树中,其中带权路径长度(WPL)最小的二叉树成为哈夫曼树,也称为最优二叉树。
带权路径长度WPL:从树的根到任意结点的路径长度(经过的边数)与该节点上的权值的乘积称为该结点的带权路径长度。树中所有叶节点的带权路径长度之和称为该树的带权路径长度
127. 哈夫曼树的特点:
a)每个初始结点都会成为叶子结点,且权值越小的结点到根节点的路径长度越大
b)哈夫曼树的结点总数为2n-1(n为初始结点数)
c)哈夫曼树中不存在度为1的结点
d)哈夫曼树不唯一,但WPL必然相同且最优
e)路径上不可能有相同权值的结点
128. 哈夫曼编码
对一哈夫曼树左0右1或者左1右0之后,每个叶子结点都有唯一对应的编码
129. 前缀编码
若没有一个编码是另一个编码的前缀,则称这样的编码为前缀编码
130. 图的遍历
广度优先遍历——辅助队列大小为O(V)或O(1),时间复杂度O(V²)或O(V+E)
深度优先遍历——辅助栈大小为O(V)或O(1),时间复杂度同上。
注:对无向图进行BFS/DFS遍历时,调用BFS/DFS函数的次数=连通分量数
131. 最小生成树和最短路径的区别
生成树:一个连通图的生成树包括图的所有顶点,并且只含尽可能少的边。对于生成树来说,若砍去它的一条边,则会使生成树变成非连通图;若给它增加一条边,则会形成图中的一条回路。
最小生成树:对于一个带权连通无向图,它的所有生成树中,边的权值之和最小的那一棵就是图的最小生成树。最小生成树可以用Prim算法或者Kruskal算法求解。Prim算法:每次将代价最小的新顶点纳入生成树。时间复杂度O(V²),适用于边稠密图。Kruskal算法:每次选择一条权值最小的边,原来连通的不选。时间复杂度O(E*LogE),适用于边稀疏图。
最短路径:从一个顶点到图中另一个顶点的一条路径所经过的边的权值之和,定义为该路径的带权路径长度,把带权路径长度最短的那条路径成为最短路径。有向图的最短路径问题可分为两类,一是单源最短路径,二是每对顶点间的最短路径。单源最短路径可以通过广度优先遍历(BFS)(适用于无权图)和Dijkstra(迪杰斯特拉)(不适用于权值为负的图)算法求解;每对顶点间的最短路径可通过Floyd(弗洛伊德)(不适用于有负权回路的图)算法来求解。
Dijkstra算法:两个辅助数组:dist[]记录从源点v0到其他各顶点当前的最短路径长度,path[]表示从源点到其他顶点之间的最短路径的前驱节点。Dijkstra算法是基于贪心策略的。
Floyd算法:两个数组,A[i][j]记录各顶点间的最短路径长度,path[i][j]记录两个顶点间的中转点。Floyd算法使用动态规划的思想,将问题的求解分为多个阶段。1)不允许在其他顶点中转,最短路径是?2)若允许在V0中转,最短路径是?3)若允许在V0、V1中转,最短路径是?。。。n+1)若允许在V0、V1、V2……Vn-1中转,最短路径是?比较时:
132. 拓扑序列?
当一个有向无环图的顶点组成的序列,满足下列条件时,成为该图的一个拓扑序列
每个顶点出现且只出现一次
若顶点A在序列中排在顶点B的前面,则在图中不存在从顶点B到顶点A的路径。
133. 关键路径?
从源点到汇点的所有路径中,具有最大路径长度的路径成为关键路径,关键路径上的活动称为关键活动
134. 查找?
线性结构:顺序查找、折半查找、分块查找
树形结构:二叉排序树、二叉平衡树、B树、B+树
散列机构:散列表
135. 排序?
插入排序(直接插入、折半插入、希尔排序),交换排序(冒泡排序,快速排序)
选择排序(简单选择排序,堆排序),归并排序,基数排序,多路归并排序(外部排序)
133. 奈奎斯特定理和香农定理
奈奎斯特定理指出在理想低通(没有噪声、带宽有限)的信道中,
极限数据传输率=2WlogV
香农定理指出了带宽受限且有高斯白噪声干扰的信道中,
极限数据传输率=Wlog(1+S/N)
134. 数字信号编码方式
归零编码 非归零编码 反向非归零编码 曼彻斯特编码 差分曼彻斯特编码
135. 数字信号调制为模拟信号
调幅 调频 调相
136. 电路交换、报文交换、分组交换的区别?
电路交换:在进行数据传输前,两个结点之间必须建立一条专用的物理通信路径,该路径可能经过许多中间结点。这一路径在整个数据传输期间一直被独占,直到通信结束后才被释放。电路交换技术可分为三个阶段:连接建立、数据传输、连接释放。当要传输的数据量很大而且传送时间远大于呼叫时间时,采用电路交换较为合适。
电路交换时,数据直达,不同类型,不同规格,不同速率的终端很难相互进行通信,也难以在通信过程中进行差错控制。
报文交换:数据交换的单位是报文,报文携带有目标地址、源地址等信息。报文交换在交换结点采用的是存储转发的传输方式,无需建立连接。
分组交换:同报文交换一样,分组交换也采用存储转发方式,但它限制了每次传送的数据块大小的上线,把大的数据块划分为合理的小数据块,再加上一些必要的控制信息(如源地址、目的地址、编号信息等),构成分组。网络结点根据控制信息把分组送到下一结点,下一结点收到分组后,暂时保存并排队等待传输,然后根据分组控制信息选择它的下一个节点,直到到达目的结点。
137. 数据报和虚电路的区别?
数据报方式:提供无连接的服务,每个分组必须携带源地址、目的地址和分组号,路由器根据分组的目的地址转发分组
虚电路方式:虚电路方式试图将数据报方式与电路交换方式结合起来,充分发挥两种方法的优点,以达到最佳的数据交换效果。在分组发送之前,要求在发送方和接收方建立一条逻辑上的虚电路,并且连接一旦建立,就固定了虚电路所对应的的物理路径。与电路交换类似,整个通信过程分为三个阶段:虚电路建立、数据传输、虚电路释放。虚电路方式提供面向连接的服务,同一报文的不同分组达到目的结点时有序。
138. 物理层接口的特性
机械特性 电气特性 功能特性 规程特性
139. 集线器、交换机、路由器的区别?
集线器工作在物理层,主要使用双绞线组建共享网络,半双工通信。它实质上是一个多端口的中继器,当集线器工作时,一个端口接收到数据信号后,由于信号在从端口到集线器的传输过程已有衰减,所以集线器便将该信号进行整形放大,使之恢复到发送时的状态,紧接着转发到所有处于工作状态的端口(除输入端口外)。集线器在网络中只起到信号放大和转发的作用,而不具备信号的定向传输能力。
交换机工作在数据链路层,它本质上是一个多端口的网桥,交换机的原理是,检测从以太端口来的数据帧的源MAC和目的MAC地址,然后与系统内部的动态查找表进行比较,若数据帧的源MAC不在查找表中,则将该帧的(MAC地址,端口)加入查找表;若数据帧的目的MAC地址不在查找表中,则广播该帧。
路由器工作在网络层,它是一种具有多个输入/输出端口的专用计算机,它有两个功能,一是分组转发,二是路由计算。其任务是连接不同的网络并完成路由转发。当源主机要向目的主机发送数据报时,路由器先检查源主机与目的主机是否连接在同一网络上。如果源主机和目的主机在同一网络上,那么直接交付而无须通过路由器。如果源主机和目标主机不在同一个网络上,那么路由器按照路由转发表指出的路由将数据报转发给下一个路由器,也就是间接交付。
140. 三种通信方式
单工:只支持数据在一个方向上传输
半双工:允许数据在两个方向传输,但在某一时刻只允许数据在一个方向上传输
全双工:允许数据在两个方向传输,在同一时刻数据在两个方向都可以传输,实现双向通信
141. 三种可靠传输机制(滑动窗口)
发送窗口 接收窗口
停止-等待协议 1 1
后退N帧GBN协议 2^n -1 1
选择重传SR协议 2^(n-1) 2^(n-1)
142. 信道划分介质访问控制的4种方式
频分多路复用 时分多路复用 波分多路复用 码分多路复用(共享频率+时间)
143. 随机访问介质访问控制
ALOHA协议 CSMA协议 CSMA/CD协议 CSMA/CA协议
144. 轮询访问介质访问控制
令牌传递协议——当环上的一个站希望传送帧时,必须等待令牌。一旦收到令牌,站点便可启动发送帧。站点在发送完一帧后,应释放令牌,以便让其他站使用。当计算机都不需要发送数据时,令牌就在环形网上游荡,而需要发送数据的计算机只有在拿到该令牌后才能发送数据帧,因此不会产生冲突(因为令牌只有一个)。
145. 交换机的两种交换模式
1)直通式交换机:只检查帧的目的地址。
2)存储转发交换机:先将接收到的帧缓存到高速缓存器中,并检查数据是否正确,确认无误后通过查找表将该帧转发出去。如果发现帧有错,就丢弃该帧。
146. 两种广域网数据链路层协议
PPP协议 不可靠 面向字节
HDLC协议 可靠 面向比特
147. 网桥的分类
透明网桥——不是最佳路由
源路由网桥——最佳路由
148. 网络层的功能
异构网络互联
路由与转发
拥塞控制
149. IP首部固定部分大小:20B。MAC帧(6B+6B+2B+数据+4B)以太网的数据部分46B~1500B。
150. ABCDE类地址。私有地址。
151. 网络地址转换NAT
NAT是指通过将专用网络地址转换为公有地址,从而对外隐藏内部管理的IP地址。它使得整个专用网只需要一个全球IP地址就可以与因特网连通。NAT路由器将私有地址转换为公有地址,或将公有地址转换成私有地址。
152. 使用子网掩码时路由器的分组转发算法:
153. 地址解析协议(ARP)——网络层协议,完成IP地址到MAC地址的映射
154. 动态主机配置协议(DHCP)——应用层协议,给主机动态分配IP地址
155. 网际控制报文协议(ICMP)——网络层协议,让主机或路由器报告差错和异常情况
156.内部网关协议和外部网关协议
内部:RIP(路由信息协议)——应用层协议,基于距离向量的路由算法,使用UDP传输数据,仅向自己相邻的路由器发送信息,选择跳数最少的路径
OSPF(开放最短路径优先协议)——网络层协议,基于链路状态的路由算法,使用IP传输数据,使用洪泛法向所有路由器发送信息,通过Dijkstra选择代价最低的路径
外部:BGP(边界网关协议)——应用层协议,基于路径向量的路由算法,使用TCP传输数据,选择较好(非最佳)的路径
157. 传输层的功能?
1)传输层提供进程之间的逻辑通信
2)复用和分用(复用指发送方不同的进程都可以使用同一个传输层协议传送数据,分用是指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的进程)
3)传输层还要对收到的报文进行差错检测
4)提供两种不同的传输协议,即TCP和UDP
158. 端口的作用?
端口是传输层服务访问点,它在传输层的作用类似于IP地址在网络层的作用或MAC地址在数据链路层的作用,只不过IP地址和MAC地址标识的是主机,而端口标识的是主机中的应用进程。端口能够让应用层的各种应用将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。
159. 端口号
端口号可以标识本计算机应用层的各进程。
服务端使用的端口号:0~1023,1024~49151
FTP:21 TELNET:23 SMTP:25 DNS:53 HTTP:80 SMTP:161
客户端使用的端口号:49152~65535
160.套接字
套接字=(主机IP地址,端口号)
它唯一标识网络中的一台主机和其上的一个应用进程
161. TCP和UDP的区别
TCP:面向连接,在传送数据之前必须要三次握手建立连接,数据传送结束后要四次握手释放连接,在数据传送时会有确认机制、重传机制、流量控制、拥塞控制。但是传输很慢。TCP首部20B。TCP是面向字节流的
UDP:无连接,不需要握手,没有各种确保数据可靠的机制,但是传输很快。UDP首部8B。UDP是面向数据报的。
162. 从用户输入一个网址到网页最终展现到用户面前,中间的大致流程总结如下:
1) 浏览器分析链接指向页面的URL(http://www.tsinghua.edu.cn/chn/index.html)
2) 浏览器向DNS请求解析www.tsinghua.edu.cn的IP地址,DNS解析出IP地址。
3) 浏览器与Web服务器建立TCP连接。
4) 浏览器向Web服务器发送相应的HTTP或HTTPS请求:GET/chn/index/html
5) Web服务器通过HTTP响应把文件index.html发送给浏览器
6)TCP连接释放
7) 浏览器解析HTML文件,并将Web页显示给用户
163. FTP文件传输协议
控制连接(端口号21)控制连接(端口号20)
164. 电子邮件
用户—SMTP—>发送端邮件服务器—SMTP—>接收端邮件服务器—POP3—>用户
用户—HTTP—>发送端邮件服务器—SMTP—>接收端邮件服务器—HTTP—>用户
165.
166. 使用TCP/UDP的协议
TCP:BGP、FTP、SMTP、POP3、HTTP(HTTP本身是无连接的)
UDP:DHCP、RIP、DNS
IP:ICMP、OSPF