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

1. 设置虚拟盘并初始化

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

43b21de26388908f768c460858931d77.png

实现代码如下

453442d0476d5cbc3d4b07f5656ff925.png
e26c8891b08ae119dfde78c2578e772e.png
aff0508a6eb5443be68d31d0e573cabe.png
d7600653970344b0d3cf62cd8694dc0f.png
a7359de277fd5fd33c638fd37a5fb408.png
ab08eb3f0963cede5a14128c84f867b1.png

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

d6ac09e6b430b8ce1eeda4b462b6e239.png

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

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

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

0825409bc7cc65aeb5ffd925d58f898a.png

代码实现如下

306b9a7cf574e3c134be5da876372e1e.png
f594796615c1fb6fda104dd5f57bc530.png
37bba58c8f3f2e73b12ca110c6583e3d.png

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550096.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关闭mysql服务的方法有哪些_MySQL--启动和关闭MySQL服务

介绍了启动服务器的两种方式,以及可能遇到的问题第一种:系统服务1)可以通过右击方式一步步找到服务右击计算机->选择管理->找到服务,然后双击打开,找到mysql,我安装的是mysql8.0所以服务的名称显示是mysql80&…

devstack mysql_DevStack部署OpenStack开发环境 - 问题总结

建议在使用DevStack搭建OpenStack开发环境前,先安装好开发工具包组.特别是gcc,主要一定是在yum update -y 之前,否则更新完系统后,在安装开发工具包会出现很多依赖包因为版本更新而无法安装.要部署OpenStack需要注意若电脑配置不高,我自己的经验是先最小化或基本Web安装,然后,再…

linux 安装RabbitMQ 注意版本

Linux下安装RabbitMQ 一下载依赖包 1.下载Rabbitmq 所依赖的环境gcc、erlang包和rabbitmq包,这里演示是网上下载gcc 依赖 1yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c kernel-devel m4 ncurses-devel tk tc xzerla…

jquery.js把我的时间修改了为什么?_电气老手在PLC程序调试修改时的几个必备小窍门,看你知道几个?...

我们工程师在设计程序,调试程序,修改程序的时候,为了方便以后对程序的理解,最好是对程序进行注释,能够对程序进行注释也是比较好的一个习惯。为什么这么说呢?因为我们人的脑容量是有限的,或多或…

android如何用adb shell启动应用程序

昨天研究了很久,可能由于基础比较菜吧,所以,没有搜到一个可以直接解决问题的,需要综合几个之后,问题得以解决,记下方法,为了方便自己之后遇到同样问题,也为了方便搜索同样问题的朋友…

mysql数据库删除操作指令_MySQL删除数据库的命令是什么?

删除数据库的命令是:“DROP DATABASE 数据库名;”;例“drop database student;”就是删除名为student的数据库。“DROP DATABASE”语句可以用于删除数据库。使用drop 命令删除数据库drop database语句可以用于删除数据库。drop database命令格式&#xf…

mariadb与mysql的兼容_「MySQL架构」MariaDB versus MySQL: Compatibility

完全替代MySQLMariaDB版本的功能相当于一个“完全替代”的MySQL版本,但有一些限制。这意味着:MariaDB的数据文件通常是二进制的,与MySQL版本的数据文件兼容。所有的文件名和路径通常是相同的。数据和表定义文件(.frm)文件是二进制兼容的。请参阅下面的注…

mysql数据存储和函数_MySQL数据库——存储和函数

一、存储过程1 基本语法CREATE PROCEDURE sp_name ([proc_parameter[,...]])[characteristic ...] routine_body格式[IN|OUT|INOUT]param_name type2. IN、OUT、INOUT参数(1)带84存储过程实例1 #带多重IF的存储过程2 CREATE PROCEDURE SP_SGRADE_LEVEL(IN p_level char(Repeat语…

在Salesforce中创建Approval Process

在Salesforce中可以创建Approval Process来实现审批流程的功能,实际功能与我们常说的Workflow很相似,具体的设置步骤如下所示 1):选择对应的Object去创建对应的Approval Process 2):点击下图中的Create New…

Python 运算符括号

转载于:https://www.cnblogs.com/fanweisheng/p/11236193.html

计算机二级java试题_计算机二级考试《Java》试题及答案

计算机二级考试《Java》试题及答案选择题(每小题2分,共50分)下列各题A、B、C、D、 四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应的位置上,答在试卷上不得分。(11)下列对Java语言的叙述中,错误的是()…

绕过waf mysql爆库_iwebsec刷题记录-SQL注入漏洞

被推荐了这个web平台,感觉挺适合新手的,网上搜了下没看到有人写wp,这里本入门萌新来稍微整理下自己解题的过程SQL注入漏洞01-数字型注入http://localhost:32774/sqli/01.php?id1发现有报错You have an error in your SQL syntax; check the …

【Vue】组件的基础与组件间通信

转载:https://segmentfault.com/a/1190000016409329 Vue.js 最核心的功能就是组件(Component),从组件的构建、注册到组件间通信,Vue 2.x 提供了更多方式,让我们更灵活地使用组件来实现不同需求。 一、构建组…

设计模式的功力长了!

今天醒来后,感觉理解了原来比较复杂的一些设计模式,很好,就像小时候感觉长高一样。学习设计模式有一年多了。进步需要时间!

java 验证码校验_JavaWeb验证码校验功能代码实例

后台生成验证码工具方法/** 设置图片的背景色*/public static void setBackGround(Graphics g, int WIDTH, int HEIGHT) {// 设置颜色g.setColor(Color.WHITE);// 填充区域g.fillRect(0, 0, WIDTH, HEIGHT);}/** 设置图片的边框*/public static void setBorder(Graphics g, int…

CSDN登陆校验码模式识别程序

下班后,吃饭前快速写了这么一个东西,以证明图片验证码的脆弱。防君子,不防XX。本来应该使用HTTP协议直接从CSDN的登陆页面DOWN校验图片的,因为时间仓促,所以没有仔细设计。只是做一个示例,还要麻烦大家手工…

关于异性朋友

听到别人在问一个问题:“可是你在大学里又有几个很要好的女性朋友?”   想到自己,却是一个没有。奇怪啊,我虽然木讷,但还不到白痴的地步,怎么会一个没有呢?思讨一下,明白了&#…

java全文检索工具_全文检索工具elasticsearch:第三章: Java程序中的应用

搭建模块创建二个项目gmall-list-service的appliction.properties:server.port8073spring.datasource.urljdbc:mysql://localhost:3306/gmall?characterEncodingUTF-8spring.datasource.usernamerootspring.datasource.passwordrootmybatis.configuration.map-underscore-to-c…

初探机器学习之使用百度EasyDL定制化模型

一、Why 定制化模型 一般来说,各大云服务厂商只会提供一些最常见通用的AI服务,针对具体场景的AI应用则需要在云服务厂商提供的服务之上进行定制。例如,通常的图像识别只能做到分析照片的主题内容,而我的需求是给定指定场景的图片&…

Microsoft SQL Server Desktop Engine安装过程中遇到的问题(2)

今天下午没课,又在玩电脑了,想起昨天没解决的问题,心里有点不爽,遇到问题就要解决嘛^_^。 我把昨天装的study实例卸载了,仔细研究了一下自述文件,按照里面的说明,我在C盘根目录新建了一个名为 M…