当前位置: 首页 > 科技观察

操作系统内存管理,这8个问题你能答对吗?

时间:2023-03-19 17:22:26 科技观察

本文转载自微信公众号《程序喵大师》,作者程序喵大师。转载本文请联系喵喵大师程序公众号。目录1.什么是物理内存2.使用物理内存有什么缺点?3、什么是虚拟内存?4.虚拟内存如何映射到物理内存5.什么是分页内存管理?6.什么是缺页中断?7.页面置换算法有哪些?8.什么是分段内存管理?01什么是物理内存?我们常说的物理内存的大小是指内存条的大小。一般买电脑的时候都会看内存条的容量。也就是说,如果内存条的大小是100G,那么100G都可以用吗?不一定,更多取决于CPU地址总线的位数。如果地址总线只有20位,那么它的寻址空间就是1MB,即使能装100G的内存条也没意义,物理内存大小只能算1MB。02使用物理内存有什么缺点?这样每个程序都可以直接访问物理内存。有两种情况:1、系统中只有一个进程在运行:如果用户程序可以操作物理地址空间中的任意地址,他们很容易在不经意间破坏操作系统,导致系统出现各种奇怪的问题;2、系统有多个进程同时运行:如图,理想情况下,进程A和进程B可以各自占用物理内存的一侧,两者互不干扰,但这只是理想情况情况。谁能保证程序没有bug?进程B在后台正常运行,程序员在调试进程A时可能会误用进程B,进程B的物理内存导致进程B运行异常,两个程序操作同一个地址空间。第一个程序在某个地址空间写入某个值,第二个程序在同一地址写入不同的值。会导致程序运行出现问题,所以直接使用物理内存并不能保证所有进程的安全。如何解决以上问题?考虑为内存创建一个新的抽象概念:地址空间,地址空间为程序创建了一个抽象内存,是进程可以用来寻址内存的一组地址。同时,每个进程都有一套自己的地址空间,一个进程的地址空间独立于其他进程的地址空间。如何为程序创建独立的地址空间?最简单的方法是将每个进程的地址空间映射到物理内存的不同部分。这确保不同的进程使用不同的地址空间。该实现为每个进程提供了一个基地址A和一个界限B。进程使用的空间为x,对应的物理地址为A+x。同时需要保证A+x