计算机系统基础(三):异常、中断和输入/输出
分享
课程详情
课程评价
spContent=在前两门课中你学习了可执行文件的生成、加载和执行。是否所有程序总能按部就班地正常执行到结束呢?如果发生了异常或者外部中断请求,该怎么办?键盘、磁盘等外设操作无法用一条指令完成,该怎么办?如果你想知道这些问题,就请参加“计算机系统基础(三):异常、中断和输入/输出”课程学习吧!
—— 课程团队
课程概述

本课程主要介绍可执行文件中的代码在执行过程中,如果发生了内部异常事件或外部中断请求,CPU如何进行异常/中断响应,以调出操作系统内核中的异常处理程序或中断服务程序执行,以及用户程序如何通过陷阱指令调出操作系统提供的系统调用服务例程来实现输入/输出操作。主要包括以下几个问题:

  1. 什么是进程的逻辑控制流?

  2. 为何会形成进程的异常控制流?

  3. 进程上下文切换如何形成异常控制流?

  4. 异常和中断如何形成异常控制流?

  5. IA-32/Linux如何进行异常/中断处理?

  6. 如何通过系统调用实现程序中的I/O操作?

  7. 外部设备如何与主机互连?

  8. 基本的输入/输出方式有哪几种?

  9. 内核空间I/O软件如何控制I/O硬件?

课程大纲

本课程学时共7周。

第一周 进程和进程的上下文切换

首先引入异常控制流的概念;然后介绍程序和进程之间的关系,以及进程的逻辑控制流;最后介绍形成异常控制流的原因以及进程的上下文切换如何形成异常控制流。为了更好地理解进程和进程上下文切换的概念,还将介绍用户模式和内核模式以及程序加载运行以形成进程的过程。

第二周 异常和中断

首先介绍异常和中断的基本概念,以及异常和中断如何形成异常控制流的原因;然后介绍了异常和中断的基本处理过程、三种异常(故障、陷阱和终止)类型、两种中断类型;最后介绍CPU响应异常/中断的基本过程。

第三周 IA-32中的异常/中断机制

首先分别介绍x86实地址模式和保护模式下的异常/中断机制,前者主要介绍中断向量表,后者主要介绍中断描述符表(IDT);然后介绍IA-32中异常/中断响应过程;最后介绍IA-32中异常/中断返回过程。

第四周 IA-32/Linux中异常/中断处理

首先介绍Linux中如何对中断描述符表(IDT)的初始化;然后介绍Linux中分别针对异常和中断进行的不同处理机制;最后介绍IA-32/Linux系统中的系统调用处理,包括陷阱指令int 0x80(软中断指令)的处理过程。

第五周 用户空间I/O软件

首先介绍I/O子系统概述以及用户I/O软件和系统调用之间的关联;然后介绍文件的基本概念和头文件stdio.h中关于文件缓冲区的相关内容;最后通过文件操作编程实例说明采用带缓冲的文件操作函数在效率上为何比不带缓冲的更高。

第六周 系统总线和系统互连

首先简要介绍系统总线及互连的基本概念;然后介绍总线的性能指标,包括处理器总线、存储器总线和I/O总线在内的三种系统总线的功能和组成,通过三种系统总线如何进行系统互连;最后介绍外设和外设控制器(也即I/O接口),以及外设如何通过I/O接口和I/O总线与主机相连。

第七周 I/O方式和内核空间I/O软件

系统控制外设进行输入/输出主要有程序查询、中断和直接存储器访问(DMA)三种方式。本周将主要介绍这三种方式,并对其进行比较;最后简要说明内核空间I/O软件的功能和结构,以及如何通过内核空间I/O软件控制I/O硬件。

预备知识

高级语言程序设计(最好有C语言程序设计的基础)

证书要求

1.最终成绩由小测验成绩和期末考试成绩两部分组成。

2.课程讲授共7周,每周对应一次小测验,每次小测验由若干道单选题构成,共70分。

3.期末考试占30分。

总成绩60分及以上合格,85分及以上优秀。

电子版的课程结业证书免费。纸质版认证证书收费:100/

参考资料

教材:袁春风. 计算机系统基础 [M]. 北京:机械工业出版社,2014(7-8两章)

参考书目:Randal E. Bryant, David R. O'Hallaron. 深入理解计算机系统(原书第3版)[M]. 龚奕利,贺莲译  北京:机械工业出版社,2016

常见问题

1.学习“计算机系统基础”系列课程时,最重要的学习方法是什么?

首先,不要死记硬背,关键是要不断将所学内容关联起来,以真正理解所学内容。

其次,要多动手实践。不明白的地方就编写一个程序,通过打印结果或利用gdb等调试工具查看机器级代码来分析。

此外,多提问和多参与讨论。真理越辩越明,在与他人的讨论过程中,往往会忽然开朗,有时,一个问题自己冥思苦想几天都想不明白,但实际上课程讨论区早就有人讨论过了,或者在讨论区一提问,马上就有人帮你解决了。

 

2.“计算机系统基础”系列课程属于硬件课程还是软件课程?

该系列课程涉及到其他很多课程,包括硬件课程和软件课程。它与高级语言程序设计、组成原理、汇编、编译、链接和操作系统等课程的内容有关。虽然涉及到很多其他课程的内容,但是,我们在本课程中只会讲解这些课程内容之间的关联,而不会讲解这些课程的细节内容,例如,本课程不会讲解如何实现编译器和如何实现操作系统。

 

 3.《计算机系统基础》系列一共包含几门慕课?

包含以下三门慕课:

1)计算机系统基础(一):程序的表示、转换与链接。

2)计算机系统基础(二):程序的执行和存储访问。

     (3)计算机系统基础(三):异常、中断和输入/输出。