"本文主要探讨的是Linux 0.11内核中的内存管理,特别是针对缺页中断处理函数`do_no_page`的深入分析。在Linux早期版本中,内存管理策略注重效率和资源利用率,采用分页机制,不是一开始就为进程分配所有内存,而是按需动态分配。当CPU访问的内存页面不在内存中时,就会触发缺页中断,此时会调用`do_no_page`函数进行处理。 在`do_no_page`函数中,首先通过地址操作取到页面起始地址,并计算相对于进程代码起始地址的偏移量。然后,函数会检查访问地址是否在可执行文件的有效范围内,如果不是,会尝试获取空闲页面。如果无法共享内存,或者没有足够的物理内存可用,函数会尝试分配新的页面。这涉及到`get_free_page`和`oom`函数,后者用于处理内存不足的情况。 函数还会将逻辑块号转换为物理块号,通过`bmap`和`bread_page`函数从磁盘读取所需的页面数据。对于超出数据段的部分,函数会清零。最后,通过`put_page`函数将页面映射到内存,如果映射失败,则释放已分配的页面并报告内存不足。 内存管理在Linux 0.11中是模块化的,内核区、缓冲区、虚拟盘和主内存区都有明确的划分。内核区用于存放内核代码,确保其高效加载;缓冲区用于文件系统缓存;虚拟盘作为可选部分,可能用于虚拟设备管理;主内存区则是用户进程的活动区域,由操作系统负责管理和分配。内存初始化过程中,会根据BIOS提供的信息计算可用内存大小,并根据特定条件调整缓冲区的大小,以优化内存分配。 文章还提到了内核程序与一般进程的内存隔离,内核程序因其频繁调用和重要性,被单独划出一块区域,以简化管理。此外,内存初始化代码还考虑了不同内存大小的处理,确保在有限的硬件资源下合理利用内存。 `do_no_page`是Linux 0.11内存管理系统中的关键部分,它反映了早期Linux内核对内存管理的精细设计和优化,旨在提高内存使用效率,同时确保系统的稳定性和性能。"
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/5e8459474d234afd9b75192ae6ee76ce_weixin_42206399.jpg!1)
- 粉丝: 19
- 资源: 2万+
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 多模态联合稀疏表示在视频目标跟踪中的应用
- Kubernetes资源管控与Gardener开源软件实践解析
- MPI集群监控与负载平衡策略
- 自动化PHP安全漏洞检测:静态代码分析与数据流方法
- 青苔数据CEO程永:技术生态与阿里云开放创新
- 制造业转型: HyperX引领企业上云策略
- 赵维五分享:航空工业电子采购上云实战与运维策略
- 单片机控制的LED点阵显示屏设计及其实现
- 驻云科技李俊涛:AI驱动的云上服务新趋势与挑战
- 6LoWPAN物联网边界路由器:设计与实现
- 猩便利工程师仲小玉:Terraform云资源管理最佳实践与团队协作
- 类差分度改进的互信息特征选择提升文本分类性能
- VERITAS与阿里云合作的混合云转型与数据保护方案
- 云制造中的生产线仿真模型设计与虚拟化研究
- 汪洋在PostgresChina2018分享:高可用 PostgreSQL 工具与架构设计
- 2018 PostgresChina大会:阿里云时空引擎Ganos在PostgreSQL中的创新应用与多模型存储
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)