目录
操作系统的内存管理子系统
操作系统的内存管理子系统,主要工作分为三个方面:
第一,物理内存的管理
第二,虚拟地址的管理
第三,虚拟地址和物理地址如何映射
操作系统的内存管理子系统会将将不同进程的虚拟地址和不同内存的物理地址映射起来。
并不是所有的虚拟内存都会分配物理内存,只有那些实际使用的虚拟内存才分配物理内存,
并且分配后的物理内存,是通过内存映射来管理的。
真正能够使用会物理地址的,只有内存管理子系统;
其他都是用虚拟地址;
虚拟内存
虚拟空间一切二:
一部分用来放内核的东西,称为内核空间
一部分用来放进程的东西,称为用户空间
进程在用户态时,只能访问用户空间内存;只有进入内核态后,才可以访问内核空间内存。
虚拟内存中的用户空间是进程独享的;
虚拟内存中的内核空间是进程共享的;所有进程通过系统调用进入到内核之后,看到的虚拟
地址空间都是一样的。虽然内核栈是各用各的,但是如果想知道的话,还是能够知道每个进程的内
核栈在哪里的。所以,如果要访问一些公共的数据结构,需要进行锁保护。
用户态和内核态的划分
用户空间:代码、全局变量、堆、栈、内存映射区等;
内核空间:内核的代码、全局变量、内核栈,内核中动态分配的内存;