声明:所有文章只作为学习笔记用,转载非原创
https://www.cnblogs.com/lidabo/p/4566663.html
https://www.cnblogs.com/lh03061238/p/12215367.html
https://blog.csdn.net/changexhao/article/details/78321295
glibc库详解及与POSIX,system V这些库之间关系的说明]
glibc,他是linux最底层的api,他包括了很多的规范,比如system V,ISO C,和POSIX 。其他的函数库,都是在调用glibc的基础上进行各种扩展,如X库等。
linux c 常用API https://blog.csdn.net/qq_33575901/article/details/80958353
Linux内核管理
(1)Linux系统的组成部分是内核+根文件系统。内核负责进程管理、内存管理、网络协议栈、文件系统、驱动程序和安全功能。 运行中的系统环境可分为两层:内核空间(系统空间、系统模式)、用户空间(用户模式)。用户空间运行的是应用程序(进程或线程),内核空间运行的是内核代码(系统调用)。
(2)内核设计流派
1)单内核设计:把所有功能集成于同一个程序,如Linux系统,但充分借鉴了微内核体系的设计的优点,为内核引入了模块化机制。
2)微内核设计:每种功能使用一个单独的子系统实现,如Windows系统Solaris系统。
(3)Linux内核特点
1)支持模块化: .ko (kernel object)
2)支持模块运行时动态装载或卸载。 Linux的对象类文件有两种:.ko(kernel object,内核对象)[和.so](http://xn--0tr.so/)(shared object,共享对象,供各种应用程序之间共享的功能模块)。
(4)内核的组成部分
1)核心文件:内核核心,一般为bzImage,通常位于/boot目录,名称为/boot/vmlinuz-VERSION-release,其中VERSION是内核版本号,release是本地版本号,制作和编译内核的人加上的版本号。 编译内核时,[ ]:N,表示不要此内核模块,[M]:Module,表示编译成模块,[*]:Y,表示编译进内核核心,内核支持模块的动态装载和卸载。
2)ramdisk:把内存中某一块空间作为磁盘用,用于实现系统初始化的、基于内存的磁盘设备。辅助性文件,并非必须,这取决于内核是否能直接驱动rootfs所在的设备:a) 目标设备驱动,例如SCSI设备的驱动;b) 逻辑设备驱动,例如LVM设备的驱动;c) 文件系统,例如xfs文件系统。ramdisk是一个简装版的根文件系统。CentOS 5,6,7中的ramdisk: CentOS 5:/boot/initrd-VERSION-release.img CentOS 6,7:/boot/initramfs-VERSION-release.img (由initrd替换成initramfs的原因是避免双缓冲和双缓存,从而达到提速启动的目的)
3)模块文件:/lib/modules/VERSION-release 如果安装了多个内核版本,在/lib/modules目录下将有多个内核文件目录。
4)kernel object:内核对象,即内核模块,一般放置于/lib/modules/VERSION-release/。内核模块与内核核心版本一定要严格匹配。
glibc与glib libc
https://blog.csdn.net/t146lla128xx0x/article/details/81267496
glibc 是gnu发布的libc库,也即c运行库。
glibc是linux系统中最底层的api(应用程序开发接口),
几乎其它任何的运行库都会依赖于glibc。
glibc除了封装linux操作系统所提供的系统服务外,
它本身也提供了许多其它一些必要功能服务的实现,主要的如下:
(1)string,字符串处理
(2)signal,信号处理
(3)dlfcn,管理共享库的动态加载
(4)direct,文件目录操作
(5)elf,共享库的动态加载器,也即interpreter
(6)iconv,不同字符集的编码转换
(7)inet,socket接口的实现
(8)intl,国际化,也即gettext的实现
(9)io
(10)linuxthreads
(11)locale,本地化
(12)login,虚拟终端设备的管理,及系统的安全访问
(13)malloc,动态内存的分配与管理
(14)nis
(15)stdlib,其它基本功能
这是 glibc 的主体,分布 /lib 与 /usr/lib 中,包括 libc 标准 C 函式库、libm 数学函式库、libcrypt加密与编码函式库、libdb 资料库函式库、libpthread行程多执行绪函式库、libnss 网路服务函式库等等。这些都是可分享函式库,档名都以 .so 做结尾
网友评论