系统调用和库函数及API的区别
发布网友
发布时间:2022-05-23 04:17
我来回答
共1个回答
热心网友
时间:2023-10-12 22:05
一.windows规定一切的应用程序优先级为3,而windows自己的为0,(0最高,3最低)。
windows不允许应用程序直接访问硬件,但会提供api函数让用户间接地访问,这样就会调用系统级api。平时出现的“........非法操作”就是因为应用程序非法访问硬件造成的。
api
一般分为两种
1.用户级api
有的也成为应用级api。替用户写好的函数,方便调用,使用户可以将焦点放在设计程序逻辑上面,而不必再编写繁琐、重复的程序。这些优秀可视化编程环境操作简单、界面友好(诸如vb、vc++、delphi等),在这些工具中提供了大量的类库和各种控件,它们替代了api的神秘功能,事实上这些类库和控件都是构架在win32
api函数基础之上的,是封装了的api函数的集合。它们把常用的api函数的组合在一起成为一个控件或类库,并赋予其方便的使用方法,所以极大的加速了windows应用程序开发的过程。有了这些控件和类库,程序员便可以把主要精力放在程序整体功能的设计上,而不必过于关注技术细节。
2.系统级api
想要和系统硬件交互,必须调用此类函数
二.dos系统中规定系统和应用程序的优先级一样,所以dos允许用户为所欲为。引导型病毒就是这个性质
api与系统调用的区别:
程序员调用的是api(api函数),然后通过与系统调用共同完成函数的功能。
因此,api是一个提供给应用程序的接口,一组函数,是与程序员进行直接交互的。
系统调用则不与程序员进行交互的,它根据api函数,通过一个软中断机制向内核提交请求,以获取内核服务的接口。
并不是所有的api函数都一一对应一个系统调用,有时,一个api函数会需要几个系统调用来共同完成函数的功能,甚至还有一些api函数不需要调用相应的系统调用(因此它所完成的不是内核提供的服务)。
系统回调就是由系统执行回调函数,这个回调函数可以是用户编写的,但是必须是由系统调用