基本信息

内容简介
计算机书籍
国内大学计算机专业课程设置大都缺乏横向关联,学生很难对计算机系统形成完整的全面认识,为此,作者在研究国外一些顶尖大学课程体系以及总结多年在南京大学从事“计算机组成与系统结构”“计算机系统基础”课程教学经验的基础上编写了本教材。
本书主要介绍与计算机系统相关的核心概念,解释这些概念如何相互关联并最终影响程序执行的结果和性能。本书共分8章,主要内容包括数据的表示和运算、程序的转换及机器级表示、程序的链接、程序的执行、存储器层次结构、虚拟存储器、异常控制流和I/O操作的实现等。
本书将计算机系统每个抽象层涉及的重要概念通过程序的开发和运行串联起来,内容详尽,反映现实,概念清楚,通俗易懂,实例丰富,并提供大量典型习题供读者练习。本书可以作为计算机专业本科或大专院校学生计算机系统方面的基础性教材,也可以作为有关专业研究生或计算机技术人员的参考书。
作译者
目录
序 言
前 言
第一部分 系统概述和可执行目标文件的生成
第1章 计算机系统概述2
1.1 计算机基本工作原理2
1.1.1 冯·诺依曼结构基本思想2
1.1.2 冯·诺依曼机基本结构3
1.1.3 程序和指令的执行过程4
1.2 程序的开发与运行7
1.2.1 程序设计语言和翻译程序7
1.2.2 从源程序到可执行文件9
1.2.3 可执行文件的启动和执行10
1.3 计算机系统的层次结构12
1.3.1 计算机系统抽象层的转换12
1.3.2 计算机系统核心层之间的关联14
1.3.3 计算机系统的不同用户16
1.4 计算机系统性能评价18
1.4.1 计算机性能的定义19
1.4.2 计算机性能的测试19
前言
本书的主要目的就是为加强计算机专业学生的“系统观”而提供一本关于“计算机系统基础”课程教学的教材。
1.本书的写作思路和内容组织
本书从程序员视角出发,重点介绍应用程序员如何利用计算机系统相关知识来编写更有效的程序。本书以高级语言程序的开发和运行过程为主线,将该过程中每个环节所涉及的硬件和软件的基本概念关联起来,试图使读者建立一个完整的计算机系统层次结构框架,了解计算机系统的全貌和相关知识体系,初步理解计算机系统中的每一个抽象层及其相互转换关系,建立高级语言程序、ISA、OS、编译器、链接器等之间的相互关联;对指令在硬件上的执行过程和指令的底层硬件执行机制有一定的认识和理解,从而增强读者在程序的调试、性能优化、移植和健壮性保证等方面的能力,并为后续的“计算机组成与设计”“操作系统”“编译技术”“计算机体系结构”等课程打下坚实基础。
本书的具体内容包括:程序中处理的数据在机器中的表示和运算、程序中各类控制语句对应的机器级代码的结构、可执行目标代码的链接生成、可执行目标代码中的指令序列在机器上的执行过程、存储访问过程、打断程序正常执行的机制以及程序中的I/O操作功能如何通过请求操作系统内核提供的系统调用服务来完成等。
不管构建一个计算机系统的各类硬件和软件多么千差万别,计算机系统的构建原理以及在计算机系统上的程序转换和执行机理是相通的,因而,本书仅介绍一种特定计算机系统平台下的相关内容。本书所用的平台为IA-32/x86-64+Linux+GCC+C语言。
本书共有8章,分两个部分。第一部分主要是系统概要并介绍可执行目标文件的生成,包含第1~4章;第二部分主要介绍可执行目标文件的运行,包含第5~8章。第1章是计算机系统概述;第2章和第3章分别介绍高级语言程序中的数据和语句所对应的底层机器级表示,展示的是高级语言程序到机器级语言程序的对应转换关系;第4章主要介绍如何将不同的程序模块链接起来构成可执行目标文件,展示的是程序的链接环节;第5章和第6章着重介绍程序的运行环节,包括与程序运行密切相关的硬件部分——CPU及存储器的组织;第7章介绍打断程序正常运行的事件机制——异常控制流;第8章主要介绍程序中I/O操作的实现机制。此外,附录A中还补充了数字逻辑电路的基础内容,为那些没有数字逻辑电路基础知识的读者阅读本书提供方便。
2.读者所需的背景知识
本书假定读者对C语言程序设计有一定的基础,已经掌握了C语言的语法和各类控制语句、数据类型及其运算、各类表达式、函数调用和C语言的标准库函数等相关知识。
此外,本书对于程序中指令的执行过程进行了介绍,这涉及布尔代数、逻辑运算电路、存储部件等内容,因而,本书正文内容假定读者具有数字逻辑电路基础知识。不过,如果读者不具备这些背景知识的话,可以参看本书附录A。
本书所用的平台为IA-32/x86-64+Linux+GCC+C语言。书中大多数C语言程序对应的机器级表示都是基于IA-32+Linux平台用GCC编译器生成的,本书会在介绍程序的机器级表示之前,先简要介绍IA-32的指令集体系结构,包括其机器语言和汇编语言的介绍,因而,读者无须任何机器语言和汇编语言的背景知识。
XII3.使用本书作为教材的课程及教学建议
目前国内大学计算机专业课程设置,大多是按计算机系统层次结构进行横向切分,自下而上分解成数字逻辑电路、计算机组成原理、汇编程序设计、操作系统、编译原理、程序设计等课程,而且,每门课程都仅局限在本抽象层,相互之间几乎没有关联,因而学生对整个计算机系统的认识过程就像“瞎子摸象”一样,很难形成一个对完整计算机系统的全面认识。虽然国内有些高校也有计算机系统概论、计算机系统入门或导论之类的课程,但通常内容较广且结构较松散,基本上是计算机课程概论,因而很难使学生真正形成计算机系统层次结构整体框架。
笔者对美国几所顶级大学近年来相关课程体系进行了跟踪调查,发现他们都非常注重计算机系统能力的培养,都在讲完高层的编程语言及程序设计课程后开设一门关于计算机系统的基础课程,如MIT的6.004、UC-Berkeley的CS 61C、CMU的CS 213、斯坦福大学的CS 107等。这些课程在内容上特别注重计算机系统各抽象层的纵向关联,将高级语言程序、汇编语言程序、机器代码及其执行串联起来,为学生进一步学习后续相关课程打下坚实的基础。
本书在借鉴国外相关课程教学内容和相关教材的基础上编写,适合于在完成程序设计基础课程后进行学习。本书内容贯穿计算机系统各个抽象层,是关于计算机系统的最基础的内容,因而使用本书作为教材开设的课程适用于所有计算机相关专业。
使用本书作为教材开设的课程名称可以是“计算机系统基础”“计算机系统导论”或类似名称,可以有以下几种安排方案。
章号 内容 课程
① ② ③ ④ ⑤
1 计算机系统概述√√√√√
2数据的机器级表示与处理√√√√√
序言
随着移动互联网、普适计算、云计算和物联网的普及,计算机的应用已渗透到经济和社会生活的各个角落。各行各业的应用需求千差万别,要求未来的计算机性能更高、适应性更强、使用更方便、成本和功耗更低、安全性更好等等,但能从事这种创新设计的人才从哪里来?我国的计算机专业培养的毕业生能否担当起这一重任?计算机界的有识之士一直在思考这个影响长远发展的大事情。
李国杰院士是我国计算机界的老一辈科学家,在并行处理、计算机体系结构、人工智能、组合优化等方面成果卓著,荣获过多项国家级奖励,领导中科院计算所和曙光公司为发展我国高性能计算机产业、研制龙芯高性能通用CPU芯片做出了重要贡献,对国内计算机科技、教育和产业的发展也提出过有影响的政策建议。
计算机专业已为我国培养了大量有用人才,但随着其他专业的学生也普遍学习计算机课程,计算机专业似乎有点迷失了方向。社会上开始流行这样的说法:计算机本科学生的硬件设计能力不如电子工程专业,行业应用软件开发能力不如熟悉本行业的其他专业学生,问题分析和算法设计能力不如数学专业学生。有些高中毕业生报考大学时不愿意报考计算机专业,他们认为通信专业学的计算机课程甚至比计算机专业还多。这些现象迫使我们回答:究竟计算机专业的特征和强项是什么?
一言以蔽之,计算机专业的重要特征是“系统思维”。所谓“系统思维”是指对系统不同层次的抽象和归纳、对整机系统的性能分析和优化、对系统出现的各类错误的诊断和维护、对计算机技术发展趋势全局性的理解等等。其他专业学计算机知识是为了应用计算机技术解决不同领域的实际问题,而计算机专业的目标之一是培养能设计和制造计算机、在计算技术领域实现创新的人才,不只是培养会编程序的“码农”。计算机专业的学生应具有系统层面的理解能力,能站在系统的高度解决应用问题。总之,对计算机系统是否有较深入的了解是区别计算机专业人才和非专业人才的重要标志。
计算机是处理信息的复杂系统。但长期以来我们采用“解剖学”的思路进行计算机教学,按照硬件、软件、应用等分类横切成几门相对独立的课程,使得计算机系毕业的学生对整个计算机系统缺乏完整的理解。如果问已经学完全部课程的学生,从你在键盘上敲一个字母键到屏幕上出现一个字母,在这一瞬间计算机中哪些硬件和软件在运转,如何运转?可能绝大多数学生都讲不清楚。对于更复杂的一段应用程序,计算机内部究竟如何一步一步地实现,不但学生们感到茫然,估计能讲明白的老师也不太多。造成这种局面的原因是我们不重视“计算机系统”的教育,缺乏“系统”思维观念。我国计算机一级学科中,最薄弱的二级学科是计算机系统结构,计算机专业的大学生中有兴趣从事系统结构研究的学生也很少,这可能是我国计算机领域自主创新不足的重要原因。未来计算机应用的性能和满意度越来越依靠软硬件磨合、优化的程度,也就是说,掌握系统知识的人将越来越受重视。
目前国内大学的计算机专业课程,如数字逻辑电路、计算机组成原理、汇编程序设计、操作系统、编译原理、程序设计等,都局限在一个抽象层次,很少讲授层次之间的关联,缺乏全局观。虽然少数学校开设了“计算机系统概论”之类的课程,但多数是专业课程的粗浅介绍,还没有上升到“系统思维”的高度。
南京大学计算机系很重视计算机教学的改革,对美国麻省理工学院、加州大学伯克利分校、斯坦福大学、卡内基梅隆大学等著名大学与计算机系统有关的课程进行了深入的对比分析,找出了我国大学在课程设置和教学内容上的差距。他们将过去的“计算机系统概论”和“计算机组成与系统结构”两门课的内容重新组合,形成新的“计算机系统基础”和“计算机组成与设计”两门课,前者是全系学生的必修课。南京大学为提高学生计算机系统思维能力做了有益的尝试。
摆在读者面前的这本《计算机系统基础》是南京大学袁春风教授多年来致力于计算机教学改革的结晶。袁教授在计算机组成和系统结构的教学方面积累了丰富的经验,目前正在主持国家精品课程和国家级精品资源共享课“计算机组成原理”的教学工作,并主持完成了《计算机系统基础》教材的编写工作。这本教材通过讲解高级语言中数据、运算、过程调用和I/O操作等在计算机系统中的实现细节,使读者在学习时将程序设计、汇编语言、系统结构、操作系统、编译链接中关键的系统概念贯穿起来,真正明白计算机系统如何运转。这本教材是从程序员如何认识系统的角度编写的,书中通过解释计算机如何执行非常简单的一段打印“hello”的程序,让程序员理解与高级语言程序对应的机器行为,这是一种训练“系统思维”的好方式。我相信本书将为读者在软硬件磨合、性能调试优化、软件移植等方面打下更坚实的基础。
计算机教学的改革是一项需要付出艰苦努力的长期任务,“系统思维”能力的提高更是一件十分困难的事。计算机的教材还需要与时俱进,不断反映技术发展的最新成果。一本好的教材应能激发学生的好奇心和愿意终身为伴的激情。愿更多的学校参与到“计算机系统”教学的改革中来,愿这本教材在教学实践中不断完善,为我国培养从事系统级创新的计算机人才做出更大贡献。
是为序。
李国杰
丛书序言
——计算机专业学生系统能力培养和系统课程设置的研究未来的5~10年是中国实现工业化与信息化融合,利用信息技术与装备提高资源利用率、改造传统产业、优化经济结构、提高技术创新能力与现代管理水平的关键时期,而实现这一目标,对于高效利用计算系统的其他传统专业的专业人员需要了解和掌握计算思维,对于负责研发多种计算系统的计算机专业的专业人员则需要具备系统级的设计、实现和应用能力。
1.计算技术发展特点分析
进入21世纪以来,计算技术正在发生重要发展和变化,在20世纪个人机普及和Internet快速发展基础上,计算技术从初期的科学计算与信息处理进入了以移动互联、物物相联、云计算与大数据计算为主要特征的新型网络时代,在这一发展过程中,计算技术也呈现出以下新的系统形态和技术特征。
(1)四类新型计算系统
1)嵌入式计算系统在移动互联网、物联网、智能家电、三网融合等行业技术与产业发展中,嵌入式计算系统有着举足重轻和广泛的作用。例如,移动互联网中的移动智能终端、物联网中的汇聚节点、三网融合后的电视机顶盒等是复杂而新型的嵌入式计算系统;除此之外,新一代武器装备,工业化与信息化融合战略实施所推动的工业智能装备,其核心也是嵌入式计算系统。因此,嵌入式计算将成为新型计算系统的主要形态之一。在当今网络时代,嵌入式计算系统也日益呈现网络化的开放特点。
2)移动计算系统在移动互联网、物联网、智能家电以及新型装备中,均以移动通信网络为基础,在此基础上,移动计算成为关键技术。移动计算技术将使计算机或其他信息智能终端设备在无线环境下实现数据传输及资源共享,其核心技术涉及支持高性能、低功耗、无线连接和轻松移动的移动处理机及其软件技术。
3)并行计算系统随着半导体工艺技术的飞速进步和体系结构的不断发展,多核/众核处理机硬件日趋普及,使得昔日高端的并行计算呈现出普适化的发展趋势。多核技术就是在处理器上拥有两个或更多一样功能的处理器核心,即将数个物理处理器核心整合在一个内核中,数个处理器核心在共享芯片组存储界面的同时,可以完全独立地完成各自操作,从而能在平衡功耗的基础上极大地提高CPU性能。并行计算对计算系统微体系结构、系统软件与编程环境均有很大影响,同时,云计算也是建立在廉价服务器组成的大规模集群并行计算基础之上。因此,并行计算将成为各类计算系统的基础技术。
媒体评论
—— 中国工程院院士李国杰
本书在培养学生计算机系统能力方面的积极作用受到国内许多高校的认可,第2版修订广泛吸取了这些高校的反馈意见,并结合近年来计算机系统相关技术的变革,拓宽了领域知识的覆盖面,更加合理地构建了知识框架。
本书基于“IA-32+Linux+GCC+C语言”平台介绍计算机系统基础内容,通过讲解高级语言中的数据、运算、语句、过程调用和I/O操作等在计算机系统中的实现细节,使读者能够很好地将高级语言程序、汇编语言、编译和链接、组成原理、操作系统等相关的基础内容有机贯穿起来,以建立完整的计算机系统概念,从而能深刻理解计算机系统中各个抽象层之间的等价转换关系;同时,由于本书描述了高级语言程序对应的机器级行为,因此它可以为程序员解疑答惑,从而帮助程序员在了解程序的机器级行为的基础上编写出高效的程序,并在程序调试、性能提升、程序移植和保证健壮性等方面成为高手。
本书主要内容:
●计算机系统概述 ●数据的机器级表示与处理
●程序的转换及机器级表示 ●程序的链接
●程序的执行 ●层次结构存储系统
●异常控制流 ●I/O操作的实现
袁春风南京大学计算机科学与技术系教授。主要研究领域为大数据计算与并行处理技术、Web信息检索与文本挖掘技术等。在相关领域承担科研项目近40项,发表论文近70篇,两次获江苏省科技进步二等奖,并获江苏省优秀软件一等奖。主持的“计算机组成原理”和“计算机组成与系统结构”课程被遴选为国家级精品课程、国家级精品资源共享课、江苏省精品课程;主编的《计算机组成与系统结构》以及《计算机组成与系统结构习题解答与教学指导》获“十二五”普通高等教育国家级规划教材和江苏省精品教材;作为主要成员获2013年江苏省教学成果特等奖和2014年国家教学成果二等奖。“计算机系统基础(一):程序的表示、转换与链接”获国家精品在线开放课程,“计算机组成与系统结构”课程网站获江苏省优秀多媒体课件特等奖。
作者其它作品
计算机组成与系统结构习题解答与教学指导
- ¥29.00
- ¥24.65
- 计算机组成与系统结构