1. 简述静态链接库与共享库的区别。
静态库:链接过程使用静态库,链接时将静态库中的内容合成到可执行文件,运行时不在依赖文件。
.a(linux) .lib(windows)
动态库/共享库:运行时加载动态库,运行时可执行文件依赖于动态库。动态库必须和可执行文件都提供给用户。
.so (linux) .dll(windows)
2. 简述软链接与硬链接的区别:
软链接:在Windows下其实就是快捷方式
创建软链接: ln -s 源文件 目标文件
创建硬链接: ln 源文件 目标文件
区别:
-
删除源文件,软链接失效,硬链接减链接数,减到0才失效。
-
可以对目录做软链接,但不能做硬链接。
-
软连接移动后可能失效,硬链接不会。
-
创建时软链接使用绝对路径,硬链接则直接创建。
原因分析示意图:
3. 简述/bin, /etc, /proc, /usr, /home所存储的文件作用。
\bin:命令所对应的可执行文件
\etc:系统配置文件
\proc:虚拟目录,内存的映射(以进程为单位)
\usr:资源目录 系统安装软件所需要的软件、库、文档、资源
\home:所有普通用户的家目录
\dev:所有的设备文件
\lib:系统使用的库文件
4. 常用文件操作
- grep “搜索目标的正则” 搜索的文件
- cp [-adfilprsu] 源文件 目标文件
-a 相当于-pdr的意思
-i 目标已经存在的时候,会询问是否覆盖
-r 递归复制 - rm [-fir] 文件和目录
-f 强制
-i 互动
-r 递归删除 - mv [-fiu] 源文件 目标
-f 强制
-i 交互
-u 已经存在,源文件较新才会进行
4、计算机中的总线类型:数据总线、地址总线、控制总线
5、父子进程间操作fork之前打开文件共享的原因。
进程中打开的文件主要是在它的PCB中的文件指针记录。
子进程的PCB是拷贝其父进程的,拷贝时,采用浅拷贝的方式,只拷贝指针本身,指针指向的空间不会拷贝。
父子进程共享的数据:文件描述符(文件偏移量) PCB
不共享的数据:堆区、栈区、全局变量(进程空间)