系统调用和API

系统调用与API

        在开发应用程序的时候,应用程序的功能实现经常需要使用操作系统提供的服务,以及需要操作相关硬件,比如我们听音乐用的QQ musicQQ music就属于应用程序,当我们运行QQ music的时候,其首先要通过调用相应的API(应用程序编程接口)库函数,来使用操作系统提供的服务,linux操作系统提供的API遵循的是POSIX标准。API函数封装了系统调用,系统调用作为应用程序和内核的接口,使得操作系统可以将底层的操作以服务的形式提供给应用程序来使用,系统调用向下驱动硬件,如声卡,这样在程序的控制下声卡才能够发出声音。

        当学习操作系统的时候,我们会有疑问,为什么我们写应用程序的时候,需要API或者系统调用才能使用内核提供的服务和硬件资源呢,我直接去用我需要的软硬件资源不可以吗?第一:首先,在一台计算机上运行的程序是很庞大了,包括驱动程序、内核和应用程序,不同的程序之间关联性很复杂,计算机要想可靠高效的运行,程序的可靠性就必须要得到保证,将不同的软件通过层次化的分割,利于软件的开发和维护。第二:大大方便的应用程序的开发,即减少了应用程序开发的难度,同时也提高了应用程序开发的进度。因为应用程序的开发人员不需要直接面对晦涩的汇编语言,所有的低级服务都由操作系统实现,提供给上层应用。第三:极大的提高的操作系统的安全性。操作系统注重的是机制,机制就是操作系统要提供什么样的功能,而应用程序则注重的是策略,策略就是如何使用功能。操作系统提供功能的时候,为了保护软硬件资源,同时也限制了应用程序如何使用软硬件资源,因为系统的安全性主要是由操作系统来负责,不是说应用程序想怎么用就可以怎么用,而是操作系统我就这么让你用,你也只能这么用,你应用程序用就是了,其他的你就不用管了。这样应用程序即可以使用了底层的资源,同时也不会对系统的安全性构成威胁。第四:API和系统调用的实现,使得程序更具有可移植性。由于操作系统提供的API都会遵循某一标准,类unix操作系统都遵循POSIX标准,其他的标准有的兼容POSIX标准,或者和POSIX标准存在交集。

 

API和系统调用

       API(应用编程接口)侧重于向上层提供给定的服务,而系统调用则侧重于通过软中断向下层的内核发出一个明确的请求。API属于用户态,而系统调用属于内核态。

操作系统提供的API函数库都会遵循一定的标准,以实现应用程序在不同的系统之上的可移植性。标准规定了API的向上提供的接口,至于API的功能如何实现的,各个操作系统可以有所不同。

      API是提供给应用程序的接口,其实现的功能不仅仅只是底层的服务和资源,还包括封装了其他的应用程序,因此,API和系统调用没有必然的联系。第一:一个API可以不调用任何系统调用,只提供用户态的服务(如数学运算的函数)。第二:一个API可能调用多个系统调用。第三:多个API可以调用封装了不同功能的同一系统调用。

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值