1663_MIT 6.828 JOS页面的分配与回收
全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com)
继续往下分析JOS的启动,上一次解决了check_page_free_list()中遇到的一些问题。继续往下,会是一个分配的检查。
这部分执行的时候会出现panic。
以上是运行时候的错误提示。
其实,看到这里就很清楚为什么出错了,因为page分配的接口没有实现。
关于这个函数接口的实现其实还是容易的,因为这个动作的定义比较具体。在动作上,只是分配一个页面,而传入的参数是存储初始化属性的指定。更重要的一点,这里还给出来了用到的接口。有了这些信息之后,完成这个接口其实就跟做一个拼图差不多了。
这一次的运行效果结合代码信息可以看得出来,至少是前面的测试是通过了。接下来,再去理顺其他的接口。
单纯的一个页面的释放占用还是很容易实现的,不过按照这里的提示这里加了一个panic防止出现占用中的存储被释放的情况。而存储的释放过程其实很简单,就是把相应的page插入到page_free_list链表之上。
继续看这个页面分配的检查接口,在检查完了页面的分配以及回收之后,进一步检查了对于分配的存储的写入操作。除此之外,分配时候的清零操作等特殊的处理也做了测试。一切测试结束后,恢复之前的page_free_list。
最后,释放当前获取到的page,检查了链表中page的数目。这个链表的元素数目在最开始的时候进行了一个统计,这里通过统计一个丢弃一个的方式完成了“蜕壳”处理。最后出入的信息应该是对等的。
这是最初的处理,尤其值得注意的是这里的操作是在链表出现变化之前的操作。
处理完之后的测试,从测试的结果看到存储分配以及回收部分的测试现在是通过了。当然,这里又看到了一个异常问题。这个问题的解决,这个留待下一次探索了。
1663_MIT 6.828 JOS页面的分配与回收相关推荐
- MIT 6.828 JOS学习笔记17. Lab 3.1 Part A User Environments
Introduction 在这个实验中,我们将实现操作系统的一些基本功能,来实现用户环境下的进程的正常运行.你将会加强JOS内核的功能,为它增添一些重要的数据结构,用来记录用户进程环境的一些信息:创建 ...
- Linux之物理页面的分配
Linux中存储空间按连续与否可分为连续存储空间和不连续存储空间.连续存储空间以UMA为代表,非连续存储空间以NUMA为代表.在内核中,通过条件编译选择项CONFIG_DISCONTIGMEM可以选择 ...
- 服务器无法通过系统非页面,服务器无法通过系统非页面共享区来进行分配,因为服务器已达非页面共享分配的配置极限。...
局域网共享无法访问,查看系统日志,会有这个出错信息: 服务器无法通过系统非页面共享区来进行分配,因为服务器已达非页面共享分配的配置极限. System - Provider [ Name] srv - ...
- 操作系统 -- 内存管理(分配与回收)
目录 内存的分配方式 连续内存分配 单一连续分配(过时) 固态分区分配 动态分区分配 动态分区分配算法 首次适应算法 最佳适应算法 最坏适应算法 邻近适应算法 非连续内存分配 基础定义 地址转换 十进 ...
- Linux内存分配与回收——伙伴算法
目录 简介 背景 内存管理机制 当前存在的问题 伙伴算法 算法原理 内存分配 内存回收 优缺点分析 参考 简介 在Linux系统中,内存的分配与回收速率直接影响系统的存取效率.当内核频繁请求和释放不同 ...
- 操作系统之 动态分区分配与回收
算法思想: 1.分区的个数和大小不是固定不变的,而是可变的,随装入的作业动态划分,且不会产生内部碎片. 2.外部碎片: 频繁的分配与回收物理页面会导致大量的.连续且小的页面块夹杂在已分配的页面中间,就 ...
- 内存管理:内存的分配与回收
内存管理:内存的分配与回收 1 内存的分配与回收 1.1 连续分配 1.1.1 单一连续分配 1.1.2 固定分区分配 1.1.3 动态分区分配 1.2 非连续分配 1.2.1 分段存储管理 1.2. ...
- 实验四 主存空间的分配和回收
实验四 主存空间的分配和回收 一.目的和要求 1.1. 实验目的 用高级语言完成一个主存空间的分配和回收程序,以加深对动态分区分配方式及其算法的理解. 1.2. 实验要求 采用连续分配方式之动态分区分 ...
- 浅谈java内存分配和回收策略
一.导论 java技术体系中所提到的内存自动化管理归根结底就是内存的分配与回收两个问题,之前已经和大家谈过java回收的相关知识,今天来和大家聊聊java对象的在内存中的分配.通俗的讲,对象的内存分配 ...
最新文章
- elasticsearch多表关联查询_Mybatis【15】 Mybatis如何实现一对一的情况多表关联查询?...
- hdu5184 给出(和)前半段问后面有多少种加括号方法使合法:类似卡特兰数+逆元模板...
- Jboss AS7 的一些配置备忘
- 纯CSS制作各种各样的网页图标(三角形、暂停按钮、下载箭头、加号等)
- c# 弹性和瞬态故障处理库Polly
- AT4378-[AGC027D]ModuloMatrix【构造】
- WebLogic Classloader分析工具
- org.apache.jasper.JasperException: Unable to compile class for JSP:
- Ubuntu 如何为 XMind 添加快速启动方式和图标
- 如何在MyEclipse上耍Chrome
- win10如何下载python3_Win10环境中如何实现python2和python3并存
- 学生宿舍管理项目开发计划书_第六组学生宿舍管理系统项目计划书
- arm-linux-gcc交叉编译器和gcc编译器的下载地址
- Java应用分层(阿里巴巴Java开发手册)
- python 3d绘图平面_python 利用matplotlib在3D空间中绘制平面的案例
- 51单片机:编程实现数码管显示0~999999的秒表计时,高位的0不显示。
- 2.1.1队列——雏形(初始版本)
- 北京CMMB信号ESG的Schedule据文件--8月份数据
- 微信邮箱格式是什么意思?为什么我们都在使用微信邮箱?
- spring cloud搭建教程
热门文章
- 单向测径仪助力各行各业自动化生产
- 比较好用的Smartdraw
- 替换XP的系统字体为Vista的Segoe UI字体的较完美方法
- Java多线程-新特征-阻塞队列ArrayBlockingQueue
- DFS(深度搜索)无向图遍历(JAVA手把手深入解析)
- laravel安装-中文语言包
- oracle undoautotune,Oracle 隐藏参数:_undo_autotune
- 银行卡类型api,通过银行卡查询判断卡类型
- 思科nat配置实例_思科3750交换机配置DHCP服务器实例网络环境
- 黑盒测试和白盒测试技术总结