内存段及内存管理
发布日期:2021-05-18 09:29:40 浏览次数:18 分类:精选文章

本文共 1034 字,大约阅读时间需要 3 分钟。

内存管理与异常处理机制

内存分配在现代操作系统中采用段式管理模式,每个进程根据特性从不同区域分配内存。每个内存段维护sbrk和max_stack两个边界值,用于检查页面合法性。如果发现异常,进程可能会直接core dump,尤其是内核进程,可能导致系统整体崩溃。

DMA映射与数据一致性

DMA操作在内存管理中扮演重要角色,主要分为两种类型:跨驱动和跨进程的异步访问。这种机制允许进程间直接通过DMA完成数据交换,无需在CPU层面频繁地在地址空间交换数据。然而,这一机制要求严格保证数据在使用前被彻底释放,否则当前进程将被暂停,等待相关处理完成。

页面异常处理

程序在内存管理过程中可能会遇到以下页面异常:

  • Page Faults Not Allowed

    当中断处理禁止操作(通常发生在内核代码中)时,默认会触发kernel exception。此时,vmm可能会触发core进程或导致操作系统崩溃。

  • Page Does Not Exist

    可能原因包括页面号超出sbrk和max_stack范围,或Segment ID非法。

  • Segment Faults

    请求的段地址不在当前段表中,vmm会尝试重新加载相关段。如果未能找到段号,进程会与非法访问地址处理同样的方式处理。

  • Memory Exceptions

    如果发生内核内存异常,默认会调用预定义处理例程;若发生用户空间异常,进程会接收到SIGSEGV信号并被core。

  • 致命内存异常

    内核处理部分对异常处理的响应更加严格,包括:

    • 中断处理期间发生页面缺失;
    • 访问内核函数数据发生保护异常;
    • 内核空间内存满或数据IO错误;
    • 指令或数据存储意外发生时无定义异常处理(尤其是当访问的页面不在内存时)。

    硬件段特性

    硬件段寄存器中保留了4位用于段属性标记:

    • SID bit 0 (位8):用于标记页面正在或即将进行I/O,避免页面被高频访问造成性能问题。
    • SID bits 1-3 (位9-11):支持文件系统访问超过2Gb的文件,无需占用额外的8位段ID。

    网页保护机制

    通过设置PP位,可以对指定页面实施保护,硬件层面实现访问控制。访问页面时,系统会检查以下关键信息:

    • 当前执行状态(用户模式或内核模式,存储在MSR中);
    • 对应的保护位(如Kp或Ks)在段寄存器中的设置;
    • 页表条目中的PP位。

    页面PP位可能的设置包括:

  • 10:无访问限制。
  • 11:仅允许写操作。
  • 这些机制共同构成了现代内存管理和安全防护的重要基础。

    上一篇:VMM物理内存、虚拟内存管理,偷页算法
    下一篇:什么是ABI

    发表评论

    最新留言

    逛到本站,mark一下
    [***.202.152.39]2025年04月22日 20时03分04秒