1.分页与分段有什么区别?
-
分页:
- 内存管理的一种方法,将虚拟地址空间划分为固定大小的页(通常是4KB)。
- 页表用于映射虚拟页到物理页,简化了内存分配和管理。
- 适合处理大规模程序的内存分配,可以有效减少碎片。
-
分段:
- 将程序分为不同的逻辑段(如代码段、数据段等),每个段的大小可以不同。
- 每个段有自己的段表,包含段基址和段界限。
- 提供了更高层次的内存管理,便于处理程序的逻辑结构。
2.中断和异常有什么区别?
-
中断:
- 由外部事件引发(如I/O设备、定时器等),用于处理异步事件。
- 中断可以是可屏蔽的或不可屏蔽的,通常需要中断服务程序(ISR)来处理。
-
异常:
- 由程序内部事件引发(如除零错误、无效指令等),通常是同步事件。
- 异常处理是为了修正错误或处理特殊条件,通常通过异常处理程序来进行。
3.动态链接和静态链接有什么区别?
-
动态链接:
- 在运行时将库链接到可执行文件,使用共享库(DLL或SO)。
- 可执行文件较小,多个程序可以共享同一个库,提高了内存利用率。
- 更新库时无需重新编译程序,但需确保接口兼容。
-
静态链接:
- 在编译时将所有必要的库和依赖直接链接到可执行文件中。
- 生成的可执行文件较大,但在运行时不需要依赖外部库。
- 更新库时需重新编译程序。