点击这里给我发消息 点击这里给我发消息

全面了解系统调用与库函数调用方法

添加时间:2013-12-7
    相关阅读: 程序 系统

  今天对系统调用和库函数调用进行了一次总结!在这里把心得写出来,如果有什么错误希望大家能指出
    我们假设UNIX系统 库函数有C编译器提供 , 而你有用汇编编写C库函数的能力!

    首先要知道宏观上知道系统调用和库函数的区别:系统调用由操作系统提供,我门假设用汇编编写的

    而库函数是编译器提供

    而我们知道系统调用是会通过一种陷阱的机制陷入内核而执行相应的处理程序

    为什么要陷入内核哪,因为系统分为内核态和用户态,比如我们对某I/O进行相应的操作,假设利用汇编语言,只有在内核态时才能使用这些存取I/O指令.

   这样的话我们就知道当进行I/O存取时(控制硬件,或对内核数据访问,系统状态的访问,进程的管理一类)都要陷入内核,才能使用有关指令

   而象我门所说的库函数或API用户编程接口并不是系统调用,他们只是当涉及到需要陷入内核才能完成的功能才调用相应功能的系统调用,例如PRINTF()函数就调用了系统调用的WEITE().进入内核而完成功能.

   象一些ABS()一类的函数(对用户数据操作)就无须陷入内核,而在库函数中也就无须进行系统调用.因为他们是对用户空间的数据(程序的正文,数据区和堆栈区)进行访问.

   当你自己用汇编进行库函数的编写时同样要进行BIOS中断,来实现一些内核完成的任务,BIOS中断就已经是进入内核了.如果你自己直接对I/O端口地址进行存取,比如直接写屏,前提你要开CPU中断 CLD/STD 这也已经进入内核了

 

相关全面了解系统调用与库函数调用方法

咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册