操作系统和应用的关系
1.操作系统功能的历史
首先,在简单回顾操作系统 。 的历史的同时,我们来看一下操作系统到底是怎样的软件。在计算机中尚不存在操作系统的年代, 完全没有任何程序,因此程序员就需要编写出处理相关的所有程序。 用机器语言编写程序,然后再使用开关将程序输人, 这一过程非常麻烦。于是, 有人开发出了仅具有加载和运行功能的监控程序, 这就是操作系统的原型。通过事先启动监控程序,程序员就可以根据需要将各种程序加载到内存中运行。 虽然依旧比较麻烦, 但比起在没有任何程序的状态下进行开发,工作量得到了很大的缓解
2.要意识到操作系统的存在
应用的可执行文件指的是,计算机的CPU 可以直接解释并运行的本地代码。 不过这些代码是无法直接控制计算机中配置的时钟IC及显示器用的I/O等硬件的。在操作系统这个运行环境下, 应用并不是直接控制硬件,而是通过操作系统来间接控制硬件的。 变量定义中涉及的内存的申请分配,以及time()和printf()这些函数的运行结果, 都不是面向硬件而是面向操作系统的。 操作系统收到应用发出的指令后, 首先会对该指令进行解释,然后会对时钟IC(实时时钟 )和显示器用的I/O进行控制。
3.系统调用和高级编程语言的移植性
C语言等高级编程语言并不依存于特定的操作系统。 ,这是因为人们希望不管是Windows还是Linux, 都能使用几乎相同的源代码。因此,高级编程语言的机制就是, 使用独自的函数名,然后再在编译时将其转换成相应操作系统的系统调用( 也有可能是多个系统调用的组合)。
在高级编程语言中, 也存在可以直接调用系统调用的编程语言。不过,利用这种方式做成的应用, 移植性 e 并不友好(也俗称为有恶意行为的应用)。 例如,直接调用Windows系统调用的应用, 在Linux 上显然是无法运行的。
第九章
浙公网安备 33010602011771号