1. 设置虚拟盘并初始化

接下来main函数将对外设中的虚拟盘区进行设置。 检查makefile文件中"虚拟盘使用标志"是否设置, 以此确定系统是否使用了虚拟盘(假设有虚拟盘,大小设置为2 MB)。 操作系统从缓冲区的末端起开辟2MB内存空间设置为虚拟盘,主内存起始位置后移2MB至虚拟盘的末端

实现代码如下

在rd_init()函数中,先要将虚拟盘区的请求项处理函数do_rd_request()请求项函数控制结构blk_dev[7]的第二项挂接。 blk_dev[7]的主要功能是将某一类设备与它对应的请求项处理函数挂钩。 目前操作系统最多可以管理6类设备。 这个挂接动作意味着以后内核内核能够通过调用do_rd_request函数处理与虚拟盘相关的请求项操作。挂接之后,将虚拟盘所在的内存区域全部初始化为0。

最后将虚拟盘区的长度值返回。这个返回值将用来重新设置主内存区的起始位置。

2. 初始化内存管理结构mem_map

对主内存区起始位置的重新确定,标志着主内存区和缓冲区的位置和大小已经全都确定,系统 开始调用mem_init()函数。 先对主内存区的管理结构进行设置。

代码实现如下

系统通过mem_map[]对1MB以上的内存分页进行管理,记录一个页面的使用次数。 mem_init()函数先将所有的内存页面使用计数均设置成USED(100,即被使用),然后再将主 内存中的所有页面使用计数全部清零,系统以后只把使用计数为0的页面视为空闲页面。系统不对1MB以内的内存空间用这种分页方法管理,是因为操作系统对内核和用户进程采用了两套不同 的分页管理方法。内核采用分页管理方法,线性地址和物理地址是完全一样的,是一一映射的,等价于内核可以直接获得物理地址。用户进程线性地址和物理地址差异很大,之间没有可递推的 逻辑关系。操作系统目的就是让用户进程无法通过线性地址推算出具体的物理地址,让内核能够 访问用户进程,用户进程不能访问其他的用户进程,更不能访问内核。 1MB以内是内核代码和 只有由内核管控的大部分数据所在内存空间,是绝对不允许用户进程访问的。 1MB以上,特别是 主内存区主要是用户进程的代码、数据所在内存空间,所以采用专门用来管理用户进程的分页管理方法。

android 设置setmultichoiceitems设置初始化勾选_Linux内核启动:虚拟盘空间设置和内存管理结构初始化...相关推荐

  1. el-tree设置利用setCheckedNodessetCheckedKeys默认勾选节点,以及通过setChecked新增勾选指定节点

    实现目标:在生成el-tree时,默认勾选其中某几个选项:或在进行某个选项的选中时,同时勾选上另一个选项. 实现效果: 在生成树结构时,默认勾选其中的两个选项. 在勾选其中一个选项时,另一个选项也被同 ...

  2. 启动期间的内存管理之初始化过程概述----Linux内存管理(九)

    转载地址:https://blog.csdn.net/gatieme/article/details/52403148 日期 内核版本 架构 作者 GitHub CSDN 2016-09-01 Lin ...

  3. linux nand 坏块_linux内核中对nand的坏块管理

    闲来无事,追踪了下linux内核中对nand的坏块管理代码.大致记录一下. 内核中对nand的坏块管理是在nand的驱动中实现的,一般情况下,我们在实现nand控制器的驱动时不用考虑坏块的管理,这些机 ...

  4. android 设置setmultichoiceitems设置初始化勾选_阿里巴巴Java开发手册建议创建HashMap时设置初始化容量,但是多少合适呢?...

    集合是Java开发日常开发中经常会使用到的,而作为一种典型的K-V结构的数据结构,HashMap对于Java开发者一定不陌生. 关于HashMap,很多人都对他有一些基本的了解,比如他和hashtab ...

  5. layui table勾选框的修改_layui怎么设置checkbox勾选

    方法1 在返回的json中设置LAY_CHECKED为true,页面上的checkbox就是选中状态了.data":[ {"name":"北京市",& ...

  6. checkbox已设置为checked--true-但不勾选问题解决方法(只第一次勾选有效)

    一.出现的问题及解决方法:  今天在写一个table相关插件的时候无意中发现了这样一个问题,记得以前在写这种控制checkbox选中与非选中的代码时并没有这种bug,当时也是用的checked属性,而 ...

  7. Linux 内存管理(1)--物理内存初始化

    1 内存初始化总体流程 内核版本:Linux 4.14 硬件平台:IMX6DL-SABRESD start_kernel() |----page_address_init() |----setup_a ...

  8. 饿了么UI elementUI中的el-table勾选框设置默认勾选、禁用

    最近项目中有这个一个需求:请求后端列表数据,根据数据中remark值自动设置table的勾选框的勾选状态及禁用状态, 如果remark="1",是勾选状态且该勾选框变为禁用状态:反 ...

  9. elementUI中的el-table勾选框设置默认勾选、禁用

    elementUI中的el-table勾选框设置默认勾选.禁用 最近项目中有这个一个需求:请求后端列表数据,根据数据中remark值自动设置table的勾选框的勾选状态及禁用状态, 如果remark= ...

最新文章

  1. 在Python中调用C++,使用SWIG
  2. 如何使用ES6在JavaScript中有条件地构建对象
  3. mysql数据导入导出 CSV格式_mysql数据一键导出到csv文件
  4. Python 数据结构 树
  5. 证券基金行业大数据实施痛点及选型关注点
  6. 平板电脑的桌面计算机图标,苹果平板电脑桌面图标删除不了怎么办
  7. linux 鼠标光标由箭头变成十字形恢复方法
  8. 新一代天气雷达信息共享平台
  9. 用MySQl创建供应商标s_建立一个供应商、零件数据库。其中供应商表S(Sno - 问答库...
  10. Some file crunching failed, see logs for details
  11. 计算机中人民币符号在哪儿,详细教您电脑怎么打人民币符号
  12. [BZOJ3772]精神污染 主席树上树+欧拉序
  13. 阿里云AI训练营SQL入门到实践 Task3:视图、子查询、函数等
  14. [高数][高昆轮][高等数学上][第一章-函数与极限]04.无穷小与无穷大
  15. 程序员年底失业,到底是该年前找工作好还是年后找工作好?
  16. C语言函数递归—经典递归问题
  17. 美团脱颖而出的经验_使用条件格式使重要的Outlook邮件脱颖而出
  18. Elasticsearch锁定内存失败解决办法
  19. 11 | 你能写出正确的网址吗?
  20. 分享30个小升初简历模板,总有一款适合您

热门文章

  1. os和shutil模块
  2. Android Jenkins自动化构建之路
  3. 【Microsoft Azure学习之旅】测试消息队列(Service Bus Queue)是否会丢消息
  4. 学习的回顾--数组的有关内容
  5. C#开发高亮语法编辑器(一)——TextBox ,RichTextBox
  6. 二维小波变换_【外文文献速读】实时二维水波模拟
  7. antd 获取table选中行数据_element-ui 组件el-table默认选中行setCurrentRow采坑记
  8. concat特征融合_MSFNet:多重空间融合网络进行实时语义分割(北航和旷视联合提出)...
  9. 计算机boot进入u盘启动,暗影精灵5怎么设置u盘启动 暗影精灵5设置u盘启动方法...
  10. mysql将查询数据另存