这本书写得非常棒,逻辑严谨、对概念的解释深入浅出、填补了我很多空缺,很值得花时间看。
大概一月十四号放寒假,我打算这之前把这本书先看完前三部分,寒假正好接着内存分配。
多进程与复用
第一章讲CUP多进程的发展和复用思想,初期的发展 CPU、内存以及其它 I/O 设备之间的频率相差不大,采用 BUS 总线连接,这很单一且低效。后来 CUP 速度提升,各模块之间无法再向之前一样单一交互,于是产生了一系列的接口问题,同时模块化也相应成型。
其实从长期来看,这种发展是从硬件上的模块化,走向应用程序上的模块化。从多核 CPU 到现在程序的动态链接都是这种思想。这两者之间还存在一个过渡,多核 CUP 优先出现,放大来看计算效率与 CPU 的数量成正比,但严格来说并不是这样。在多进程与动态链接等出现之前,仅运行一个程序时,十个 CPU 的效率和一个 CPU 是一样的,这个程序都独占一个 CPU,多核还造成了严重的资源浪费。所以增加 CPU 的数量只能增加同一时间内运行的程序数量,并不能加快单个程序所执行的速度。同样后期发展继续走向了应用程序。
硬件上的模块化与应用程序上的模块化结合,产生了高效的多进程运行模式,但同样也带来了进程优先级问题、进程之间相互影响问题、资源分配问题、与硬件的适配问题等,之后再了解当前技术具体是如何解决这些问题的。
操作系统与设备驱动
操作系统的主要功能是集成管理硬件资源以及为应用程序提供抽象调用接口。
这里的抽象书中做的解释很好,成熟的操作系统出现后,硬件逐渐被抽象成了一系列概念。在 UNIX 中,硬件的访问形式和普通文件形式一样;正如那句名言:Linux中一切皆文件。而 Windwos 中,图形硬件被抽象成了 GDI,声音和多媒体设备被抽象成了 DirectX 对象;磁盘被抽象成了普通的文件系统。
//DirectX是一种写流数据的新方法
这个抽象的过程正是由硬件驱动程序来实现的,给上层应用程序提供了一个统一的硬件访问模式。操作系统开发者为硬件生成厂家提供了一系列的接口和框架,凡是按照这个接口和框架开放的驱动程序都可以再该系统上使用。