面试知识点总结篇四
一、计算机网络
- 概念:互连的、自治的计算机系统的集合
- 组成:硬件、软件、协议。
- 功能组成:通信子网(物理层、数据链路层、网络层)、资源子网(会话层、表示层、应用层)
- 分别有广域网、城域网、局域网、个人局域网
- 交换技术:电路交换,分组交换、报文交换
- 性能指标
- 带宽(Bandwidth):最高数据传输速率,表示网络的通信线路所能传送数据的能力,单位是比特/秒(b/s)。
- 时延(Delay):指数据(一个报文或分组)从网络(或链路)的一端传送到另一端所需要的总时间。
- 综合七层和四层模型,分为五层:应用层、传输层、网络层、数据链路层、物理层
一、物理层
- 物理层的主要作用是确保原始数据可靠、准确地在物理网络上进行传输。
- 主要功能:数据传输、定义物理设备标准、同步、传输介质
- 定理:
-
奈奎斯特定理
理想低通信道下的极限数据传输速率 C = 2 W log 2 V bits per second (b/s) 理想低通信道下的极限数据传输速率C = 2W \log_2 V \text{ bits per second (b/s)} 理想低通信道下的极限数据传输速率C=2Wlog2V bits per second (b/s) -
和香农定理
信道的极限数据传输速率 C = W log 2 ( 1 + S N ) bits per second (b/s) 信道的极限数据传输速率C = W \log_2 \left(1 + \frac{S}{N}\right) \text{ bits per second (b/s)} 信道的极限数据传输速率C=Wlog2(1+NS) bits per second (b/s)
-
- 奈氏准则只考虑了带宽与极限码元传输速率的关系,而香农定理不仅考虑到了带宽,也考虑到了信噪比。这从另一个侧面表明,一个码元对应的二进制位数是有限的。
- 信息传输速率受到它们两个的限制
- 编码与调制
- 编码:把数据变换为数字信号的过程。(曼彻斯特编码)
- 调制:把数据变换为模拟信号的过程。(频移键控、相移键控)
- 模拟信号编码为数字信号:假设原始信号中的最大频率为f ff,那么采样频率f 必须大于或等于最大频率f的两倍,才能保证采样后的数字信号完整保留原始模拟信号的信息。
- 报文交换分为:数据报交换,虚电路交换。
- 物理层设备:中继器,集线器
- 中继器
- 主要功能是将信号整形并放大再转发出去
- 中继器两端的网络部分是网段,而不是子网,且有5-4-3原则
- 不能连接两个具有不同速率的局域网。
- 集线器:多端口的中继器,半双工状态
二、数据链路层
-
主要负责在两个相邻节点之间的物理连接上实现可靠的数据传输,确保数据的透明传输
-
核心功能:帧封装、链路管理、流量控制、差错控制、可靠传输
-
为网络层提供服务:无确认的无连接服务、有确认的无连接服务、有确认的面向连接服务。
-
MTU:最大传送单元,以太网是1500字节。
- 最小值:最小的数据字段长度是46字节。如果数据部分少于46字节,需要通过填充(padding)来达到这个最小长度,以确保整个帧的最小长度是64字节(不包括前导的帧间间隔)。
-
协议
- HDLC (High-Level Data Link Control) 高级数据链路控制
- 为点对点和点到多点连接提供可靠的有序数据传输。
- 为点对点和点到多点连接提供可靠的有序数据传输。
- 全双工传输:支持数据在两个方向上同时传输。
- PPP(Point-to-Point Protocol)点对点协议
- 两个点之间建立直接连接并传输数据包。
- 允许在同一链路上传输多种类型的数据。
- 只支持全双工链路。
- 常用于电话线和其他类型的串行通信链路。
- HDLC (High-Level Data Link Control) 高级数据链路控制
-
差错控制
- 主要有自动重传请求ARQ和前向纠错FEC。
- 自动重传请求ARQ :分为停止等待ARQ(单窗口)、连续ARQ(滑动窗口),是检错编码(奇偶校验码)
- 前向纠错FEC:通过在发送数据中添加冗余信息来实现的(如海明码)
- 主要有自动重传请求ARQ和前向纠错FEC。
-
滑动窗口
- 停止-等待协议:发送窗口大小=1,接收窗口大小=1。
- 后退N帧协议:发送窗口大小>1,接收窗口大小=1。
- 选择重传协议:发送窗口大小 > 1,接收窗口大小 > 1
-
可靠传输机制:确认、超时重传、自动重传请求
-
码分多路复用:既共享信道的频率,又共享时间。码分多址(CDMA)
-
随机访问介质控制协议: 争用型协议 ,胜利者通过争用获得信道,从而获得信息的发送权。将广播信道转化为点到点信道。
- 纯ALOHA协议:不监听信道,不按时间槽发送,随机重发。想发就发
- 时隙ALOHA协议:把时间分成若干个相同的时间片,所有用户在时间片开始时刻同步接入网络信道,若发生冲突,则必须等到下一个时间片开始时刻再发送。控制想发就发的随意性。
- CSMA:指的是每个站点在发送前都先监听一下共用信道
- 1-坚持 CSMA:坚持指的是对于监听信道忙之后的坚持。只要媒体空闲,站点就马上发送
- 非坚持CSMA:非坚持指的是对于监听信道忙之后就不继续监听。
- p-坚持 CSMA:P坚持指的是对于监听信道空闲的处理。概率1-p等待到下一个时间槽再传输。
- CSMA/CD 协议: 载波监听多路访问/碰撞检测(CSMA/CD)是CSMA的改进方案
- 先听后发,边听边发,冲突停发,随机重发
- 截断二进制指数规避算法,当重传达16次仍不能成功时,说明网络太拥挤
- 最小帧长=总线传播时延×数据传输速率×2
- 以太网采用
- CSMA/CD协议:采用碰撞避免机制,适合无线局域网,但是有隐蔽站的问题
- 令牌传递协议:在轮询访问中,用户不能随机地发送信息,而要通过一个集中控制的监控站,以循环方式轮询每个结点,再决定信道的分配。
- 令牌:一个特殊的MAC控制帧
-
以太网的MAC帧:MAC地址由6个字节组成,每个字节由两个十六进制数字(0-9,A-F)表示,共有12个十六进制数字,如06-EA-56-3B-4F-4D。高24位为厂商代码,低24位为生产序列号。
-
数据链路层设备:
- 网桥:
- 连接和分隔两个或多个网络段。
- 网桥有助于减少冲突域的大小。
- 网桥根据MAC帧的目的地址对帧进行转发和过滤。
- 局域网交换机
- 又称以太网交换机,以太网交换机实质上就是一个多端口的网桥
- 通常都工作在全双工方式。
- 自学习功能,交换机的过滤和转发借助于交换表(switch table)完成。
三、网络层
- 主要负责在多个不同网络间传输数据包,实现数据的源到目的地传输。
- 核心是路由和寻址
- 主要功能:
- 路由器主要完成两个功能:一是路由选择(确定哪一条路径);二是分组转发(当一个分组到达时所采取的动作)
- 路由算法和路由协议
- 静态路由算法(又称非自适应路由算法)。指由网络管理员手工配置的路由信息。
- 动态路由算法(又称自适应路由算法)。指路由器上的路由表项是通过相互连接的路由器之间彼此交换信息,然后按照一定的算法优化出来的。
- 常见的距离-向量路由算法是RIP算法,每个路由器定期与所有相邻路由器交换整个路由表,更新路由项。
- 典型的链路状态算法是OSPF算法。:向本自治系统中所有路由器发送信息(洪泛法)。
- 边界网关协议(Border Gateway Protocol,BGP)是不同自治系统的路由器之间交换路由信息的协议,是一种外部网关协议。IPv4有4个字节,共有四类。
- IP地址:在网络中标识设备的数字标记。IPv4有4个字节,共有四类。
- 本地回环地址:127.0.0.1,用于自我测试和系统内通信。
- 私有地址:有特定的地址块(如10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)被保留用于私有网络。
- 网络地址转换(NAT):指通过将专用网络地址(如Intranet)转换为公用地址(如Internet),从而对外隐藏内部管理的IP地址。有效地解决了IP地址不足的问题。
- 子网划分:从主机号借位作为子网号
- 子网中的主机号全0的地址为子网的网络号,主机号全1的地址为子网的广播地址
- 子网中的主机号为全0或全1的地址都不能被指派
- 子网掩码:为了告诉主机或路由器对网络进行了子网划分
I
P
地址
=
{
<
网络号
>
,
<
子网号
>
,
<
主机号
>
}
IP地址 = \{<网络号>, <子网号>, <主机号>\}
IP地址={<网络号>,<子网号>,<主机号>}
9. CIDR无分类域间路由(Classless Inter-Domain Routing)
CIDR表示法:IP地址
/
前缀长度
\text{CIDR表示法:} \text{IP地址}/\text{前缀长度}
CIDR表示法:IP地址/前缀长度
-
构成超网:将多个子网聚合成一个较大的子网,叫做构成超网,或路由聚合。
路由聚合示例: 192.168.0.0 / 22 可以表示 192.168.0.0 / 24 , 192.168.1.0 / 24 , 192.168.2.0 / 24 , 和 192.168.3.0 / 24 \text{路由聚合示例:} 192.168.0.0/22 \text{ 可以表示 } 192.168.0.0/24, 192.168.1.0/24, 192.168.2.0/24, \text{ 和 } 192.168.3.0/24 路由聚合示例:192.168.0.0/22 可以表示 192.168.0.0/24,192.168.1.0/24,192.168.2.0/24, 和 192.168.3.0/24 -
协议
- 地址解析协议(ARP):完成IP地址到MAC地址的映射。
- 动态主机配置协议(DHCP):用于给主机动态分配IP地址。广播方式
- 网际控制报文协议(ICMP):即ICMP差错报告报文和ICMP询问报文。(例如:终点不可达,时间超过)
- 逆ARP协议:完成MAC地址到IP地址的映射
- 网络层设备
- 路由器: 路由器是一种具有多个输入输出端口的专用计算机,其任务是连接不同的网络(连接异构网络)并完成路由转发。在多个逻辑网络(即多个广播域)互连时必须使用路由器。
- 可以隔开广播域
五、传输层
-
为网络中的两个主机提供端到端的通信服务。
-
主要协议:TCP /UDP 协议
-
主要功能:端到端通信、复用和分用、差错检测、流量控制、拥塞控制(仅限TCP)
-
端口号:端口号长度为16bit,能够表示65536(216)个不同的端口号。
- 只具有本地意义,即端口号只标识本计算机应用层中的各进程
- 熟知端口号0~1023。服务器端使用的端口号
应用程序 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP |
---|---|---|---|---|---|---|---|
端口号 | 21 | 23 | 25 | 53 | 69 | 80 | 161 |
- 登记端口号1024~49151。服务器端使用的端口号
- 客户端使用的端口号:数值为49152~65535,又称短暂端口号
- 套接字:端口号拼接到IP地址即构成套接字Socket。它唯一地标识网络中的一台主机和其上的一个应用(进程)。
套接字 S o c k e t = ( I P 地址:端口号 ) 套接字Socket = (IP地址:端口号) 套接字Socket=(IP地址:端口号) - UDP协议 用户数据报协议
- UDP是无连接的
- UDP使用最大努力交付
- UDP是面向报文的
- UDP无拥塞控制,适合很多实时应用。
- UDP支持一对一、一对多、多对一和多对多的交互通信。
- TCP协议
- TCP是面向连接(虚连接)的传输层协议
- 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的
- TCP 提供可靠交付的服务,保证传送的数据无差错、不丢失、不重复且有序
- TCP提供全双工通信,两端都有发送缓存和接受缓存。
- TCP是面向字节流的。
- 三次握手
- 第一次 SYN=1,seq=x
- 第二次SYN=1,ACK=1,seq=y,ack=x+1(可能遭受洪泛攻击)
- 第三次:ACK=1,seq=x+1,ack=y+1(这次可以附带数据)
- 服务器端的资源是在完成第二次握手时分配的,而客户端的资源是在完成第三次握手时分配的
- 四次挥手
- 第一次:FIN=1,seq=u
- 第二次:ACK=1,seq=v,ack=u+1(server)
- 第三次:FIN=1,ACK=1,seq=w,ack=u+1(server)
- 第四次 :ACK=1,seq=u+1,ack=w+1
- 流量控制
- 消除发送方(发送速率太快)使接收方缓存区溢出的可能性。
- 发送窗口=min(接收窗口,拥塞窗口)
- 在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小,即接收窗口rwnd(接收方设置确认报文段的窗口字段来将rwnd通知给发送方)
- 拥塞控制
- 拥塞控制是指防止过多的数据注入网络,保证网络中的路由器或链路不致过载,是全局性过程。
- 拥塞控制的4种算法:慢开始、拥塞避免、快重传和快恢复。
六、应用层
- 提供网络服务与用户应用软件之间的接口,允许应用软件利用网络中的数据
- 网络应用模型 C/S,P2P
- 域名系统
- 是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名(www.baidu.com)转换为便于机器处理的IP地址。
- DNS系统采用客户/服务器模型,其协议运行在UDP之上,使用53号端口。
- DNS分为3部分:层次域名空间、域名服务器和解析器。
- 根域名服务器->顶级域名服务器->授权域名服务器->本地域名服务器
- 查询方式:一般采用第二种迭代查询,避免顶级域名服务过载
- 文件传输协议(FTP)
- 文件传输协议(File Transfer Protocol,FTP)是因特网上使用得最广泛的文件传输协议。基于TCP,可靠传输。基于客户/服务器(C/S)的协议。
- FTP在工作时使用两个并行的TCP连接:一个是控制连接(服务器端口号21),一个是数据连接(服务器端口号20)。使用两个不同的端口号可以使协议更容易实现。控制连接始终保持;数据连接保持
- 主动模式PORT: 客户端连接到服务器的21端口
- 被动模式PASV:服务器在本地随机开放一个端口
- 电子邮件
- SMTP(简单邮件传输协议)
- 仅限于传送7位ASCII码,不能传送其他非英语国家的文字。
- POP3(邮局协议)
- POP3采用的是**“拉”(Pull)的通信方式,当用户读取邮件时,用户代理向邮件服务器发出请求,“拉”取用户邮箱中的邮件**。
- 万维网
- 万维网(World Wide Web,WWW)是一个分布式、联机式的信息存储空间,在这个空间中:一样有用的事物称为一样“资源”,并由一个全域“统一资源定位符”(URL)标识。这些资源通过超文本传输协议(HTTP)传送给使用者,而后者通过单击链接来获取资源。
- 核心
-
统一资源定位符(URL),一般形式如下( <端口>和<路径>有时可省略)
< 协议 > : / / < 主机 > : < 端口 > / < 路径 > <协议>://<主机>:<端口>/<路径> <协议>://<主机>:<端口>/<路径>
-
超文本传输协议(HTTP)
-
超文本标记语言(HTML)
-
- HTTP 协议
- HTTP是无连接的
- HTTP基于TCP连接,用来保证可靠传输,但本身是无连接的。也就是通信的双方在交换HTTP报文之前不需要先建立HTTP连接。
- HTTP是无状态的
- 同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。因为服务器并不记得曾经访问过的这个客户,也不记得为该客户曾经服务过多少次。
- 若要记住,则加上COOKie
- 连接方式
- 非持久连接:对于非持久连接,每个网页元素对象(如JPEG图形、Flash等)的传输都需要单独建立一个TCP连接。
- 持久连接:持久连接是指万维网服务器在发送响应后仍然保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求和响应报文。
- 非流水线方式:客户在收到前一个响应后才能发出下一个请求,服务器发送完一个对象后,其TCP连接就处于空闲状态,浪费了服务器资源。
- 流水线方式:客户每遇到一个对象引用就立即发出一个请求,因而客户可以逐个地连续发出对各个引用对象的请求。HTTP/1.1的默认方式。
操作系统OS
- 概念:控制和管理整个计算机系统的硬件和软件资源
- 合理地组织调度计算机的工作和资源的分配,提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件。
- 功能:处理机管理、内存管理、文件系统、设备管理
- 特征
- 并发(宏观上是同时发生的,但微观上是交替发生的)
- 共享:共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
- 互斥共享方式
- 同时共享方式
- 虚拟:虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。
- 异步:在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
- 并发和共享是操作系统两个最基本的特征,两者之间互为存在的条件
- 处理机,也称为中央处理单元(CPU),是计算机的核心组件,负责执行程序指令并进行数据处理。
- 包含:算术逻辑单元(ALU)和控制单元(CU)
- 向上层提供
- 命令接口
- 联机命令接口:即交互式命令接口,适用于分时或实时系统。
- 脱机命令接口:即批处理命令接口,适用于批处理系统
- 程序接口
- 程序接口由一组系统调用(也称广义指令)组成。
- 系统调用命令又称广义指令。
- GUl:图形化用户接口(Graphical User Interface)
- 用户可以使用形象的图形界面进行操作,而不再需要记忆复杂的命令、参数。
- 用户态和内核态
- 用户态:CPU处于用户态,此时CPU只能执行非特权指令。一般是用户自编程序
- 非特权指令:允许用户直接使用的指令,它不能直接访问系统中的软硬件资源。
- 内核态:CPU处于核心态,此时CPU可以执行特权指令,切换到用户态的指令也是特权指令。一般是操作系统内核程序。
- 特权指令:不允许用户直接使用的指令,如/O指令、置中断指令,存取用于内存保护的寄存器、送程序状态字到程序状态字寄存器等的指令。
- 用户态与内核态的相互切换
- 内核态---->用户态:通过执行特权指令(如修改程序状态字PSW),操作系统可以切换到用户态,允许用户程序运行。
- 用户态---->内核态:用户程序通过系统调用或访管指令(如int指令)请求操作系统服务,产生中断事件,系统从用户态切换到内核态,以便执行相关服务。
- 现代操作系统是靠中断驱动的软件
- 中断和异常
- 中断
- 由外部设备或硬件发出的信号,通知CPU需要处理的事件。
- 让操作系统内核强行夺回CPU的控制权。
- 使CPU从用户态变为内核态。
- 通过改变屏蔽字可以实现多重中断,从而使得中断处理更加灵活。
- 异常
- 异常是由程序内部事件引发的,通常是由错误或特定条件(如非法指令、除零错误、访问违规)引起的。
- 有故障、自陷、终止(硬件中断,CPU无法继续执行)
- 故障异常和自陷异常属于软件中断(程序性异常),终止异常和外部中断属于硬件中断。
- 异常不能被屏蔽,一旦出现,就应立即处理。
- Trap:通常与系统调用或自陷相关,返回的是第 i+1 条指令。
- Fault:与执行过程中出现的错误相关,通常会尝试重新执行第 i 条指令。
- 对中断和异常的具体处理过程由操作系统(和驱动程序)完成。
- 系统调用
- 系统调用是用户程序与操作系统内核之间的接口,用于请求操作系统提供的服务。
- 它允许用户程序安全地访问硬件资源和执行特权操作。
- 分类
- 设备管理
- 文件管理
- 进程控制
- 内存管理
- 涉及步骤
- 触发系统调用
- 参数传递
- 执行内核服务
- 返回结果
- 操作系统引导过程
1.加电自检(POST):计算机启动时,BIOS(基本输入输出系统)会进行硬件自检,确保所有硬件设备正常工作。
2.加载引导程序:完成自检后,BIOS会查找并加载启动设备(如硬盘、SSD)上的引导程序,通常是引导扇区(Boot Sector)中的引导扇区代码。
MBR(主引导记录)、PBR(分区引导记录)
BIOS从启动设备的第一个扇区(MBR)加载代码,MBR负责识别活动分区。
MBR代码找到活动分区后,加载该分区的第一个扇区(PBR),PBR包含了加载操作系统的具体代码。
3.引导加载程序:引导程序会加载操作系统内核到内存中。它可能会提供一个菜单,允许用户选择不同的操作系统或内核配置。
4.内核初始化:操作系统内核被加载后,开始初始化系统资源,包括内存管理、进程管理和设备驱动加载等。
5.启动系统进程:内核完成初始化后,创建系统进程(如init或systemd),并开始用户空间的初始化,最终启动用户界面。
- 操作系统最终被加载到 RAM 中。
- 虚拟机
- 使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器(Virtual Machine,VM),每个虚拟机器都可以独立运行一个操作系统。
- 分类
- 第一类虚拟机程序
- 第一类虚拟机管理程序就像一个操作系统,因为它是唯一一个运行在最高特权级的程序。
- 这些虚拟机是裸机硬件的精确复制品。
- 直接运行在硬件之上,能直接控制和分配物理资源
- 虚拟内核态:虚拟机作为用户态的一个进程运行,不允许执行敏感指令。然而,虚拟机上的操作系统认为自己运行在内核态(实际上不是),称为虚拟内核态。
- 第二类虚拟机程序
- 它是一个依赖于Windows、Linux等操作系统分配和调度资源的程序,很像一个普通的进程。如VMware Workstation。
- 运行在底层硬件上的操作系统称为宿主操作系统。
- 运行在虚拟机管理程序上的操作系统称为客户操作系统。
- 第一类虚拟机程序
一、进程控制
- 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
- 作业:用户向计算机提交的一项任务,是静态的,它通常是一个批处理程序或一个后台程序。
- 进程实体的组成
- 程序控制块PCB
- PCB是进程存在的唯一标志,当进程被创建时,操作系统为其创建PCB,当进程结束时,会回收其PCB。
- 进程标识符PID:唯一的、不重复
- 用户UID:
- 进程控制和管理信息
- 资源分配清单
- 处理机相关信息
- 程序段(指令序列)
- 数据段:运行过程中产生的各种数据
PCB 存于内存的内核区,注意内存的内核区和 OS 的内核态的区别,内核程序运行在内核态。
PCB 是给操作系统用的,程序段和数据段是给进程自己用的。
引入进程实体的概念后,可把进程定义为是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
- 进程的状态与切换
- 进程的控制就是实现进程状态的切换,通过原语实现。
- 低级通信方式:PV操作。高级通信方式:共享存储、消息传递、管道通信。
- 线程和多线程
- 线程可理解为轻量级进程,它是一个基本的CPU执行单元,也是程序执行流的最小单位。
- 引入进程的目的是更好地使多道程序并发执行,提高资源利用率和系统吞吐量
- 线程是处理机调度的单位
- 线程也有就绪、阻塞、运行三种基本状态
- 实现方式
- 用户级线程,用户级线程对操作系统透明。线程切换可以在用户态下即可完成
- 内核级线程,内核级线程的管理工作由操作系统内核完成。
- 当一个线程被阻塞后,别的线程还可以继续执行,并发能力强。
- 多线程模型
- 一对一模型:一个用户级线程映射到一个内核级线程
- 多对一模型:多个用户级线程映射到一个内核级线程。且一个进程只被分配一个内核级线程。
- 多对多模型:n用户及线程映射到m个内核级线程(n>=m)。每个用户进程对应m个内核级线程。
- 克服了多对一模型并发度不高的缺点(一个阻塞全体阻塞),又克服了一对一模型中一个用户进程占用太多内核级线程。
- 用户程序启动时,通常仅有一个称为“初始化线程”的线程正在执行,其主要功能是用于创建新线程。
- 线程创建函数执行完后,将返回一个线程标识符。
- 三层调度
- 高级调度(作业调度)
- 中级调度(内存调度),频率中等,挂起态→就绪态,阻塞挂起→阻塞态
- 低级调度(进程调度),进程调度是最基本的,不可或缺。频率最高,就绪态→运行态
- 调度算法
- 先来先服务(FCFS)
- 短作业优先(SJF),饥饿现象
- 高响应比优先(HRRN)
- 时间片轮转调度算法(RR)
- 优先级调度算法,可能导致饥饿
- 系统进程优先级高于用户进程
- 前台进程优先级高于后台进程
- 操作系统更偏好I/O型进程(或称I/O繁忙型进程)
- 临界区互斥的基本方法
- 软件实现方法
- 单标志法------>不遵循“空闲让进”
- 双标志先检查法------>不遵循"忙则等待
- 双标志后检查法------>不遵循“空闲让进、有限等待”
- Peterson算法------>不遵循“让权等待”
- 硬件实现方法
- 中断屏蔽方法
- 硬件指令法:TS指令,Swap指令
- 互斥锁
- 信号量
- 死锁: 在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象,就是“死锁”。
产生必要条件: 互斥资源、不可剥夺、请求和保持、循环等待
处理策略- 死锁预防。设置某些限制条件,破坏产生死锁的4个必要条件中的一个或几个。
- 避免死锁。在资源的动态分配过程中,用某种方法防止系统进入不安全状态。
- 银行家算法:: 在分配资源前,预先判断这次分配是否会导致系统进入不安全状态
- 死锁的检测及解除。无须采取任何限制性措施,允许进程在运行过程中发生死锁。通过系统的检测机构及时地检测出死锁的发生,然后采取某种措施解除死锁。
三、内存管理
-
负责高效、安全地分配、跟踪和回收计算机内存资源。
-
主要功能
- 内存空间的分配与回收
- 内存空间的扩充
- OS 利用虚拟内存技术或自动覆盖技术使得系统运行很大的程序,从逻辑上扩充内存。
- 地址转换
- 逻辑地址到物理地址的转换
- 内存保护
- 保证各进程在各自存储空间内运行,互不干扰。
- 在CPU中设置一对上、下限寄存器,存放用户作业在主存中的下限和上限地址,每当CPU要访问一个地址时,分别和两个寄存器的值相比,判断有无越界。
- 采用重定位寄存器(又称基地址寄存器)和界地址寄存器(又称限长寄存器)来实现这种保护。
-
连续分配管理方式:单一连续分配、固定分区分配、动态分区分配
- 固定分区会产生内部碎片,动态分区会产生外部碎片
-
基本分页存储管理
- 把主存空间划分为大小相等且固定的块,块相对较小,作为主存的基本单位。每个进程也以块为单位进行划分,进程在执行时,以块为单位逐个申请主存中的块空间。
-
基本分段式存储管理
- 分页管理方式是从计算机的角度考虑设计的,目的是提高内存的利用率,提升计算机的性能。分页通过硬件机制实现,对用户完全透明。
-
虚拟内存管理
- 局部性原理
- 时间局部性:程序中的某条指令一且执行,不久后该指令可能再次执行
- 空间局部性:一旦程序访问了某个存储单元,在不久后,其附近的存储单元也将被访问
- 硬件支持
- 一定容量的内存和外存。
- 页表机制(或段表机制),作为主要的数据结构。
- 中断机构,当用户程序要访问的部分尚未调入内存时,则产生中断。
- 地址变换机构,逻辑地址到物理地址的变换。
- 页面置换算法
- 访问的页面不在内存中而需将其调入,但内存已无空闲空间时,就需要从内存中调出一页程序或数据,送入磁盘的对换区,选择调出页面的算法就称为页面置换算法。
- 局部性原理
-
涉及硬件
- 内存管理单元MMU
- 硬盘驱动器或固态硬盘
- 处理器中的寄存器
- cache(L1,L2,L3)
四、文件管理
- 文件是以计算机硬盘为载体的存储在计算机上的信息集合,在用户进行的输入、输出中,以文件位基本单位。
- 文件控制块
- 文件控制块(FCB)是用来存放控制文件需要的各种信息的数据结构,以实现“按名存取"
- 文件的基本操作
- 打开文件表
- 创建文件(create系统调用)
- 删除文件(delete系统调用)
- 读文件(read系统调用)
- 写文件(write系统调用)
- 打开文件(open系统调用)
- 打开文件时并不会把文件数据直接读入内存。
- 关闭文件(close系统调用)
----------------还有很多
五、IO设备管理
- I/O设备是将数据输入到计算机中,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件。
- I/O接口(设备控制器)位于CPU与设备之间,它既要与CPU通信,又要与设备通信,还要具有按CPU发来的命令去控制设备工作的功能。
- I/O端口(具体的硬件地址)
- I/O端口是指设备控制器中可被CPU直接访问的寄存器,主要有以下三类寄存器
- 数据寄存器:实现CPU和外设之间的数据缓冲。
- 状态寄存器:获取执行结果和设备的状态信息,以让CPU知道是否准备好。
- 控制寄存器:由CPU写入,以便启动命令或更改设备模式。
- 独立编址:只有操作系统使用特殊的I/O指令才能访问端口。
- 统一编址:又称内存映射I/O,每个端口被分配唯一的内存地址。
- I/O控制方式
- 程序直接控制方式:计算机从外部设备读取的每个字,CPU需要对外设状态进行循环检查,直到确定该字已经在I/O控制器的数据寄存器中。
- 中断驱动方式:允许I/O设备主动打断CPU的运行并请求服务,从而"解放” CPU
- DMA方式:在I/O设备和内存之间开辟直接的数据交换通路,彻底“解放”CPU。
- 层次式结构的I/O软件:
- 用户层软件
- 实现了与用户交互的接口
- 用户层软件将用户请求翻译成格式化的I/O请求,并通过“系统调用”请求操作系统内核的服务
- 设备独立性软件
- 设备独立性软件,又称设备无关性软件。与设备的硬件特性无关的功能几乎都在这一层实现。
- 设备驱动程序
- 与硬件直接相关,负责具体实现系统对设备发出的操作指令,驱动I/O设备工作的驱动程序。
- 中断处理程序
- 当I/O任务完成时,I/O控制器会发送一个中断信号,系统会根据中断信号类型找到相应的中断处理程序并执行。
- 硬件
- 应用程序I/O接口
- 字符设备接口
- 字符设备是指数据的存取和传输是以字符为单位的设备,如键盘、打印机等。基本特征是传输速率较低、不可寻址,并且在输入输出时通常采用中断驱动方式。
- 块设备接口
- 块设备是指数据的存取和传输是以数据块为单位的设备,典型的块设备是磁盘。基本特征是传输速率较高、可寻址。磁盘设备的I/O常采用DMA方式。
- 网络设备接口
- 许多操作系统提供的网络I/O接口为网络套接字接口,套接字接口的系统调用使应用程序创建的本地套接字连接到远程应用程序创建的套接字,通过此连接发送和接收数据。
- 阻塞/非阻塞I/O
- 阻塞I/O:当用户进程调用I/O操作时,进程就被阻塞,需要等待I/O操作完成,进程才被唤醒继续执行。
- 非阻塞I/O:用户进程调用I/O操作时,不阻塞该进程,该I/O调用返回一个错误返回值,通常,进程需要通过轮询的方式来查询I/O操作是否完成。
三、计算机组成
- 基本结构:控制器、运算器、主存储器、输入/输出设备
- 冯诺依曼:以运算器为中心,提出了存储程序概念
- 现代计算机:以存储器为中心,CPU=计算器+控制器
- 主存储器的构成
- 存储体
- MAR:存储地址寄存器:位数反应了存储单元的最大个数(可扩充后)
- MDR:存储数据寄存器:位数就等于存储字长
- 计算机层次结构
应用程序层–>高级语言层–>汇编语言层–>操作系统层–>指令架构层–>微代码层–>硬件逻辑层 - 计算机性能指标
-
字长:机器字长是指计算机一次能够处理的数据的位数。它通常影响处理器的数据处理能力和效率。32位和64位是常见的字长,64位系统能够处理更大的数据量和内存地址。
-
总线宽度:数据总线一次能并行处理的最大信息位数。一般指运算器与存储器之间的数据总线的位数
-
主存容量:系统的RAM大小。
-
存储带宽:单位时间内与主存交换的二进制位数,通常以GB/s表示。
-
磁盘读写速度:硬盘或SSD的数据传输速率,通常以MB/s表示。
-
主频:CPU的时钟频率,以Hz表示。
- 主频的高低直接影响了CPU处理数据和执行指令的速度
- 每个时钟周期,CPU可以开始执行一个或多个指令的某个部分。因此,主频越高,CPU每秒可以执行的指令数就越多,理论上系统的响应速度和处理能力就越强。
- 它的倒数即为时钟周期。
-
时钟周期 (T):时钟震荡一次所需的时间,与主频相反。
-
外频:CPU与主板间同步的时钟频率。
-
倍频:主频与外频的比例。
-
CPI (Clock Cycles Per Instruction):执行一条指令需要的周期数。
-
MIPS (Million Instructions Per Second):每秒执行的百万条指令数。
-
FLOPS (Floating Point Operations Per Second):每秒浮点运算次数,常用于衡量科学计算性能。
存储系统
- 主存速度缓慢的原因:主存增速与CPU不同步,执行指令期间多次访问主存
- 存储体系结构化层次
- CPU – Cache1 – Cache2(解决速度)
- 主存 – 辅存(解决容量) - 存储体系结构化层次理论基础
- 时间局部性:程序体现为循环结构
- 空间局部性:程序体现为顺序结构
- 主存中的数据组织
- 存储字长:主存的一个存储单元所包含的二进制位数,目前大多数计算机主存按字节编址,主要由32位和64位
- 数据存储与边界的关系
- 按边界对齐的数据存储,未按边界对齐的数据存储
- 边界对齐与存储地址的关系:(32位为例)
双字长边界对齐:起始地址最末三位为000(8字节(双字长)整数倍)
单字长边界对齐:起始地址最末二位为00(4字节(单字长)整数倍)
半字长边界对齐:起始地址最末一位为0(2字节(半字长)整数倍) - 优点:提高访问速度,避免处理器异常
- 缺点:内存浪费
- 大端存储和小端存储
- 大端存储
- 在大端字节序中,最高位字节(高位字节)存储在内存的最低地址处,随后是下一个高位字节,以此类推。因此,最低位字节(低位字节)放在最高的地址处。
- 有时也被称为“网络字节序”
- 类似于正常书写的情况
如果有32位整数0x12345678
地址增加的方向 -->
低地址 ----------------------------------> 高地址
+------+------+------+------+
| 0x12 | 0x34 | 0x56 | 0x78 |
+------+------+------+------+
- 小端存储
- 多字节值的最低位字节存放在内存的最低地址,而最高位字节存放在内存的最高地址。
- 这种方式在许多现代计算机架构中比较常见,例如x86架构。
如果有32位整数0x12345678
地址增加的方向 -->
低地址 ----------------------------------> 高地址
+------+------+------+------+
| 0x78 | 0x56 | 0x34 | 0x12 |
+------+------+------+------+
- RAM存储器类别
- SRAM存储器:存取速度快,但集成度低,功耗大,做缓存(cache)
- 不需要刷新,数据存储在触发器(如双稳态电路)中。
- SRAM更昂贵且功耗相对较大。
- DRAM存储器:存取速度慢,但集成度高,功耗低,做主存
- DRAM刷新方式:集中刷新、分散刷新、异步刷新(最好)
- 主存容量的扩展
- 位扩展法:8K * 8位 --> 8K * 32位
- 字扩展法:8K * 8位 --> 32K * 8位
- 字位同时扩展法:8K * 8位 --> 32K * 32位
- cache(缓存)
- Cache工作的基本原理基于“局部性原理”
- 时间局部性:如果一个数据被访问,那么在不久的将来它很可能再次被访问。
- 空间局部性:如果一个数据被访问,那么它附近的数据很快也可能被访问。
- 工作过程
- 数据交换单位:CPU与Cache之间通常交换的是“字”(word),而Cache与主内存之间交换的是“块”(block或line)。
- 读操作
- 命中
- CPU可以直接从Cache读取数据,不必访问较慢的主内存。
- 不命中
- Cache将从主内存中加载包含所需数据的块,并将此数据提供给CPU。在这个过程中,旧的Cache数据可能被替换。
- 命中
- 写操作
- 写穿策略(Write-Through):对Cache的写入操作同时写入主内存
- 写回策略(Write-Back):对Cache的写入操作只修改Cache中的数据,不立即写入主内存。Cache中的数据只有在被替换出Cache时才会写回到主内存。
- 地址映射机制
- 相联存储器:它允许数据在缓存中的位置不是由绝对地址直接决定的,而是通过地址中的一部分(通常是Tag和Index)来定位。
- 三种映射方式
- 全相联(Fully Associative):任何一个主存块都可以放置到缓存中的任何一个行。(最好)
- 直接映射(Direct Mapped):主存块的位置直接决定其在缓存中的位置,通常使用模运算(内存块号 % 缓存行数)来确定。
- 组相联(Set Associative):将直接映射和全相联的优点结合起来,缓存分为几组,每组有多行。一个主存块可以放置在一组中的任何行,通常是通过(内存块号 % 组数)来确定组。
- 主存地址= 块地址+块内偏移地址
- cache行=主存块
- 替换算法
- 先进先出法-FIFO
- 最近最不经常使用法-LFU
- 近期最少使用法-LRU
- 随机替换法
- 虚拟存储器
- 解决主存容量不足,从而有效地管理更大的数据集和支持更多的同时运行的程序。
- 基本原理:虚拟存储器系统使用硬盘的一部分作为虚拟内存,以补充物理内存的不足。
- 关键机制
- 分页:将虚拟内存和物理内存划分为固定大小的块,称为“页”(通常大小为4KB或更大)。
- 页表(Page Table):用于记录虚拟页与物理页框之间的映射关系。每个进程都有自己的页表,页表通常存储在内存中,并通过内存管理单元(MMU)进行访问。
- 交换空间(Swap Space):当物理内存不足时,操作系统会将当前不活跃的内存页移出到硬盘上的交换空间,从而为需要即时访问的数据腾出空间。
- 关键机制
- 页式实现方式:MMU(Memory Management Unit) + 页表 + TLB(Transaction Lookaside Buffer:地址转换后备缓冲器)
- 工作过程
- 当程序访问的数据不在物理内存中时(即发生“缺页”),操作系统会进行以下操作
- 中断处理
- 选择牺牲页:操作系统选择一个内存中的页(称为牺牲页),将其写入磁盘的交换区
- 读取所需页
- 更新页表:更新页表以反映新的虚拟地址到物理地址的映射关系,并重启中断的指令。
- 当程序访问的数据不在物理内存中时(即发生“缺页”),操作系统会进行以下操作
- 页式转换过程:虚拟地址 = 虚拟页号 + 页内偏移 ==> 物理页号 + 页内偏移
指令系统
- 指令集:指令集(Instruction Set),全称指令集架构(Instruction Set Architecture, ISA),是定义一台计算机的所有指令的集合。
- 系列机:系列机指的是同一家公司在不同时间段根据同一指令集体系结构生产的一系列计算机。遵循同一指令集。如x86系列
- 兼容机:兼容机通常指不同公司生产的、能够执行同一指令集的计算机。
- 指令字长:计算机执行的单个指令的位数长度
- 影响因素
- 寻址能力
- 指令集复杂度
- 执行速度:等长指令比变长指令执行速度快。
- 如x86架构,采用变长指令集来提供广泛的功能和灵活的编程选项。
- 影响因素
- 指令分类
- 根据地址码字段个数分类的指令
- 零地址指令:不直接指向任何地址,通常操作隐含在指令中的数据或栈顶元素。
- 一地址指令:包含一个操作数地址,如简单的加载或存储操作。
- 二地址指令:包含两个操作数地址,通常一个用于源,一个用于目的地。
- 三地址指令:包含三个操作数地址,使得可以在一条指令中执行如A = B + C这样的操作。
- 根据指令功能分类的指令
- 传送指令:移动数据,如从寄存器到存储器或反之。
- 算术运算指令:执行基本算术操作,如加、减、乘、除等。
- 位运算指令:执行逻辑运算,如AND、OR、NOT、XOR等。
- 控制转移指令:改变程序执行的流程,如跳转、循环、分支和调用函数等。
- 根据地址码字段个数分类的指令
- 指令格式
指令格式 = 操作码 + 数据源 + 寻址方式 指令格式 = 操作码 + 数据源 + 寻址方式 指令格式=操作码+数据源+寻址方式 - 寻址方式
- 指令寻址方式:顺序寻址,跳跃寻址
- 操作数寻址方式:
- 立即数寻址:操作数直接嵌入在指令中,无需额外访问内存。
- 直接寻址:指令中包含操作数的内存地址。处理器直接使用这个地址访问内存中的数据。
- 间接寻址:指令指向一个寄存器或内存位置,该位置存储了最终操作数的地址。需要两次访问内存:一次获取地址,一次获取数据。可能有多次间接寻址的情况
----------------寄存器---------------------------------- - 寄存器寻址:操作数存储在CPU寄存器中。由于寄存器的访问速度非常快,这种寻址方式效率很高。
- 寄存器间接寻址:指令指向一个寄存器,寄存器中存储着操作数的内存地址。类似间接寻址,但使用寄存器来存储地址。
- 基址寻址:通过将基址寄存器的内容加上指令中给出的偏移量来确定操作数的地址。
- 数组和结构体的数据访问。
- 操作数地址 + 基址寄存器的值(一段程序中不变)
- 变址寻址:与基址寻址相似,但偏移量由另一个寄存器提供,该寄存器的值可以在运行时变化。
- 动态数组访问和循环结构中常用。
- 操作数地址 + 变址寄存器的值(随程序不断变化)
- 相对寻址:指令包含一个相对于程序计数器(PC)或其他寄存器的偏移量。
- 操作数地址 + 当前PC的值
- 在生成可重定位代码或进行条件分支时常用。
- 堆栈寻址:操作数在堆栈中。指令隐含地使用堆栈指针(如SP寄存器)来定位数据。
- 函数调用和返回,参数传递,局部变量存储等。
中央处理器CPU
- 如图
- 主要组成部分
- 控制单元(Control Unit, CU)
- 解释指令:从内存中取出指令,解码,然后执行。
- 控制系统总线:管理和控制数据和指令在CPU内部及外部组件之间的流动。
- 算术逻辑单元(Arithmetic Logic Unit, ALU)
- 执行所有的算术运算、逻辑运算、比较运算
- 寄存器
- 高速存储区域,存放即将被ALU处理的数据,或存储ALU处理过后的结果。
- 特定的寄存器具有特定用途,如PC寄存器
- 程序计数器(Program Counter, PC)
- 存储下一条将要执行的指令的内存地址。
- 内存管理单元(MMU)
- 管理内存地址转换和虚拟内存,实现内存保护和分段。
- 程序状态字(Program Status Word, PSW)
- 对于程序控制逻辑非常重要,因为它允许软件基于前一个操作的结果来决定下一步的行动。
- 数据通路
- 硬件组件及其连接的集合,这些组件和连接协同工作以执行指令集中定义的操作。
-
典型的指令周期
- 取指(Fetch)
- 译码(Decode)
- 执行(Execute)
- 访问内存(Memory Access)(如果需要)
- 写回(Write Back)
-
指令流水线
- 用于提高CPU的指令执行效率。
- 核心概念是并行处理。每条指令在不同的时钟周期内位于不同的流水线阶段。例如,当第一条指令处于执行阶段时,第二条指令可能已经在取指阶段,第三条指令可能在译码阶段。
- 流水线冒险与处理
- 结构冒险:由于多条指令竞争同一资源而形成的冲突
- 前一指令访存,后一相关指令暂停一时钟周期
- 分开Cache,设置指令Cache与数据Cache
- 数据冒险:下一条指令会用到前一条指令计算的结果会引发数据冲突
- 把遇到数据相关的指令及其后续指令都暂停⼀⾄⼏个时钟周期
- 数据旁路技术:直接将执⾏结果送到其他指令所需要的地⽅,使流⽔线不发⽣停顿,因此不会引起流⽔线堵塞
- 控制冒险:指令通常都是顺序执⾏的,但在遇到改变指令执⾏顺序的情况就会改变PC值会造成断流,从⽽引起控制冒险
- 分支预测
- 加快和提前形成条件码
- SISD,SIMD,MIMD的基本概念
- SISD (Single Instruction Stream, Single Data Stream) —— 单指令流单数据流
- ISD是最简单的计算机体系结构,它代表的是传统的顺序处理器。在这种架构中,处理器一次只能执行一条指令,并且只能操作一组数据。
- 每个时刻只有一条指令在执行。
- 指令只作用于一个数据集。
- SIMD (Single Instruction Stream, Multiple Data Stream) —— 单指令流多数据流
- 一条指令同时作用于多个数据集。
- 特别适合处理数据并行任务,如图像处理、矩阵运算等。
- 向量处理器是SIMD的变体,是⼀种实现了直接操作⼀维数组(向量)指令集的CPU
- MIMD (Multiple Instruction Stream, Multiple Data Stream) —— 多指令流多数据流
- 各处理器可以同时执行不同的指令。
- 每个处理器可以操作自己的数据集,不同的处理器之间任务独立。
- 微程序控制器概念表格
概念 | 解释 |
---|---|
微命令 | 控制器部件向执行部件发出的控制命令,是构成控制序列的最小单位。例如打开或者关闭控制门的电位信号。是各部件完成某个基本微操作的命令。 |
微操作 | 执行部件接受微命令后所进行的操作,和微操作是一一对应的。微命令是微操作的控制信号,微操作是微命令的执行过程,是执行部件中最基本的操作。 |
微指令 | 若干微命令的集合,存放在一个控制存储器中。在同一CPU周期内,并行执行的一组微命令称为一条微指令。 |
微周期 | 从读取一条微指令到执行完毕所需要的时间。 |
控制存储器 | 主要用于存储微程序,位于CPU内部,通常使用ROM。与存储数据和程序的主存储器(RAM)相对。 |
微程序 | 实现一条机器指令功能的微指令序列。 |
程序与微程序 | 程序由机器指令构成,存放于主存中并可改写;微程序由微指令构成,存放于控制存储器中,通常不可改写。微程序实现机器指令的功能。 |
- 包含与被包含关系
程序
└── 微程序(程序中每条机器指令对应一个微程序)
└── 微指令(微程序由多个微指令组成)
└── 微命令(每条微指令包含多个微命令)
└── 微操作(微命令对应一个具体的微操作)
总线
- 计算机系统中用于在各个部件之间传输数据、地址和控制信号的一组共享通信线路或通道。
- 总线连接CPU、内存、输入输出设备等不同的硬件设备,是它们之间进行通信的桥梁。
- 基本概念
- 数据总线 (Data Bus):用于在CPU、内存和外设之间传输数据。数据总线的宽度(即总线的位数)直接影响系统一次能传输的数据量。
- 一般是双向的,允许数据在设备之间传输。
- 地址总线 (Address Bus):
- 用于指定内存或输入输出设备的地址。通过地址总线,CPU可以确定要访问的内存单元或外设。
- 通常是单向的,从CPU向内存或外设发送地址信号。地址总线的宽度决定了系统能够寻址的内存空间大小。
- 控制总线 (Control Bus)
- 用于发送控制信号和时序信号,协调数据总线和地址总线的操作。控制信号如读/写信号、时钟信号、中断请求等。
- 控制总线是双向的,允许控制器和被控设备之间传递命令和状态信息。
- 常用的现代总线技术
- PCI (Peripheral Component Interconnect):常用于连接高速外设,如显卡、网卡等。
- 并行传输:PCI总线最早采用并行数据传输方式,使用多个数据线同时传输数据。
- 即插即用:PCI设备可以自动配置资源(如IRQ和I/O地址),用户无需手动设置。
- USB (Universal Serial Bus):用于连接各种外围设备,如鼠标、键盘、U盘等。
- 即插即用(Plug and Play):USB设备可以随时插拔,操作系统会自动识别和配置设备。
- 持热插拔:设备可以在系统运行时连接和断开,无需重新启动计算机。
- 数据传输与电源供应:USB接口可以同时进行数据传输和为设备供电,尤其是移动设备(如手机、U盘等)常通过USB接口进行充电。
- I2C 和 SPI:用于嵌入式系统中低速设备的连接,如传感器、存储器等。
- I2C
- I2C是一种多主设备、多从设备的串行通信协议,常用于嵌入式系统中设备之间的低速通信。
- 适用于芯片之间的短距离通信。
- 双线协议:I2C使用两条线进行通信,一条为数据线(SDA),另一条为时钟线(SCL)。
- 地址机制:I2C协议中的每个设备都有一个唯一的地址,主设备通过地址选择从设备。
- I2C协议常用于传感器、显示屏驱动、电源管理IC等低速设备之间的数据传输,尤其在嵌入式系统中广泛应用。
- SPI
- SPI是一种高速的全双工串行通信协议,常用于嵌入式系统中设备之间的短距离通信。它由摩托罗拉开发,常用于通信速度要求较高的场合。
- 四线协议:SPI使用四条线进行通信,包括数据输入(MOSI)、数据输出(MISO)、时钟(SCLK)和从设备选择(SS)。
- 主从架构:SPI协议通常是一对一通信,主设备通过选择线(SS)控制与哪个从设备进行通信。
- 全双工通信:SPI可以同时进行数据的发送和接收,传输效率高。
- 高传输速率:相比I2C,SPI的传输速率更高,可达几十Mbps。
- I2C
输入输出系统
- 组成
- 外设:输入输出设备的统称,如键盘、显示器、打印机、硬盘等,负责数据的输入和输出。
- 接口:用于连接主机和外设的硬件或软件组件,常见的有USB、SATA、PCI等接口,负责数据的转换和传输。
- 总线:在计算机系统中传输数据、地址和控制信号的通道,如数据总线、地址总线和控制总线。
- 管理软件:包括操作系统的I/O管理模块,如I/O调度、缓冲管理、中断处理等,协调硬件和软件之间的I/O操作。
- 基本功能
- 完成计算机内外的信息传递
- 保证CPU正确选择输入/输出设备
- 实现主机与外设的速度匹配
- 特点:异步性、实时性和设备无关性
- I/O系统性能:
- 存储I/O:与存储设备(如硬盘、SSD)相关的数据输入输出操作。
- 通信I/O:用于外设之间或网络之间的数据传输,涉及网络接口卡(NIC)等设备。
- 输入输出方式
- 无条件I/O方式
- CPU执行I/O指令时假设外设已经准备就绪,不查询外设状态。
- 缺点:外设速度通常较慢,无法总是准备好数据,导致操作失败或错误。
- 程序控制I/O方式
- CPU通过查询设备状态寄存器获取设备是否准备就绪,然后再决定是否进行I/O操作。
- 缺点:每次I/O操作CPU必须先查询设备状态,浪费了大量的时间和资源。数据传输必须经过CPU,增加了负担。
- 中断I/O方式
- 当外设准备好时,它主动向CPU发送中断信号,通知CPU进行数据接收或发送。CPU执行完当前指令后响应中断。
- 缺点:虽然减轻了CPU负担,但每次中断都会中止当前程序,导致额外的上下文切换开销。
- DMA方式
- 由DMA控制器直接完成数据传输,不需要通过CPU,DMA控制器在数据准备好时通知CPU,然后接管总线完成数据传输。
- DMA控制器虽然减少了CPU的负担,但仍需要占用总线,可能与CPU的内存访问产生冲突。