用户态和内核态 程序代码的依赖和调用关系如下图所示: Lib :标准ASCI C函数,几乎所有的平台都支持该库函数,因此依赖该库的程序可移植性好; System Function :系统调用函数,与系统内核进行交互,不同平台具备不同的函数接口,因此可移植性较差 区分用户态和内核态主要是由于系统资源的有限性,不能无限制的随意分配给用户使用,必须由系统进行统一管理 User mode :不能直接对系统资源进行访问,如果要操作系统资源,必须转化为内核态 Kernel mode :管理系统资源,可直接对系统资源进
Linux 的虚拟内存管理有几个关键概念: 1、每个进程都有独立的虚拟地址空间,进程访问的虚拟地址并不是真正的物理地址; 2、虚拟地址可通过每个进程上的页表(在每个进程的内核虚拟地址空间)与物理地址进行映射,获得真正物理地址; 3、如果虚拟地址对应物理地址不在物理内存中,则产生缺页中断,真正分配物理地址,同时更新进程的页表;如果此时物理内存已耗尽,则根据内存替换算法淘汰部分页面至物理磁盘中。 基于以上认识,进行了如下分析: 一、Linux 虚拟地址空间如何分布? Linux 使用虚拟地址空间,大大增加了进