研究生复试巩固计组
自己给自己出题目
参考《深入理解计算机系统》
★ 中断有几种
- 外中断: 由CPU 执行指令以外的事件引起
- I/O完成中断
- 时钟中断
- 控制台中断
- 异常(内中断):由 CPU 执行指令的内部件引起
- 非法操作码
- 地址越界
- 算术溢出
- 虚存缺页
- 陷入: 在用户程序中使用系统调用
- 除数为0
中断的过程,描述一下中断
- 中断隐指令(硬件完成)
- 关中断
- 保存断点
- 中断服务程序寻址
- 中断服务程序(软件完成)
- 保存现场和屏蔽字
- 开中断
- 执行中断服务程序
- 关中断
- 恢复现场和屏蔽字
- 开中断、中断返回
断点的概念
是程序中为了调试而故意停止或者暂停的地方
调试设置断点可以让程序执行到该行程序时停住,借此观察程序到断点位置时,其变量、寄存器、I/O等相关的变量内容,有助于深入了解程序运作的机制,发现、排除程序错误的根源
中断的类型
中断可以分为同步中断(synchronous)和异步中断(asynchronous)
中断可分为硬中断和软中断
中断可分为可屏蔽中断(Maskable interrupt)和非屏蔽中断(Nomaskable interrupt)
★ 中断向量(Vector)
定义:每个异常和中断的唯一标识号
中断描述符表IDT(Interrupt Descriptor Table)中的一个索引号
作用:快速定位一个异常或中断的处理程序的入口地址
中断向量表/中断描述符表IDT(Interrupt Descriptor Table)
将每个异常或中断向量分别与它们的处理程序联系起来
B/S和C/S的区别
B/S是C/S的子集,是一种特殊的C/S
C/S 架构也可以看作是肥胖的客户端架构。因为客户端需要实现绝大多数的业务逻辑和界面展示。在这种架构中,客户端的部分压力很大,因为包含了显示逻辑和事务处理,通过与数据库交互来满足实际的项目需求,来实现持久化的数据
优点:
- C/S架构的接口和操作可以很丰富
- 安全性可以很容易保证多层认证的实施并不难
- 响应更快,因为只有一层交互。
缺点:
- 应用范围窄,一般用于局域网
- 需要安装后才能使用
- 维护成本高,发生升级,所有客户端程序都需要改变
B/S主要的事务逻辑是在服务端实现的,是轻瘦的客户端框架,无需特殊安装,只需一个Web浏览器即可
优点:
- 客户端不需要安装,有网页浏览器
- B/S架构可以直接放在WAN上,通过一定程度的权限控制,达到多客户接入、强交互的目的
- B/S架构升级服务器,无需升级多个客户端
缺点:
- B/S 架构在浏览器中并不令人满意
- 性能要达到C/S架构的程度需要付出很大的努力。
- 速度和安全性需要花费巨大的设计成本,这是B/S架构的最大问题。
★ CPU与外设交换方式/通信方式,其中输入输出处理机的方式和其作用再哪些地方
-
程序直接查询
轮询 CPU频繁干预 串行 每次读/写一个字
适用:单片机
-
中断驱动
可并行 每次读/写一个字
- CPU每个指令周期末尾检查中断
- 中断处理过程要保存、恢复进程运行环境
适用:随机出现的服务
-
直接内存访问(DMA)(完全硬件)
每次读/写一个块
- CPU仅在传送一个或多个块的开始和结束干预
- 每次读写只能是连续的多个块且这些块读入内存后在内存中也必须是连续的
- 需要CPU控制传输的数据块大小、传输的内存位置
适用:内存和高速外围设备之间大批数据交换的场合
-
通道(输入输出处理机)
实现对外围设备的统一管理和外围设备与内存之间的数据传送每次读/写一组数据块
通道与CPU共享内存
传输的数据块大小、传输的内存位置,由通道控制- 开始:CPU->I/O通道:I/O指令
- 结束:I/O通道->CPU:中断请求
-
外围处理机
是通道方式的进一步发展
基本独立于主机工作
南桥北桥
北桥 | 南桥 |
---|---|
北桥位于主板的北面 | 南桥位于主板PCI总线的南端 |
北桥直接连接CPU | 南桥通过北桥连接到CPU |
管理 CPU 和主板其他部分之间的通信 | 管理输入和输出功能 |
北桥靠近处理器放置,方便访问 | 南桥位于 PCI 附近 |
北桥通信速度更快 | 南桥通信较慢 |
北桥的其他名称包括内存控制器集线器、主机桥 | IO Controller Hub 是南桥的别称 |
北桥是内存控制的枢纽 | 南桥是输入和输出功能的枢纽 |
北桥连接像 AGP 总线一样工作速度更快的总线 | 南桥连接像 ISA 一样工作速度较慢的总线 |
北桥看起来更大 | 南桥看起来更小 |
北桥连接 RAM、AGP 等组件 | 南桥连接 PCI、USB 等组件 |
cache有几种映射方式
-
直接映射
标记 Cache行号 块内地址 -
全相联映射
| 标记 | 块内地址
|–|–|–| -
组相联映射
标记 组号 块内地址
cache是什么,为很么要采用cache,原理是什么
-
是CPU和主存之间的一个高速缓冲存储器,一般由SRAM构成
-
为了弥补CPU与主存速度上的差异,提高CPU访问主存的平均速度
-
原理:
-
时间局部性
程序在运行时,最近刚刚被引用过的一个内存位置容易再次被引用
-
空间局部性
最近引用过的内存位置以及其周边的内存位置容易再次被使用
例子:
数组求和,sum有较好的时间局部性,数组元素有较好的空间局部性 -
CPU有几种设计方式
-
冯·诺依曼结构 (Intel,ARM7,MIPS)
-
程序和数据共同存储在同一个存储器
因此程序指令和数据的宽度相同
-
一套地址总线与数据总线
-
存储器瓶颈
高速运行时,不能达到同时取指令和取操作数
-
-
哈佛结构 (ARM9、10,51单片机)
-
程序和数据分开存储:两个存储器
-
两套地址总线与数据总线
-
指令和数据宽度可以不同
每个存储器独立编址、独立访问,目的是为了减轻程序运行时的访存瓶颈。
-
补充
现代很多CPU:改进型哈佛结构,两者结合
多处理器设计:
- 单指令单数据流(SISD):教科书上研究对象
- 单指令流多数据流(SIMD):for循环处理数组
- 变种:向量处理器:数值模拟
- 多指令流单数据流(MISD):不存在
- 多指令流多数据流(MIMD):共享存储器
并行通信和串行通信
串行通信 | 并行通信 |
---|---|
通过通信通道或计算机总线依次发送一位数据的过程 | 在具有多个并行通道或计算机总线的链路上作为一个整体发送多个位的过程 |
使用单个链路发送数据 | 使用多条链路传输数据 |
短距离和低频慢但远距离和高频更高 | 短距离和低频速度快,但远距离和高频速度较慢 |
误差和噪声最小 | 误差和噪音很高 |
简单明了 | 不可靠且复杂 |
成本相对较低 | 成本比较高 |
什么是RISC和CISC,他们的区别和特点
-
精简指令集架构 (RISC)
主要思想:几个基本步骤组成的指令集来简化硬件,用于load、evaluate和store操作,就同加载命令一样加载数据,同存储命令一样存储数据 -
复杂指令集架构(CISC)——
主要思想:一条指令将执行所有load、evaluate和store操作,就像乘法命令将执行加载数据、评估和存储数据等操作一样,因此它很复杂。
两种方法都试图提高 CPU 性能
-
RISC:
- 减少:每条指令的周期
- 费用:每个程序的指令数增加
-
CISC:
- 减少:每个程序的指令数
- 费用:每条指令的周期数增加
RISC CISC 专注于软件 专注于硬件 仅使用硬连线控制单元 使用硬连线和微程序控制单元 晶体管用于更多的寄存器 晶体管用于存储复杂指令 固定大小的指令 可变大小指令 只能执行寄存器到寄存器的算术操作 可以执行 寄存器 到 寄存器 或 寄存器 到 内存 或 内存 到 内存 代码量很大 代码量小 需要较多数量的寄存器 需要较少的寄存器 在单个时钟周期内执行的指令 指令需要超过一个时钟周期 指令为一个字 指令大于一个字的大小
并行接口和串行接口
简述处理机管理
进程控制
进程通信
处理机调度
进程同步
死锁处理
- 进程控制
- 状态:创建、就绪、运行、阻塞、结束
- 控制:创建、终止、阻塞、唤醒、切换
- 组织:进程控制块PCB、程序段、数据段
- 进程通信
- 共享内存区、消息传递、管道通信、共享文件
- 处理机调度
- 概念、三级调度:作业调度、中级调度、进程调度
- 调度方式:剥夺式、非剥夺式
- 调度准测:CPU利用率、吞吐量、周转时间、等待时间、响应时间
- 算法:FCFS、SFS、优先级、高相应比优先、时间片轮转、多级反馈队列
- 进程同步
- 概念:临界资源、同步、互斥
- 实现方法:单标志法、双标志法先检查、双标志法后检查、Peterson’s 中断屏蔽、硬件指令
- 信号量:整型、记录型
- 经典问题:生产者-消费者、读者-写者、哲学家进餐、吸烟者
- 死锁处理
- 定义:
- 原因:系统资源竞争、进程推进顺序非法
- 条件:互斥、不可剥夺、请求且保持、循环且等待
- 策略:死锁预防(破坏条件)、死锁避免(系统安全状态,银行家算法)、死锁检测与解除 (资源分配图、死锁定理,资源剥夺、撤销进程、进程回退)
简述文件管理
文件和文件系统
文件的结构和存取
文件目录管理
文件存储空间管理
文件共享和文件保护
磁盘调度
- 文件和文件系统
- 文件的结构和存取
- 逻辑结构
- 无结构文件
- 有结构文件
- 顺序文件
- 索引文件
- 索引顺序文件(类似B+树)
- 直接文件
- 物理结构
- 连续文件
- 链接文件(隐式,显式)
- 索引文件
- 单级索引
- 多级索引
- 混合索引
- 逻辑结构
- 文件目录管理
- 文件控制块
- 索引节点
- 单级/多级(树形)目录结构
- 文件存储空间管理
- 空闲表法
- 空闲块链表
- 位示图
- 成组链接法
- 文件共享和文件保护
- 硬链接(基于索引节点)
- 软链接(符号链接)
- 文件属性(可读可写可执行)
- 文件类型(普通、目录、符号链接、字符设备、块设备、socket,管道)
- 文件备份
- 访问控制矩阵
- 访问控制表
- 用户权限表
- 磁盘调度
- 数据组织和格式
- 磁盘访问时间(寻道、旋转、传输)
- 磁盘调度算法
- 先来先服务
- 最短寻道优先
- SCAN/CSCAN
- LOOK/CLOOK
介绍一下实时操作系统和分时操作系统
- 分时系统:
一台主机连接多个终端,同时允许多个用户通过自己的终端,以交互的方式使用计算机,共享主机中的资源的系统。这种切换非常快,以便用户可以在每个程序运行时移动它,而不知道系统正在共享。 - 实时系统:系统能及时响应外部事件请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行
主要区别
- 分时系统:响应是在一秒钟内提供给用户
- 实时系统:响应在时间限制内提供给用户
实时系统 | 分时系统 |
---|---|
及时性更强 | |
交互性最强 | |
可靠性更强 | |
实时操作系统使用户能够确定任务的优先级,以便最关键的任务可以在需要时始终控制流程 | 在分时系统中,高优先级的任务会被低优先级的任务抢占,从而无法保证关键应用程序的响应时间 |
说一下并行和串行
- 并行:两个或多个事件在同一时刻同时发生
- 串行:有且只有一个事件在同一时刻发生,后面的事件必须等待前面的事件执行完毕
同步的四个条件
- 空闲让进:临界区空闲,请求的进程立即进入
- 忙则等待:已有进入,则必须等待
- 有限等待:保证等待有限时间内进入临界区
- 让权等待:不能进去时,立即释放处理器,防止忙等
Python Java C++
C++ | JAVA | PYTHON |
---|---|---|
编译的编程语言 | 编译的编程语言 | 解释性编程语言 |
支持运算符重载 | 不支持运算符重载 | 支持运算符重载 |
提供单继承和多继承 | 使用接口提供部分多重继承 | 提供单继承和多继承 |
平台相关 | 平台无关 | 平台无关 |
不支持线程 | 有内置多线程支持 | 支持多线程 |
库支持数量有限 | 具有对 UI 等许多概念的库支持 | 拥有大量的库,使其适用于人工智能、数据科学等。 |
代码长度稍微少一点,是 java.lang. 的 1.5 倍 | Java 有相当庞大的代码 | 代码长度更小,比java少3-4倍。 |
函数和变量在类外使用 | 每一段代码都在一个类中 | 函数和变量也可以在类外声明和使用 |
C++程序是一种快速编译的编程语言 | Java 程序编译器比 C++ 慢一点 | 由于使用解释器执行速度较慢 |
严格使用语法规范 | 严格使用语法规范 | 用于 ; 不是强制性的。 |
(有误) 什么是内组件、什么是外组件
- 进程内组件指DLL在客户程序的进程空间内运行,从你调用组件的时候起,DLL开始存在内存中,当客户端程序终止时,DLL也结束
- 进程外组件在客户程序的外部进程空间运行!当客户端程序终止时,DLL不结束,它所在进程与客户进程不相关!他由服务器决定