
文件
文章平均质量分 97
outlier.cc
在校的三好学生,好饿好困好想睡
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【动态库的加载】【进程地址空间(三)】
探讨动态库的加载机制及其在进程地址空间中的作用。当可执行程序运行时,操作系统为其创建内核数据结构并加载代码和数据。动态库作为文件,也需要加载到内存,并通过页表映射到进程地址空间的共享区。多个进程可共享动态库,但全局变量如 errno 可能会导致互相影响,因写入会引发写时拷贝。程序在编译时已分配逻辑地址,加载后使用物理地址。动态库采用相对地址,避免绝对编址,以便灵活加载至任意位置。静态库则是直接拷贝,无需加载。原创 2024-09-22 15:30:26 · 1670 阅读 · 8 评论 -
【Linux】动静态库
在 linux 系统中,形如 libXXX.a 的文件称为静态库,对应是的静态链接;形如 libYYY.so 为动态库,对应的是动态链接,也是 gcc/g++ 的默认编译行为。但是对于动静态库 和 动静态链接,远远不只这些。原创 2024-09-19 15:50:30 · 1955 阅读 · 14 评论 -
【文件系统】软硬链接
目录文件的数据块存放的就是该目录下所有文件名 与文件对应的 inode 编号之间的映射关系,是一组 kv 结构的数据。软链接是一个独立的文件,对 file.txt 建立软链接,sotf-link 的 inode 编号与 file.txt 并不相同!因为软链接具有独立的 inode!硬链接的本质就是在特定目录的数据块中新增 文件名 和 硬链接指向的目标文件的 inode 编号的映射关系!原创 2024-09-15 15:05:14 · 2032 阅读 · 14 评论 -
【文件系统】Linux ext2
Data blocks: 存放文件内容的区域。inode Table: 单个文件的所有属性,主流的大小为 128 byte,一般都是一个文件分配一个 inode,每个 inode 具有唯一性。Block Bitmap: 比特位的位置和块号进行映射,比特位的内容即表示该块有没有被使用。node Bitmap: 比特位的位置和 inode 编号进行映射,比特位为1,代表映射对应的 inode 有效。Group Descriptor Table(GDT): 描述整个分组 Block Group 的基本使用情况。原创 2024-09-12 15:33:05 · 1892 阅读 · 10 评论 -
用户缓冲区
介绍上层用户缓冲区,以及语言层的 printf 等输出接口背后的本质。用户缓冲区刷新策略:无缓冲、行缓冲、全缓冲、以及进程退出时自动缓冲。缓冲区的作用:解决用户效率问题,配合格式化信息原创 2024-09-09 15:32:31 · 1392 阅读 · 10 评论 -
详谈重定向
文件描述符的分配规则;重定向的本质是在对文件描述符索引处的指针做修改,使其指向新的文件对象的地址;dup2 系统调用对进程打开的文件做重定向,dup2 拷贝的并不是文件描述符,文件描述符只是一个进程内核中特定数组的一个下标!拷贝的是这个下标内存储的指针数据!在内核层看待 linux 一切皆文件原创 2024-09-06 14:52:32 · 2225 阅读 · 15 评论 -
文件 fd
介绍系统调用 open、write 等接口访问文件、进程中的文件描述符表 fd 的本质就是一个数值下标,包括上层语言提供的 FILE* 类似的文件操作的类型,都是 fd 的封装,以及访问文件的本质就是在进程的文件描述符表填充一个指向 struct file 文件对象的指针原创 2024-09-03 16:58:28 · 2445 阅读 · 13 评论