本章介绍了全书涉及的重要概念的相关知识。在深入主要章节之前,建议你先阅读该部分内容。
2.1 干嘛要在意?
自1970年起,Unix编程模型就已经以某种形式存在了。当时,Unix在贝尔实验室闪亮问世,随之一起诞生的还有C程序设计语言,或曰C程序设计框架。在随后的数十载中,作为一款可靠、安全和稳定的操作系统,Unix经受住了时间的考验。
Unix编程理念及技术并非一时之风,亦不是新近流行的编程语言。它们已超越了编程语言。无论你是使用C、C++、Ruby、Python、JavaScript、Haskell,还是自己钟意的其他语言,这些技术都有用武之地。
Unix编程模型已经存在了数十载之久,且大部分都没有改变。过去40年里,聪慧的程序员们一直在Unix编程模型中借助多种编程语言来解决各类难题,在接下来的10年里,他们仍将一如既往。
2.2 驾驭神力!
现在我要提醒你,本书所讲述的概念和技术将赐予你强大的力量。有了它,你能够编写出新的软件,理解现有的复杂软件,甚至能将你的职业生涯提升到新的高度。
请记住:能力越大,责任也越大。在阅读的过程中,我会详细告诉你如何获取这种能力,并避开各种陷阱。
2.3 概述
本书并非参考手册,它更像是一份攻略。因为每一章内容都是基于之前的章节,所以为了最有效地利用本书,你应该按章节顺序逐一读下去。读完全书后,你可以利用章节名来查找有关信息,温故而知新。
书中包含了大量的代码示例。我强烈建议你在Ruby解释器中逐一运行这些代码。自己动手调试有助于更深入地理解概念。
一旦读完全书并把玩过那些示例,你肯定想要接触一些更具深度的实际项目。那时,你可以看看书中提到的Spyglass项目。
Spyglass是一个专门为本书编写的Web服务器,旨在传授Unix编程概念。它采用了你在这里学习到的各种概念,并展示了如何将其应用于真实的项目之中。有关详细介绍请参阅本书最后一章。
2.4 系统调用
要理解系统调用,首先需要了解Unix系统的组成,具体来说就是用户空间(userland)和内核。
Unix系统内核位于计算机硬件之上,它是与硬件交互的中介。这些交互包括通过文件系统进行读/写、在网络上发送数据、分配内存,以及通过扬声器播放音频。鉴于它这些强大的能力,程序不可以直接访问内核,所有的通信都是通过系统调用来完成的。
系统调用为内核和用户空间搭建了桥梁。它规定了程序与计算机硬件之间所允许发生的一切交互。
所有的程序都运行在用户空间。就算是不借助系统调用,你的用户空间程序仍旧能做不少事情:数学运算、字符串操作,以及使用逻辑语句控制程序流程。不过我敢说,如果你打算让程序做些有意思的事情,那就还是得通过系统调用来使用内核。
如果你是一名C程序员,那么这些内容你可能已经驾轻就熟了。系统调用可谓是C编程的核心。
我估计你像我一样毫无C编程经验。你学习的是高级语言编程。在你学会将数据写入文件系统的时候,对于使用了哪些系统调用却并不知情。
总的来说,系统调用允许你的用户空间程序通过内核间接地与计算机硬件进行交互。在本书接下来的章节中,我们会考查一些常见的系统调用。
其实这是一本电子书,是由国人翻译而来,在我看了前几章之后感觉这本书对于初学者来说是没有必要去看的,主要是来填补对于UNIX知识的空白,虽然有一定意义,但是其中的翻译实在是有够生硬的,辞不达意。希望我的这些许咨讯对大家有所帮助。
阅读(862) | 评论(0) | 转发(0) |