《liunx操作系统》课件21系统调用与库函数

上传人:考试不挂****2941... 文档编号:243021010 上传时间:2024-09-14 格式:PPTX 页数:30 大小:384.41KB
返回 下载 相关 举报
《liunx操作系统》课件21系统调用与库函数_第1页
第1页 / 共30页
《liunx操作系统》课件21系统调用与库函数_第2页
第2页 / 共30页
《liunx操作系统》课件21系统调用与库函数_第3页
第3页 / 共30页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,系统调用与库函数,操作系统结构,用户进程及系统进程都在内核上运行,用户态与内核态,为了更好地保护内核空间,将程序的运行空间分为用户空间和内核空间,逻辑上是相互分离的,用户进程通常情况下不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用用户空间的函数,用户空间的进程需要获得系统服务,就必须利用操作系统提供给用户的特殊接口,即系统调用函数,系统调用,系统调用与库函数,Linux,操作系统提供良好定义的有限数目的接口程序,使用户程序通过接口得到内核提供的服务,这些接口程序即即系统调用,为了方便用户编程使用,减低因执行系统调用带来的运行模式切换所造成的开销,,Linux,提供运行在用户空间的应用程序接口(,API,)库函数,系统调用与库函数,API,库函数和系统调用并不只是一对一的关系,可以是多对一,也可以是一对多,只能是,API,向下调用,而系统调用不能调用,API,系统调用与库函数,库函数为程序开发和执行提供方便环境,本身并不属于操作系统内核部分,系统调用一般位于操作系统核心的最高层,通过调用内核函数实现包括进程控制、文件系统控制、内存管理、,socket,管理、进程通信、系统控制等功能,虚拟文件系统,系统调用函数,系统调用函数以,C,函数形式提供给用户,有类型、名称、参数,并且标明相应的文件包含,read,系统调用可以打开一个指定文件,#include ,#,include ,#include ,#include ,size_t read(int fd, const void * buf, size_t count);,系统调用与库函数,函数库调用,系统调用,在所有的,ANSI C,编译器版本中,,C,库函数是相同的,各个操作系统的系统调用是不同的,调用,函数库中的一段程序(或函数),调用,系统内核的服务,与用户程序相联系,是操作系统的一个入口点,在用户地址空间执行,在内核地址空间执行,它的运行时间属于“用户时间”,它的运行时间,属于“系统”,时间,属于过程调用,调用开销较小,需要在用户空间和内核上下文环境间切换,开销较大,库文件,程序要实现他们的功能,需要很多函数,包括自己编写和调用别人已经写好的函数,linux,把人们预先编译好的按照可重用的原则编写的函数集合起来,就是函数库,在任何编程环境中,库文件都是一些预先编译好的函数集合,函数以二进制代码形式存储在库文件中,库文件,为了便于编程,对于部分经常使用的函数,相应的开发语言都提供了对应的库文件支持,用户要使用这些函数,只需要包含这些库文件即可,程序员在使用库文件时,只需要包含所需要函数所在的头文件,而不必关心该函数的具体实现,函数库文件包含,.a,的静态库和,.so,的共享库,头文件,不同的系统调用函数需要不同头文件,头文件保存在,/usr/include,内,系统调用函数依赖于所运行的,linux,版本,一般放在,/usr/include/sys,或,/usr/include/linux,中,库文件,在编译时将库中相应函数的二进制映像代码直接拷贝到当前编译的程序中,当前程序在运行时独立运行,即静态库,如,lib*.a,在编译时只引用库中相应函数的二进制映像代码的入口位置(不直接拷贝),该程序在运行时从共享库文件中读出该函数代码(首先将共享库加载到内存中),从而间接引用,这种库即共享库,以,lib*.so.x.x,为格式命名,静态库与共享库,静态库(*,.a,),指令全都包含在最终生成的可执行文件中,当同时运行的许多程序都使用同一个静态库时,就会在内存中有同一个函数的多份拷贝,共享库(*,.so,),不必被包含在最终可执行文件中,文件执行时可以动态的引用和卸载共享库文件,程序使用共享库的时候,有必要共享库才被加载到内存中,函数库与头文件,/lib,:系统必备共享库,/usr/lib,:标准共享库和静态库,/usr/local/lib,: 本地函数库,/usr/include,: 系统头文件,/usr/local/include,: 本地头文件,共享库,ldd,: 可查看某个可执行文件所使用的共享库,/etc/ld.so.conf,: 包含共享库搜索位置的配置文件,记录了编译时使用的动态库的路径,ldconfig,: 共享库管理工具,,/etc/ld.so.conf,列出的路径下的库文件 缓存到,/etc/ld.so.cache,以供使用,一般在更新了共享库之后要运行该命令,ldd,命令,确定某一特定可执行程序是否引用共享库,库文件,编译器只会使用,/lib,和,/usr/lib,下的库文件,通过源码包进行安装时,如果不指定,-prefix,会将库安装在,/usr/local,目录下(可执行文件在,bin,下,头文件在,include,下,库文件在,lib,下),若未在文件,/etc/ld.so.conf,中添加,/usr/local/lib,这个目录,即使安装了源码包,但是使用时仍然找不到相关的,.so,库也会报错,系统找不到此文件,glibc,gnu,发布的,libc,库,即,c,运行库,linux,系统中最底层的,api,,几乎其它任何运行库都会依赖于,glibc,除了封装,linux,操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现,glibc,版本,查看,libc,版本,安装,clustal omega,解压缩及安装,tar -zxvf clustal-omega-1.2.1.tar.gz,./configure,argtable2,wget,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!