《程序是怎样跑起来的》读书笔记——第九章 操作系统和应用的关系

1 操作系统功能的历史

在计算机中尚不存在操作系统的年代,完全没有任何程序,因此 程序员就需要编写出处理相关的所有程序。用机器语言编写程序,然 后再使用开关将程序输入,这一过程非常麻烦。于是,有人开发出了 仅具有加载和运行功能的 监控程序,这就是操作系统的原型。


之后,随着时代的进一步发展,开始有更多的功能被追加到监控程序中,比如,为了方便程序员的硬件控制程序、编程语言处理器(汇 编、编译、解析)以及各种实用程序等,结果就形成了和现在相差不大 的操作系统。因此,操作系统本身并不是单独的程序,而是多个程序 的集合体(图 9-3)。

2 要意识到操作系统的存在

虽然对程序员来说,掌 握硬件的基本知识是必需的,不过,在操作系统诞生以后,就没有 必要再编写直接控制硬件的程序了。这样一来,制作应用的程序员 就逐渐同硬件隔离开来了.

在操作系统这个运行环境下,应用并不是直接控制硬件,而是通 过操作系统来间接控制硬件的。

3 系统调用和高级编程语言的移植性

操作系统的硬件控制功能,通常是通过一些小的函数集合体的形 式来提供的。这些函数及调用函数的行为统称为系统调用(system call),也就是应用对操作系统(system)的功能进行调用(call)的意思。

用高级编程语言编写的应用在编译后,就转换成了利用系 统调用的本地代码

在高级编程语言中,也存在可以直接调用系统调用的编程语言。 不过,利用这种方式做成的应用,移植性 并不友好(也俗称为有恶意 行为的应用)。例如,直接调用 Windows 系统调用的应用,在 Linux 上 显然是无法运行的。

4 操作系统和高级编程语言使硬件抽象化

通过使用操作系统提供的系统调用,程序员就没必要编写直接控 制硬件的程序了。而且,通过使用高级编程语言,有时甚至也无需考虑系统调用的存在。这是因为操作系统和高级编程语言能够使硬件抽象化


文件是操作系统对磁盘媒介空间的抽象化。作为硬件的磁盘媒介,就如同树木的年轮一样,被划分为了 多个扇区,并以扇区为单位对磁盘进行读写。如果直接对硬件进行 操作的话,那就变成了通过向磁盘用的 I/O 指定扇区位置来对数据 进行读写了。在代码清单的程序中,扇区根本没有出现过。传递给 fopen() 函数的参数,是文件名 “MyFile.txt” 和指定文件写入的 “w"。传 递给 fputs() 的参数,是往文件中写入的字符串 ” 你好 “ 和 fp。传递给 fclose 的参数,也仅仅是 fp。也就是说,磁盘媒介的读写采用了文件这个概念,将整个流程抽象化成了打开文件用的 fopen()、写入文件用的 fputs()、关闭文件用的 fclose()(图 9-7)。

5 Windows 操作系统的特征

Windows 操作系统 的主要特征如下所示。

(1)32 位操作系统(也有 64 位版本)

虽然现在的 Windows 也有 64 位版本,但一般广泛普及的还是 32 位版本。这里的 32 位表示的是处理效率最高的数据大小。

(2)通过 API 函数集来提供系统调用

Windows 是通过名为 API 的函数集来提供系统调用的。API 是联 系作成应用的程序员和操作系统之间的接口。所以称为 API
(Application Programming Interface,应用程序接口)。

(3)提供采用了图形用户界面的用户界面

GUI(Graphical User Interface,图形用户界面)指的是通过点击显 示器中显示的窗口及图标等即可进行可视化操作的用户界面。

(4)通过 WYSIWYG 实现打印输出

WYSIWYG 指的是显示器上显示的内容可以直接通过打印机打印 输出。在 Windows 中,显示器和打印机是被作为同等的图形输出设备 处理的,而该功能也就为 WYSIWYG 的实现提供了条件。

(5)提供多任务功能

多任务指的是同时运行多个程序的功能。Windows 是通过 时钟分割技术来实现多任务功能的。
时钟分割指的是在短时间间隔内,多个程序切换运行的方式。在 用户看来,就是多个程序在同时运行。也就是说,Windows 会自动切 换多个程序的运行(图 9-9)。此外,Windows 中还具有以程序中的函 数为单位来进行时钟分割的 多线程 功能。

(6)提供网络功能及数据库功能

Windows 中,网络功能是作为标准功能提供的。数据库(数据库服 务器)功能有时也会在之后进行追加。网络功能和数据库功能,虽并不 是操作系统本身不可欠缺的功能,但因为它们和操作系统很接近,所以被统称为 中间件而不是应用。意思是处于操作系统和应用的中间 (middle)。操作系统和中间件合在一起,也称为 系统软件。应用不仅可以利用操作系统,也可以利用中间件的功能(图 9-10)。

(7)通过即插即用实现设备驱动的自动设定

即插即用(Plug-and-Play)指的是新的设备连接(Plug)后立刻就 可以使用(Play)的机制。新的设备连接到计算机后,系统就会自动安 装和设定用来控制该设备的设备驱动程序。

posted @ 2017-02-12 14:19  佳佳牛  阅读(1170)  评论(0编辑  收藏  举报