Win - 程序是怎样跑起来的——要意识到操作系统的存在

版权声明:本文为博主原创文章,转载前动动小手点个【赞】吧~ https://blog.csdn.net/Dream_Weave/article/details/85918336

这里,我希望制作应用的程序员们意识到一点,那就是你们制作的不是硬件,而是利用操作系统功能的应用。虽然对程序员来说,掌握硬件的基本知识是必需的,不过,在操作系统诞生以后,就没有必要再编写直接控制硬件的程序了。这样一来,制作应用的程序员就逐渐同硬件隔离开来了。也就是说,程序员是很少关注现实世界(硬件)的。

由于操作系统诞生后,程序员无需再考虑硬件的问题,因此程序员的数量也增加了。哪怕是自称“对硬件一窍不通”的人,也可能会制作出一个有模有样的应用。不过,要想成为一个全面的程序员,有一点需要清楚的是,掌握基本的硬件知识,并借助操作系统进行抽象化,可以大大提高编程效率。否则,遇到问题时,你就无法找到解决办法。操作系统确实为程序员提供了很多方便。不过,仅仅享受方便是不行的,还要了解为什么自己能够这么方便。了解了这一点,就可以尽情地享受方便了。

下面就来看一下操作系统是如何给开发人员带来便利的。代码清单9-1表示的是,在Windows操作系统下,用C语言制作一个具有表示当前时间功能的应用。time()是用来取得当前日期和时间的函数,printf()是用来在显示器上显示字符串的函数。程序的运行结果如图9-4所示。

图9-4 代码清单9-1的运行结果

代码清单9-1 表示当前时间的应用

#include <stdio.h>
#include <time.h>

void main() {

    //保存当前日期和时间信息的变量
    time_t tm;

    //取得当前的日期和时间
    time(&tm);

    //在显示器上显示日期和时间
    printf("%s\n", ctime(&tm));
}

运行代码清单9-1的应用时,硬件的受控过程如下所示。

(1)通过time_t tm; ,为time_t类型的变量申请分配内存空间。
(2)通过time(&tm); ,将当前的日期和时间数据保存到变量的内存空间中。
(3)通过printf("%s\n", ctime(&tm)); ,把变量内存空间的内容输出到显示器上。

应用的可执行文件指的是,计算机的CPU可以直接解释并运行的本地代码。不过这些代码是无法直接控制计算机中配置的时钟IC及显示器用的I/O等硬件的。那么,为什么代码清单9-1的应用能够控制硬件呢?

在操作系统这个运行环境下,应用并不是直接控制硬件,而是通过操作系统来间接控制硬件的。变量定义中涉及的内存的申请分配,以及time()和printf()这些函数的运行结果,都不是面向硬件而是面向操作系统的。操作系统收到应用发出的指令后,首先会对该指令进行解释,然后会对时钟IC(实时时钟)和显示器用的I/O进行控制。

扫描二维码关注公众号,回复: 4800134 查看本文章

图9-5 应用程序经过OS间接地控制硬件

猜你喜欢

转载自blog.csdn.net/Dream_Weave/article/details/85918336
今日推荐