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

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

一、操作系统的重要性


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


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


       下面就看一下操作系统是如何给开发人员带来便利的,在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调度硬件:



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


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


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


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



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


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

目录
相关文章
|
8月前
|
Shell Linux 应用服务中间件
ABAP 面试题:如何使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令?
ABAP 面试题:如何使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令?
113 0
|
3月前
|
Linux C语言
操作系统 | 添加系统调用
操作系统 | 添加系统调用
32 0
|
6月前
|
存储 缓存 Linux
【看表情包学Linux】冯诺依曼架构 | 理解操作系统 | 基于 Pintos 实现新的用户级程序的系统调用
【看表情包学Linux】冯诺依曼架构 | 理解操作系统 | 基于 Pintos 实现新的用户级程序的系统调用
66 1
|
8月前
|
Shell Linux 应用服务中间件
使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令
使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令
74 0
|
3月前
|
资源调度 调度 UED
CPU执行系统调用时发生中断,操作系统还能切回中断前的系统调用继续执行吗?
系统调用服务例程在执行过程中,通常不会被中断。系统调用服务例程的执行是一个原子操作,即在执行期间不会被中断。这是为了确保在系统调用服务例程执行期间对内核数据结构的一致性和完整性。
|
4月前
|
开发框架 JavaScript 前端开发
鸿蒙操作系统支持哪些编程语言?
鸿蒙操作系统支持哪些编程语言?
83 0
|
6月前
|
存储 Unix Java
探索操作系统:内核、启动和系统调用的奥秘
操作系统是计算机不可或缺的一部分,它连接着硬件和应用程序。内核是操作系统的核心,负责管理进程和线程、内存、硬件设备以及提供系统调用接口。计算机启动过程中,ROM负责加载并执行BIOS程序,而RAM用于存储运行中的程序和数据。系统调用是操作系统提供给应用程序的接口,通过系统调用可以访问操作系统的功能。系统调用相当于一个办事大厅,应用程序需要通过系统调用来完成特定的操作或获取特定的服务。
|
8月前
使用 SAP ABAP 编程语言调用 Windows10 操作系统的 Powershell 命名并打印出执行结果
使用 SAP ABAP 编程语言调用 Windows10 操作系统的 Powershell 命名并打印出执行结果
43 0
|
8月前
|
存储 程序员
操作系统:系统调用
系统调用是操作系统提供给应用程序使用的接口,可理解为一种可供应用程序调用的特殊函数。应用程序可以通过系统调用来获取操作系统内核的服务。
100 0
|
9月前
|
C语言
《计算机操作系统-第三章》之中断与系统调用
《计算机操作系统-第三章》之中断与系统调用
196 0