内存保护
我是Linux的新手,最近在看内存保护方面的知识,以下是自己对Linux内
核空间与用户空间,进程间隔离的认识。不知道对否,希望有大侠能帮
忙指正。这里不胜感!
Linux内核与用户空间的隔离
在linux中内核空间与用户空间的隔离是利用它们使用不同的线性地址
空间.内核使用从3G~4G范围的虚拟地址空间.而用户空间使用0~3G的虚
拟地址空间.这两个空间使用不同的CPU特权级,当在用户空间运行的程
序直接访问内核空间的地址的话会因为特权级不够而被中止.但是因为
内核又必须向应用程序提供服务,所以就必须有一种机制实现,使得在用
户空间可以访问内核空间.linux使用系统调用来实现,通过操作系统提
供了一系列系统调用,应用程序可以调用它们以达到访问内核的目的.系
统调用会触发一个软中断,使CPU从用户态上升到内核态,从而达到访问
内核的条件.即linux内核空间与用户空间的隔离是根据使用两个不同的
地址空间,而这两个空间需要不同的CPU特权级来访问,从而达到隔离的
目的.同时又通过系统调用机制,实现用户空间访问内核的需求.
Linux进程间隔离
在Linux中进程间的隔离是利用:页表来实现.每个进程有自己的一张页
表,这张页表的所映射的虚拟地址就进程的地址空间.而在进程运行的时
候系统会把它的页表加载为当前的,即这个进程只能访问它自己页表映
射的内存空间,也就是它的进程地址空间.从而达到隔离的目的.