第一章 Linux应用编程概念

问题:

  • 何为应用编程
  • 何为系统调用
  • 何库函数

1. Linux应用编程

Linux硬件平台下的软件开发,大概可以分为三类:

  • 裸机编程
    • 没有操作系统支持,直接在硬件上进行编程,如单片机开发
  • 驱动编程
    • 基于内核驱动框架开发驱动程序(通过调用Linux内核接口,完成设备驱动的注册,驱动程序负责底层硬件操作相关逻辑)
  • 应用编程:
    • 基于Linux操作系统的应用编程,在应用程序中,通过调用系统调用API完成应用程序的功能和逻辑,应用程序运行于操作系统之上。

操作系统下有两种不同的状态:

  • 内核态
  • 用户态

应用程序运行在用户态,而内核运行在内核态

2. 库函数

        系统调用:内核直接向应用层提供的应用编程接口,如

  • open
  • write
  • read
  • close
  • ...

编写应用程序,除了使用系统调用之外,还可以使用库函数

库函数:C语言库函数

C语言库是应用层使用的一套函数库(其实就是系统调用的封装),Linux下通常以.so形式提供,存放在/lib下

-------当然,有些库函数并不调用任何系统调用,如strlen, strcat, memcpy, memset...

而有些库则是使用系统调用完成它的实际工作,如:

fopen ---> open

fread -->read

fwrite --> write

Linux有系统调用,为毛还要有库函数的存在?

无非就是:

  • 不好用
  • 移植性不好
  • 性能不好

库函数 vs 系统调用

库函数系统调用
属于应用层系统内核
运行应用空间会从用户态陷入到内核态
缓存有       性能上库函数 > 系统调用
移植不同操作系统,系统调用可能不同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值