南 京 中 医 药 大 学
《微机系统》实验教学大纲
(适用于 计算机科学与技术 专业)
课程名称: 微机系统 英文名称:PC System
课程类别: 必修课 课程编码:080366
课程学分:3课程学时:72
开课单位:智信学院计算机教研室 实验室:B6实验室
实验项目数:11 课程负责人:王天舒
课程简介
课程介绍与计算机系统相关的重要知识,具体包括计算机系统的基本组成、指令集体系结构(ISA)、数据的机器级表示和处理、高级语言程序不同类型数据的机器级表示、高级语言程序各类运算、语句、过程调用的机器级表示和实现、可链接目标文件的结构和程序的链接、可执行目标文件的结构和程序的执行、层次结构存储系统、异常控制流、及I/O操作的实现等。同时本课程的实验独具特色,分三阶段,帮助学生深入理解计算机系统。
二、教学目标与基本要求
计算机专业学生的系统能力的核心是掌握计算机系统内部各软/硬件部分的关联关系与逻辑层次;了解计算系统呈现的外部特性以及人和物理世界的交互模式;在掌握基本系统原理的基础上,进一步掌握设计、实现计算机硬件、系统软件以及应用系统的综合能力。
课程适应“四类计算系统,四化主要特征”的计算技术发展特点,计算机专业人才培养必须“与时俱进”,体现计算技术与信息产业发展对学生系统能力培养的需求。在教育思想上,本课程力求突现系统观教育理念,在教学内容中体现新型计算系统原理,在实践环节上展现计算系统平台技术。
课程从系统观出发,教会学生怎样从系统的层面上思考(设计过程、工具、用户和物理环境的交互),讲透原理(基本原则、架构、协议、编译以及仿真等等),强化系统性的实践教学培养过程和内容,激发学生的辩证思考能力,帮助他们理解和掌控数字世界。
三、实验项目、内容与学时分配
实验项目
序号 | 实验项目名称 | 学时 | 内容提要 | 实验类型 |
演示性 | 验证性 | 综合性 | 设计性 | 研究性 |
1 | 程序验证性小实验 | 3 | [实验目的] 为了使学生加深对每个特定概念和知识点的理解 [实验内容] 设计和调试C语言程序 查看C语言程序执行结果 查看反汇编结果 [实验方法及原理] 在Windows和Linux两种开发环境下设计C语言程序、对程序进行调试,查看程序执行结果,并查看程序的反汇编结果。 |
| √ |
|
|
|
2 | 位运算 | 3 | [实验目的] 为了使学生更好地熟悉和掌握计算机中整数和浮点数的二进制编码表示。 [实验内容] 解开一系列编程“难题” [实验方法及原理] 实验环境为Linux,实验语言为C。实验中,学生需要解开一系列编程“难题”,使用有限类型和数量的运算操作实现一组给定功能的函数,在此过程中学生将加深对数据二进制编码表示的了解。 |
| √ |
|
|
|
3 | 二进制炸弹 | 3 | [实验目的] 使学生熟悉汇编语言及其机器码表示,熟悉GDB调试工具。 [实验内容] 本实验是一个过关游戏,共有6关+一个隐藏关卡。在一台Linux服务器上有一个可执行的炸弹文件,运行它游戏就开始了。每一关都会要求你输入密码,只有密码正确才能通过。 [实验方法及原理] 要求学生拆除一个“binary bombs”来增强对程序的机器级表示、汇编语言、调试器和逆向工程等方面原理与技能的掌握。为完成二进制拆弹任务,学生需要使用gdb调试器和objdump来反汇编炸弹的可执行文件并单步跟踪调试每一阶段的机器代码,从中理解每一汇编语言代码的行为或作用,进而设法推断拆除炸弹所需的目标字符串。 |
| √ |
|
|
|
4 | 缓冲区溢出 | 3 | [实验目的] 使学生加深对IA-32函数调用规则和栈结构的具体理解。 [实验内容] 对一个可执行程序“bufbomb”实施一系列缓冲区溢出攻击(buffer overflow attack),也就是设法通过造成缓冲区溢出来改变该可执行程序的运行内存映像。 [实验方法及原理] 实验环境为Linux,对一个可执行程序“bufbomb”实施一系列缓冲区溢出攻击,设法通过造成缓冲区溢出来改变该可执行程序的运行内存映像。 |
| √ |
|
|
|
5 | ELF格式与链接 | 3 | [实验目的] 使学生加深对程序链接的理解。 [实验内容] 修改和完善一个由多个模块组成的程序“linkbomb”,使其在运行时满足指定要求。 [实验方法及原理] 修改二进制可重定位目标文件(.o文件) 依照模块链接的需求,编写相应C语言程序模块,实现特定函数接口(基于从二进制目标模块中发现的接口函数调用形式) |
| √ |
|
|
|
6 | ELF加载与监控 | 3 | [实验目的] 考察学生对ELF加载、栈帧等知识的掌握情况,加深学生加深对ELF加载的理解。 [实验内容] 加载并执行静态链接的ELF程序。 [实验方法及原理] 在程序执行过程中随机注入段错误,要求打印出发生段错误时的函数调用链。 |
| √ |
|
|
|
7 | Cache模拟与性能 | 3 | [实验目的] 加深学生对Cache存储器的了解与认识。 [实验内容] 编写C程序来模拟Cache缓存的行为。 [实验方法及原理] 编写C程序来模拟Cache缓存的行为,并注入程序访存序列,要求学生实现不同的替换算法,并进行性能对比。 |
| √ |
|
|
|
8 | 代码劫持 | 3 | [实验目的] 综合考察学生对浮点数表示、函数调用、ELF格式、链接、虚拟地址空间等概念的掌握。 [实验内容] 实现浮点数定点化。 [实验方法及原理] 实现浮点数定点化,并通过自修改代码劫持printf的浮点数输出函数。 |
| √ |
|
|
|
9 | 小型判题系统 | 3 | [实验目的] 使学生从用户程序的角度了解程序的加载与执行、系统调用接口等概念,同时了解UNIX编程规范。 [实验内容] 模拟一个小型的在线判题系统。 [实验方法及原理] 通过fork-exec启动待测试程序,同时通过ptrace系统调用检查并拦截禁止待测试程序使用的系统调用。 |
| √ |
|
|
|
10 | 性能监控器 | 3 | [实验目的] 使学生理解Linux中“一切皆文件”的设计原则。 [实验内容] 性能监控器。 [实验方法及原理] 通过文件操作从procfs抓取系统性能等信息,包括CPU频率、内存使用情况、磁盘带宽等。 |
| √ |
|
|
|
11 | 简易调试器 | 3 | [实验目的] 加深学生对计算机基本工作过程、递归以及链表的理解。 [实验内容] 实现寄存器结构体。 实现表达式求职功能。 实现监视点。 [实验方法及原理] 通过实现存储器结构体、单步执行、打印寄存器、扫描内存功能,了解计算机的基本工作过程;通过实现表达式求职功能,复习递归;通过实现监视点,复习链表。 |
| √ |
|
|
|
四、教材及主要参考资料
1. 教材
[1]袁春风.《计算机系统基础(第二版)》,机械工业出版社,2019年11月
2. 参考资源
(1)电子资源
计算机系统基础慕课:https://www.bilibili.com/video/av69563153南京大学
计算机系统基础实验:https://www.bilibili.com/video/BV1GE411T7Qs?p=2
(2)参考书目
袁春风.计算机系统基础,机械工业出版社,2017-08.
兰德尔,大卫. 《深入理解计算机系统》,机械工业出版社,2017-11.