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

目录

一、操作系统的重要性

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


一、操作系统的重要性

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

        在操作系统诞生之后,程序员不需要在硬件层面考虑问题,所以程序员的数量就增加了。哪怕自称 对硬件一窍不通的人也可能制作出一个有模有样的程序。不过,要想成为一个全面的程序员,有一点需要清楚的就是,掌握硬件的基本知识,并借助操作系统进行抽象化,可以大大提高编程效率

        下面就看一下操作系统是如何给开发人员带来便利的,在Windows 操作系统下,用C语言制作一个具有表示当前时间功能的应用。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)),把变量内存空间的内容输出到显示器上

        应用的可执行文件指的是,计算机的CPU可以直接解释并运行的本地代码,不过这些代码是无法直接控制硬件的,事实上,这些代码是通过操作系统来间接控制硬件的。变量中涉及到的内存分配情况,以及time0和printf0这些函数的运行结果,都不是面向硬件而是面向 操作系统 的。操作系统收到应用发出的指令后,首先会对该指令进行解释,然后会对 时钟IC 和显示器用的1/0进行控制

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

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

6a16ab41241c4e85950e4d8a97ba27eb.png

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

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

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

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

a4c8a2cb8d3346fbb92d2a520fece16b.png

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

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

 

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏志121

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值