362 字
2 分钟
什么是分段,什么是分页
分段和分页都是操作系统管理内存的方式,解决的问题不一样。
- 分段:按程序的逻辑结构来划分内存,代码放代码段、数据放数据段、栈放栈段,每个段的大小不固定,取决于实际需要多大。逻辑地址由段号和段内偏移两部分组成,CPU 访问内存时先查段表拿到段的基地址,再加上偏移量得到物理地址。
- 分页:把内存切成固定大小的块,一般是 4KB 一页。程序的虚拟地址空间被切成页,物理内存被切成页框,页表记录每个虚拟页对应哪个物理页框。不管程序逻辑怎么划分,内存管理只认页,够 4KB 就是一页。
两者核心区别:
- 分段粒度粗、有外部碎片
- 分页粒度细、有内部碎片
缺页中断是怎么回事,和普通中断有什么区别?
进程访问一个虚拟地址,如果对应的页不在物理内存里,就会触发缺页中断。内核的缺页处理程序会把需要的页从磁盘加载到内存,更新页表,然后让进程重新执行那条指令。
和普通中断的区别是:普通中断处理完返回下一条指令,缺页中断处理完要重新执行触发中断的那条指令。
目录