程序的运行和操作系统的关系

程序(本地代码)的运行环境是由操作系统和硬件来决定的

​ 应用程序向操作系统传递指令的途径称为API。Windows及Unix系列操作系统的API,提供了任何应用程序可以利用的函数组合。

因为不同操作系统的API是有差异的,因此将同样的应用程序一直到其他操作系统时,就必须要重写应用中利用到的API部分。

​ 像键盘输入等同外围设备进行输入输出操作的功能,都是通过API提供的。

​ UNIX系列操作系统 FreeBSD,存在一种名为Ports的机制。该机制能过结合当前运行的硬件环境俩编译应用的源代码,进而得到可以运行的本地代码系统

操作系统和应用的关系

操作系统的原型是 仅具有加载和运行程序功能的监控程序,后来渐渐的追加了一些功能到监控程序中,如基本的输入输出程序的功能。

初期的操作系统=监控程序+基本的输入输出程序

因此可以说操作系统是多个程序的集合体。

操作体统可分为:控制程序(硬件控制、程序运行控制),编程语言处理器(汇编、编译、解析)和实用程序(文本编辑器、调试工具、dump程序)

应用的可执行文件指的是,计算机的CPU可以直接解释并运行的本地代码

应用并不是直接控制硬件,而是通过操作系统间接控制硬件。类似C语言中的time()printf()这些函数的运行结果,都不是面向硬件而是面向操作系统的。操作系统接收到应用发出的指令后,首先会对该指令进行解释,然后会对时钟IC和显示器的I/O进行控制。

操作系统的硬件控制功能,通常是通过一些小的函数集合体的形式来提供的。这些函数及调用的函数的行为统称为系统调用

不同操作系统,在编写c源码时,能同样使用printf函数的原因在于,编译时将其转换成相应操作系统的系统调用(也可能是多个系统调用的组合)。就是说,用高级编程语言编写的应用在编译后,就转换成了利用系统调用的本地代码。

参考书籍《程序是怎样跑起来的》

猜你喜欢

转载自blog.csdn.net/weixin_43865875/article/details/108161962