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

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

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

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


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

image.png

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

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

#include <stdio.h>#include <time.h>voidmain() {
//保存当前日期和时间信息的变量time_ttm;
//取得当前的日期和时间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进行控制。

image.png

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

目录
相关文章
|
存储 API 虚拟化
【OSTEP】Introduction:操作系统介绍 | 程序运行时会发生什么?
【OSTEP】Introduction:操作系统介绍 | 程序运行时会发生什么?
58 0
|
Java Linux Windows
在Windows操作系统上运行Java程序
在Windows操作系统上运行Java程序
114 2
|
1月前
|
Web App开发 Shell Linux
MacOS环境-手写操作系统-41-mem 第一个控制台程序
MacOS环境-手写操作系统-41-mem 第一个控制台程序
17 1
|
1月前
|
小程序 iOS开发 MacOS
MacOS环境-手写操作系统-44-运行简单的程序
MacOS环境-手写操作系统-44-运行简单的程序
19 0
|
6月前
|
存储 程序员
操作系统(10)----从写程序到程序运行
操作系统(10)----从写程序到程序运行
62 1
|
存储 缓存 Linux
【看表情包学Linux】冯诺依曼架构 | 理解操作系统 | 基于 Pintos 实现新的用户级程序的系统调用
【看表情包学Linux】冯诺依曼架构 | 理解操作系统 | 基于 Pintos 实现新的用户级程序的系统调用
109 1
|
6月前
|
Shell Linux 开发工具
操作系统(Linux)外壳程序shell 、用户、权限
操作系统(Linux)外壳程序shell 、用户、权限
|
前端开发 安全 Go
在Mac OS X上运行Go语言的GUI程序
在Mac OS X上运行Go语言的GUI程序
370 3
|
Shell Linux Go
《Linux操作系统编程》第七章 shell的交互功能: 了解shell的启动过程,shell的功能,shell的命令形式,shell程序的建立和运行,理解管道和重定向,环境变量和系统变量以及变量引用
《Linux操作系统编程》第七章 shell的交互功能: 了解shell的启动过程,shell的功能,shell的命令形式,shell程序的建立和运行,理解管道和重定向,环境变量和系统变量以及变量引用
104 0
|
运维 Unix Shell
Alibaba Cloud Linux操作系统Shell程序
了解Alibaba Cloud Linux Shell和用户Shell定制、C/C++编写一个简单的Shell程序