linux C编程0-应用编程概念

目录

1、系统调用

 2、库函数

 3、库函数与系统调用的区别

4、glic库函数

 4.1、 查看glibc 版本


1、系统调用

系统调用(system call)是 Linux 内核提供给应用层的应用编程接口(API),是 Linux 应用层进入内核的入口。应用程序通过系统调用来使用操作系统提供的各种服务。通过系统调用, Linux 应用程序可以请求内核以自己的名义执行某些事情,譬如打开磁盘中的文件、读写文件、关闭文件以及控制其它硬件外设。通过系统调用API,应用层可以实现与内核的交互,其关系可通过下图简单描述:

 2、库函数

库函数是 C 语言库函数, C 语言库是应用层使用的一套函数库, 在 Linux 下,通常以动态(.so)库文件的形式提供,存放在根文件系统/lib 目录下, C 语言库函数构建于系统调用之上(有些库函数并不调用任何系统调用,譬如一些字符串处理函数。如strlen、strcat、 memcpy、memset、 strchr等等) ; 

 3、库函数与系统调用的区别

1)库函数是属于应用层,而系统调用是内核提供给应用层的编程接口,属于系统内核的一部分;
2)库函数运行在用户空间,调用系统调用会由用户空间(用户态)陷入到内核空间(内核态);

3)库函数通常是有缓存的,而系统调用是无缓存的,所以在性能、效率上,库函数通常要优于系统调用;
4) 库函数相比于系统调用具有更好的可移植性,通常对于不同的操作系统,其内核向应用层提供的系统调用往往都是不同,譬如系统调用的定义、功能、参数列表、返回值等往往都是不一样的;而对于 C 语言库函数来说,由于很多操作系统都实现了 C 语言库, C 语言库在不同的操作系统之间其接口定义几乎是一样的,所以库函数在不同操作系统之间相比于系统调用具有更好的可移植性。

4、glic库函数

在 Linux 系 统 下 , 使 用 的 C 语 言 库 为 GNU C 语 言 函 数 库 ( 也 叫 作 glibc , 其 网 址 为
http://www.gnu.org/software/libc/),作为 Linux 下的标准 C 语言函数库。

 4.1、 查看glibc 版本

1)通过查看glic动态库软链接的目标获取

2)直接运行glic动态库来获取到其信息

5、并发与竞争

并发:多个进程(线程)并行运行。

竞争:多个进程(线程)访问共享资源。

5.1、竞争产生的原因

1多线程并发访问
2抢占式并发访问
3中断程序并发访问
4SMP(多核)核间并发访问




 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值