目录

​一、操作系统的重要性​

​二、系统调用和编程语言的移植性​


一、操作系统的重要性

        对于程序员来说,程序员创造的不是硬件,而是各种应用程序,但是如果程序员只做应用不懂硬件层面的知识的话,是无法成为硬核程序员的

对硬件一窍不通的人也可能制作出一个有模有样的程序。不过,要想成为一个全面的程序员,有一点需要清楚的就是,掌握硬件的基本知识,并借助操作系统进行抽象化,可以大大提高编程效率

time()是用来取得当前日期和时间的函数,printf()是把结果打印到显示器上的函数,如下:

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

void main(){
// 保存当前日期和时间信息
time_t tm;

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

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

● 通过time_ttm,为time_t类型的变量申请分配内存空间

● 通过time(&tm),将当前的日期和时间数据保存到变量的内存空间中

● 通过printf("%s\n",ctime(&tm)),把变量内存空间的内容输出到显示器上

操作系统 的。操作系统收到应用发出的指令后,首先会对该指令进行解释,然后会对 时钟IC

        计算机中都安装有保存日期和时间的实时时钟(Real-time clock),上面提到的时钟IC就是值该实时时钟。

应用程序通过OS调度硬件:

操作系统的重要性及系统调用和编程语言的移植性_计算机基础

二、系统调用和编程语言的移植性

操作系统控制硬件的功能,都是通过一些小的函数集合体的形式来提供的。这些函数以及调用函数的行为称为 系统调用,也就是通过应用进而调用操作系统的意思。在前面的程序中用到了 time()以及printf()函数,这些函数内部也封装了系统调用

C 语言等高级编程语言并不依存于特定的操作系统,这是因为人们希望不管是 Windows 操作系统还是Linux操作系统都能够使用相同的源代码。因此,高级编程语言的机制就是,使用独自的函数名,然后在编译的时候将其转换为系统调用的方式(也有可能是多个系统调用的组合)。也就是说,高级语言编写的应用在编译后,就转换成了利用系统调用的本地代码

高级语言的函数调用在编译后变成了系统调用:

操作系统的重要性及系统调用和编程语言的移植性_内存_02

        在高级语言中也存在直接调用系统调用的编程语言。不过,利用这种方式做成应用,移植性并不友好

移植性:移植性指的是同样的程序在不同操作系统下运行时花费的时间,时间越少证明移植性越好