mirror of
https://github.com/JackeyLea/NJUCS.git
synced 2026-02-02 17:49:08 +08:00
148 lines
10 KiB
Plaintext
148 lines
10 KiB
Plaintext
《计算机系统基础》教学大纲及班级周历
|
||
|
||
|
||
课程名:
|
||
计算机系统基础
|
||
|
||
|
||
英文名:
|
||
Introduction to Computer Systems
|
||
|
||
|
||
先修课程:
|
||
数字逻辑电路、C语言程序设计
|
||
|
||
|
||
建议教材:
|
||
《计算机系统基础》,袁春风,机械工业出版社,2014.6
|
||
|
||
|
||
参考资料:
|
||
《深入理解计算机系统》(第2版),Randal E. Bryant, david R. O’Hallaron著,龚奕利,雷迎春译,机械工业出版社,2011 年
|
||
The C Programming Language ( second Edition),Brian W. Kernighan, Dennis M. Ritchie, ,北京:机械工业出版社,2006
|
||
《计算机系统概论》(原书第2版),Yale N. Patt, Sanjay J. Patel著,梁阿磊,蒋兴昌,林凌译,机械工业出版社,2007年
|
||
|
||
|
||
|
||
教学内容:
|
||
第1章 计算机系统概述(2学时)
|
||
“计算机系统基础”课程的由来、“计算机系统基础”课程内容概要、硬件和软件的基本组成、
|
||
程序的开发和执行过程、计算机系统层次结构、计算机性能评价
|
||
|
||
第2章 数据的机器级表示与基本运算(6学时+4学时)
|
||
第一讲:数值数据的表示(2学时)
|
||
定点数的编码表示、无符号整数和带符号整数的表示、浮点数的表示、C语言程序的整数类型和浮点数类型
|
||
第二讲:非数值数据的表示及数据的存储(1学时)
|
||
逻辑值、西文字符、汉字字符、数据宽度单位、数据在寄存器和存储器中的存放、大端/小端、对齐
|
||
第三讲:数据的运算及基本运算电路(3学时)
|
||
按位运算和逻辑运算、移位运算、位扩展和位截断运算、无符号和带符号整数的加减运算、无符号和带符号整数的乘除运算、变量与常数之间的乘除运算、浮点数的加减乘除运算
|
||
本章习题与实验(4学时)
|
||
|
||
第3章 程序的转换及机器级表示(10学时+6学时)
|
||
第一讲:IA-32指令系统概述(2学时)
|
||
程序转换概述、数据类型及其格式、寄存器组织与寻址方式、传送指令、定点算术运算指令、按位运算指令、控制转移指令、x87浮点处理指令、MMX/SSE指令集
|
||
第二讲:C语言程序的机器级表示-1(2学时)
|
||
过程调用的机器级表示概述、IA-32中用于过程调用的指令、过程调用的执行步骤、IA-32的寄存器使用约定、IA-32的栈、栈帧及其结构、按值传递参数和按地址传递参数、递归过程调用
|
||
第三讲:C语言程序的机器级表示-2(2学时)
|
||
选择语句的机器级表示概述、if ~ else语句的机器级表示、条件运算表达式的机器级表示、switch语句的机器级表示;循环结构的机器级表示概述、do~while循环的机器级表示、while循环的机器级表示、while循环的机器级表示
|
||
第四讲:复杂数据类型的分配和访问(2学时)
|
||
数组元素在存储空间的存放和访问、数组的存储分配和初始化、数组与指针、指针数组和多维数组、结构体成员在存储空间的存放和访问、结构体数据作为入口参数、联合体数据的分配和访问、数据的对齐
|
||
第五讲:越界访问和缓冲区溢出(1学时)
|
||
第六讲:兼容IA-32的64位系统(1学时)
|
||
本章习题与实验(6学时)
|
||
|
||
第4章 程序的链接(6学时+4学时)
|
||
第一讲:目标文件格式(2学时)
|
||
程序的链接概述、链接的意义与过程、ELF目标文件格式、重定位目标文件格式、可执行目标文件格式
|
||
第二讲:符号解析与重定位(2学时)
|
||
符号和符号表、符号解析、与静态库的链接、重定位信息、重定位过程、可执行文件的加载
|
||
第三讲:动态链接(2学时)
|
||
动态链接的特性、程序加载时的动态链接、程序运行时的动态链接、动态链接举例
|
||
本章习题与实验(4学时)
|
||
|
||
第5章 程序的执行(4学时+2学时)
|
||
第一讲:程序与指令的执行(2学时)
|
||
程序及指令的执行过程、CPU的基本功能和组成、打断程序正常执行的事件、数据通路的基本结构和工作原理
|
||
第二讲:指令的流水线执行方式(2学时)
|
||
指令流水线的基本原理、适合流水线的指令集特征、CISC和RISC风格指令集、指令流水线的实现、高级流水线实现技术
|
||
本章习题(2学时)
|
||
|
||
第6章 层次结构存储系统(12学时+8学时)
|
||
第一讲:存储器概述(1学时)
|
||
存储器分类、主存的组成与基本操作、存储器的主要性能指标、各类存储元件的特点、存储器的层次结构
|
||
第二讲:主存与CPU的链接及其读写(1学时)
|
||
主存模块与CPU之间的连接、主存模块的读写操作、Load指令和Store指令的操作过程
|
||
第三讲:磁盘存储器(2学时)
|
||
磁盘存储器的结构、磁盘存储器的性能指标、磁盘存储器的连接、固态硬盘
|
||
第四讲:高速缓冲存储器-1(2学时)
|
||
程序访问的局部性、cache基本工作原理、cache行与主存块的映射
|
||
第五讲:高速缓冲存储器-2(2学时)
|
||
cache中主存块的替换算法、cache一致性问题、影响cache性能的因素、IA-32的cache结构举例、cache和程序性能
|
||
第六讲:虚拟存储器(2学时)
|
||
基本概念、虚拟地址空间、分页方式、页表、逻辑地址向物理地址的转换、快表(TLB)、分段、段页式、存储保护
|
||
第七讲:IA-32/Linux中的地址转换(2学时)
|
||
段选择符和段寄存器、段描述符、描述符表、用户不可见寄存器、逻辑地址向线性地址转换、线性地址向物理地址转换
|
||
本章习题与实验(8学时)
|
||
|
||
第7章 异常和中断(6学时+4学时)
|
||
第一讲:进程与进程的上下文切换(2学时)
|
||
程序的进程的概念、进程的逻辑控制流、进程的上下文切换、进程的私有地址空间、程序的加载和运行
|
||
第二讲:异常和中断(2学时)
|
||
基本概念、异常的分类、中断的分类、异常和中断的响应过程
|
||
第三讲:IA-32/Linux平台中的异常和中断(2学时)
|
||
中断向量表、中断描述符表、IA-32中异常和中断的处理、Linux对异常和中断的处理、IA-32/Linux的系统调用
|
||
本章习题与实验(4学时)
|
||
|
||
第8章 I/O操作的实现(8学时+4学时)
|
||
第一讲:I/O子系统概述(1学时)
|
||
第二讲:用户空间I/O软件(2学时)
|
||
用户程序中的I/O函数、文件的基本概念、系统级I/O函数、C标准I/O库函数、用户程序中的I/O请求
|
||
第三讲:I/O硬件与软件之间的接口(2学时)
|
||
I/O设备、设备控制器、I/O端口及其编址、I/O控制方式
|
||
第四讲:内核空间I/O软件(2学时)
|
||
与设备无关的I/O软件、设备驱动程序、中断服务程序、再谈hello程序的整个运行过程
|
||
本章习题与实验、总复习(4学时)
|
||
|
||
|
||
|
||
英文简介:
|
||
本课程的内容主要包含三个主题:(1)表示。主要包括:不同数据类型(如带符号整数、无符号整数、浮点数、数组、结构等)的数据在寄存器或存储器中如何表示和存储、指令的表示和编码、存储地址(指针)的表示以及复杂数据结构中数据元素的地址的表示。(2)转换。主要包括:高级语言程序与机器级代码的对应关系。(3)执行控制流。主要包括:机器级代码的执行流程、特别是指令执行过程中的访存过程、逻辑控制流中的异常事件及其处理、I/O操作的执行控制流(如何从用户态转入内核态执行)。
|
||
本课程主要介绍高级语言程序中的数据类型及其运算、语句和过程调用等是如何在计算机系统中实现的,从宏观上介绍计算机系统涉及到的各个层次。主要内容包括:数据的机器级表示和基本运算、程序的转换及机器级表示、程序的链接、程序和指令的底层执行机制、存储器层次结构、Cache、虚拟存储器、异常和中断、I/O操作的实现机制等。
|
||
|
||
|
||
|
||
教学目标:
|
||
使学生能从程序员角度认识计算机系统,能够建立高级语言程序、ISA、OS、编译器、链接器等之间的相互关联,对指令在硬件上的执行过程和指令的底层硬件执行机制有一定的认识和理解,从而增强学生在程序调试、性能提升、程序移植和健壮性等方面的能力,并为后续的“计算机组成与设计”、“操作系统”、“编译技术”、“计算机体系结构”等课程打下坚实基础。
|
||
学完本课程后,学生应对以下问题有比较深刻的认识:
|
||
程序中处理的数据在机器中如何表示和运算?
|
||
程序中各类控制语句对应的机器级代码结构是怎样的?
|
||
多个程序模块是如何链接起来形成可执行目标文件的?
|
||
机器级代码及构成机器级代码的指令是如何在机器上执行的?
|
||
指令执行过程中最重要的存储访问操作是如何进行的?
|
||
操作系统内核是如何打断应用程序的正常执行的?
|
||
程序中I/O操作功能是如何通过请求操作系统内核提供的系统调用服务来完成的?
|
||
|
||
|
||
|
||
--------------------------------------------------------------------------------
|
||
|
||
教学周历:
|
||
周次 教学内容 教师 授课方式 备注
|
||
1 计算机系统概述数据的表示 路通 课堂教学
|
||
2 数据的表示、存储和运算 苏丰 课堂教学
|
||
3 IA-32指令系统概述 路通 课堂教学
|
||
4 过程调用的机器级表示 苏丰 课堂教学
|
||
5 选择和循环的机器级表示、复杂数据类型的分配和访问 路通 课堂教学
|
||
6 缓冲区溢出、x86-64架构 苏丰 课堂教学
|
||
7 目标文件格式、符号解析与重定位 路通 课堂教学
|
||
8 动态链接 苏丰 课堂教学
|
||
9 程序与指令的执行 路通 课堂教学
|
||
10 存储器概述和主存组织、磁盘存储器 苏丰 课堂教学
|
||
11 高速缓冲存储器 路通 课堂教学
|
||
12 虚拟存储器 苏丰 课堂教学
|
||
13 IA-32/Linux中的地址转换 路通 课堂教学
|
||
14 异常和中断、进程上下文切换 苏丰 课堂教学
|
||
15 IA-32/Linux的异常和中断 路通 课堂教学
|
||
16 I/O子系统、用户/内核空间I/O软件 苏丰 课堂教学
|
||
17 I/O硬件与软件之间的接口 路通 课堂教学
|