新書推薦:
《
炙野(全2册)
》
售價:NT$
356.0
《
女人的胜利
》
售價:NT$
254.0
《
数据有道:数据分析+图论与网络+微课+Python编程(鸢尾花数学大系:从加减乘除到机器学习)
》
售價:NT$
1214.0
《
500万次倾听:陪伤心的人聊聊
》
售價:NT$
245.0
《
英国商业500年(见证大国崛起与企业兴衰,启迪未来商业智慧。)
》
售價:NT$
367.0
《
万千心理·儿童心理治疗中的心智化:临床实践指导
》
售價:NT$
398.0
《
自我囚禁的人:完美主义的心理成因与自我松绑(破除你对完美主义的迷思,尝试打破自我评价过低与焦虑的恶性循环)
》
售價:NT$
301.0
《
周易
》
售價:NT$
203.0
|
內容簡介: |
与第1版相比,第2版有哪些变化?
1. 为了进一步降低汇编语言的学习门槛,新增了处理器工作原理的内容(第2章);
2. 修正了第1版中的错误和不严谨的表述;
3. 删除了第1版里的过时内容,比如任务门和因中断而发起的硬件任务切换;
4. 对硬件任务切换方面的内容做了削减,因为在现实中没有用,而且在64位处理器的IA-32e模式下已经不再支持;
5. 新增了在软件中自行执行任务切换的内容;
6. 优化了第1版里面的采用平坦内存模型的程序,证明平坦内存模型可以极大地简化编程工作;
7. 象流行的32位操作系统那样,通过中断实现系统调用;64位系统使用快速系统调用,将在我的下一本书中介绍。
8. 根据新的内容和章节组织,对配书代码做了相应的调整和修改。有读者反映配书工具无法在64位操作系统上运行,为此编写了64位的工具软件。
|
關於作者: |
李忠,主要出版著作《穿越计算机的迷雾》《x86汇编语言:从实模式到保护模式》《穿越计算机的迷雾(第2版)》《C语言非常道》等。
|
目錄:
|
第1部分 预备知识
第1章 十六进制计数法
第2章 计算机和汇编语言
第3章 分段机制和逻辑地址
第4章 汇编语言和汇编软件
第2部分 实模式
第5章 虚拟机的安装和使用
第6章 编写主引导扇区代码
第7章 相同的功能,不同的代码
第8章 比高斯更快的计算
第9章 硬盘和显卡的访问与控制
第10章 中断和动态时钟显示
第3部分 保护模式
第11章 32位x86处理器编程架构
第12章 进入保护模式
第13章 操作数和有效地址的尺寸
第14章 存储器的保护
第15章 程序的动态加载和执行
第16章 任务和特权级保护
第17章 协同式任务切换
第18章 中断和异常的处理与抢占式多任务
第19章 分页机制和动态页面分配
第20章 平坦内存模型和软件任务切换
|
內容試閱:
|
第2版前言
时间过得真快,从本书第1版面市至今,十多年嗖嗖过去了。当初写这本书完全是意气用事,年少轻狂,就是觉得我可以把汇编语言讲得更好,就单纯是为了改变汇编语言的教学现状和教学方法。在我看来,汇编语言不单是一门程序设计语言,学习汇编语言指令、掌握汇编语言程序设计的方法和技巧固然重要,但更重要的是,它是面向硬件的语言,天生是为了控制硬件的。因此,一本好的汇编语言教材一定不是单纯地介绍汇编语言本身,它必须是以如何控制处理器和其他外部硬件为主线的,在这个过程中引入汇编指令和硬件原理方面的内容,最终使读者对计算机工作原理的认识达到熟悉其脉络的程度。
以上就是创作本书的初衷。现在看来,这个目标基本上算是达成了。同时,我还有一个意外的收获,那就是,很多读者认为这本书有助于学习操作系统,认为它对理解操作系统非常有帮助,这也算是无心插柳吧。
为什么一本讲汇编语言的书反而成了操作系统课程的前导教材呢?其实仔细想想也不难理解。对于一台计算机来说,处理器是硬件的核心,而操作系统是软件的灵魂。因此,编写操作系统的人和设计处理器的人拥有共同的客户。为了拉住他们共同的客户,取得客户欢心,编写操作系统的人会给设计处理器的人提意见,告诉他们如何改进处理器的设计以方便操作系统和应用软件的开发。处理器的很多指令是为操作系统设计的,它的一些工作模式也是为了给操作系统提供支持,这一点在64位处理器上尤其明显。
基于以上原因,当一名作者以处理器的工作模式为主线,同时融入指令的功能、应用和设计思想而写出一本书时,甚至连他自己都可能惊奇地发现,他写的其实是一本和操作系统密切相关的书。
图书的内容是结构化的,是按照主题来组织和编排的,但如此一来就会失去学习和理解上的连贯性。为此,从2019年开始,我推出了与本书配套的视频课程。视频要求学习过程具有很强的连续性,且要求学习曲线更加平滑,而写书则没有这种压力。
图书出版的时间比较早,经过这么多年的沉淀,我自然会有一些新想法。尽管在视频课程里已经体现了这些想法,但图书的第2版也就此提上日程。经过一年多的努力,更新之后的第2版终于拿在你的手中,可喜可贺!
与第1版相比,第2版的变化不可谓不大,这首先体现在章节的组织上。第二版增加了新的章节,调整了章节的次序,有新的气象。当然,这只是表面上的变化,细节上的变化和调整就更多了,主要包括:
1. 为了进一步降低汇编语言的学习门槛,新增了处理器工作原理的内容(第2章);
2. 修正了第1版中的错误和不严谨的表述;
3. 删除了第1版里的过时内容,比如任务门和因中断而发起的硬件任务切换;
4. 对硬件任务切换方面的内容做了削减,因为在现实中没有用,而且在64位处理器的IA-32e模式下已经不再支持;
5. 新增了在软件中自行执行任务切换的内容;
6. 优化了第1版里面的采用平坦内存模型的程序,证明平坦内存模型可以极大地简化编程工作;
7. 象流行的32位操作系统那样,通过中断实现系统调用;64位系统使用快速系统调用,将在我的下一本书中介绍。
8. 根据新的内容和章节组织,对配书代码做了相应的调整和修改。有读者反映配书工具无法在64位操作系统上运行,为此编写了64位的工具软件。
本书第1版侧重于处理器架构、指令集、实地址模式、保护模式、中断、特权级、分段、分页、外围设备和操作系统原理等基础内容,并不包括多处理器、多任务、多线程、高级可编程中断控制器、原子操作、锁和线程同步方面的内容,尽管这些内容非常重要,时下非常流行。这与本书的定位有关,毕竟本书是面向X86体系结构和汇编语言的初学者。因此,第2版也不包括这些内容。
但是,这些内容又确实非常重要,而且在时下又非常流行,即使是用高级语言编写多处理器环境下的并发程序时,也可能需要了解这些知识。另外,在本书第1版面市时,虽然64位处理器已经问世多年,但并不普及,而且市面上流行的依然是32位操作系统,书中不包括这些内容情有可原。但是,仿佛是一夜间,整个市场迅速过渡到64位,64位处理器和64位操作系统大行其道。64位处理器引入了新的64位模式,可看成对保护模式的升级和简化,同时增加了新的特性,也是必须介绍的,这对于从底层理解64位系统和64位操作系统,是非常有必要的。
在本书第1版中,我曾经说还要写一个下册,不过一度没有进展。好的消息是这本书已经开始创作(目前还只是视频课程,图书稍晚一些),名字暂定为《基于X64架构的汇编语言和操作系统基础》,其内容填补了以上空白。尤其是用汇编语言来演示多处理器多线程,这还是非常罕见的。具体来说,这本新书包括以下内容:
1.与IA-32架构进行对比,介绍64位处理器的基本架构,包括寄存器的变化、指令集和工作模式的变化、系统表的变化、内存组织和内存访问模式的变化;
2.IA-32e模式的特点及如何进入IA-32e模式,重点介绍其64位子模式;
3.IA-32e模式的4级和5级分页;
4.IA-32e模式下的中断和异常处理;
5.64位模式下的单处理器多任务和任务切换;
6.64位模式下的多处理器管理和初始化,包括高级可编程中断控制器APIC;
7.64位模式下的多处理器多任务和任务切换;
8.64位模式下的多处理器多线程和线程切换;
9.高速缓存以及与多线程有关的原子操作、锁、线程同步,等等。
传统上,大家都是在流行的操作系统,比如Windows和Linux上编写并发程序的,而且只能使用高级语言。这使得多处理器环境下的多任务和多线程调度、原子操作、锁、线程同步等内容对很多人来说是笼统的、抽象的,像隔了层纱一样,看不见本质。相反地,如果用汇编语言实现一个简单的操作系统内核,并演示多处理器环境下的多任务、多线程、锁和线程同步,这是可能的吗?我相信没有人会觉得这是个简单的事情。但事实上,如果你想来一个简单的,其实也很容易,这本新书就能告诉你如何实现它。
在过去几年里的另一个变化是我有了自己的网站:http://www.lizhongc.com/,你可以到里面下载配书源码和工具,以及相关的资料。除此之外,我愿意在这个网站上发布自己的想法,也希望能在上面看到你的想法。
|
|