文章目录
目录
前言
在软件开发领域,随着项目规模不断扩大、功能日益复杂,代码的复用性和管理成为至关重要的问题。为了避免重复编写相同功能的代码,提高开发效率,动静态库应运而生。
一、动静态库是什么?
• 静态库:它是一组目标文件的集合,在程序编译链接阶段,会将静态库中的代码直接复制到最终的可执行文件中。这意味着可执行文件在运行时不再依赖于静态库本身,拥有相对独立完整的代码体系。例如,在开发一些简单的命令行工具时,可能会将常用的字符串处理函数等打包成静态库供不同工具复用。
• 动态库:与静态库不同,动态库在程序编译时并不会把库中的代码复制到可执行文件里,而是在程序运行时动态地加载所需的库代码。这样可执行文件体积相对较小,而且多个程序可以共享同一个动态库,节省系统资源。比如在操作系统中,许多系统级别的功能模块是以动态库的形式存在,供不同应用程序调用。
动静态库的重要性
它们极大地提升了软件开发的效率和代码质量。通过复用已有的库代码,开发人员可以把更多精力放在业务逻辑的创新和完善上,同时减少了因重复编写代码可能导致的错误。而且在软件维护和升级方面,动静态库也提供了便利,只需要更新库本身,就能让依赖它的众多程序受益。
二、文件系统补充
上篇博客硬链接补充
补充1:当我们硬链接数被删除减到0时,文件就真正的被删除了。
补充2:操作系统会对内存进行管理,存在管理模块。
物理内存被分割成一个一个4KB小内存的(这个被称为页框),磁盘上的可执行文件等数据也被分割成了4KB的小文件(这个被称为页帧),页框和页帧之间互相交换数据,这个4KB就是数据交互单位
如果交互数据小了,那么两者直接的交互次数过多,io也就比较多,访问外设次数加多,时间效率就下来了;
比较大的时候,当我们想要读取少量的数据时,就会出现就会有很多的垃圾数据,哪些数据用不上就会占取内存空间。这就是预加载机制。
补充3:操作系统如何管理内存?
操作系统可以看到虚拟地址,也可以看到硬件的物理地址!
操作系统想要管理物理地址那么就要先描述在组织。
1024^3=1GB
4*1024^3=4GB
(4GB/1024)/4=1048576个页框
struct page men_array[1048576];
这就是框号,对数组管理就变成了对数组管理。
所以我们要访问一个