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,一经查实,立即删除!

相关文章

centos7 Failed to start iptables.service: Unit not found

在CentOS 7或RHEL 7或Fedora中防火墙由firewalld来管理 添加 firewall-cmd --zonepublic --add-port80/tcp --permanent (--permanent永久生效,没有此参数重启后失效)firewall-cmd --zonepublic --add-port1000-2000/tcp --permanent 重新载…

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

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

[浪风分享]很简单的查看电脑所支持的最大内存的方法--磨刀不误砍柴工

硬件操作系统====决定支持的最大内存  在开始---运行处输入cmd(或者按住winkdyR键输入CMD),打开命令窗口,输…

mysql mysar_使用mysar分析squid日志(日志存mysql)

需要的包:php5-mysql #安装后php才能联系数据库php5-commonphp5-cli #执行php脚本需要mysql-server开始安装:下载最新的mysar包tar zxvf mysar-2.0.6.tar.gz -C /usr/local-#将mysar解压到/usr/local下ln -s /usr/local/mysar/etc/mysar.apache /etc/apache2/…

mysql语句怎么记_Mysql常用语句(记一下,免得忘)

1、去掉某列记录中的特殊字符例如:/r,update test_table set keyreplace(key, char(13), );其他特殊字符类似。2、查询重复的记录Select weixinid From dianxin_highda_detail Group By weixinid Having Count(*)>1;3、从txt向数据库导入记录load dat…

ZSH终端 乱码问题

参考链接 CSDN 转载于:https://www.cnblogs.com/eat-too-much/p/11216073.html

mysql将数据导入mgr_MySQL 8.0.20 MGR数据迁移过程以及注意事项

1.背景近期由于业务调整,需要将Windows Server 2008 MySQL5.5数据库迁移到Windows Server 2012 MySQL8.0集群MGR中,由于实际部署时,有一台机器硬盘损坏,只能构建双节点MGR,在迁移以及应用迁移过程中遇到许多参数与迁移…

安装 搜狗输入法 ubuntu 18

命令 sudo dpkg -i sogoupinyin_2.2.0.0108_amd64.deb sudo apt --fix-broken install 转载于:https://www.cnblogs.com/eat-too-much/p/11216083.html

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

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

docker+mysql创建用户名密码_docker构建私有仓库并设置仓库用户和密码

#搭建私有镜像仓库[rootdocker_test opt]# docker pull registryUsing default tag: latestlatest: Pulling from library/registryGet https://registry-1.docker.io/v2/library/registry/manifests/sha256:b1165286043f2745f45ea637873d61939bff6d9a59f76539d6228abf79f87774…

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…

mysql更新写入数据_七、MySQL插入、更新与删除数据

存储在系统中的数据是数据库管理系统(DBMS)的核心,数据库被设计用来管理数据的存储、访问和维护数据的完整性。MySQL中提供丰富的数据管理语句,包括插入数据的INSERT、更新数据的UPDATE以及删除数据的DELETE语句。7.1、插入数据为表的所有字段插入数据使…

mysql语句随机数_程序生成随机数与SQL语句生成随机数

随机数可以通过程序生成,也可以通过SQL语句生成。通过程序生成随机数时一般采用硬件的编号时间作为种子,这种方法在瞬间插入数据库N条数据的时候会影响随机数的效果,生成很多相邻的插入值相同。所以频繁插入时可以使用SQL语句的内置函数生成随…

BPM的四大主要类型

随着网络的发展,移动BPM、社交BPM、云端BPM将顺应市场需求,成为BPM发展的新趋势,最终成为企业即时管控有效工具。BPM将不断促进制造业信息化的转型与发展。所以很少人会否认业务流程管理(BPM)的价值,更不用说给BPM一个全面定义。根…

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

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

rpm命令包安装mysql_CentOS7使用rpm包安装mysql 5.7.18

说明本文写于2017-05-20,使用MySQL-5.7.18。操作系统为64位CentOS Linux release 7.2.1511 (Core),以桌面形式安装。卸载MariaDBCentOS7默认安装MariaDB而不是MySQL,而且yum服务器上也移除了MySQL相关的软件包。因为MariaDB和MySQL可能会冲突…

mysql phpmyadmin远程_phpmyadmin登录远程mysql数据库

之前只用phpmyadmin登录本地的mysql,管理另一个远程数据库的时候发现,单纯用命令行处理字符串、换行符实在是不好使,所以配置了远程登录mysql,很简单的问题结果没有搜到合适的方法,所以记录下我的配置方式。phpmyadmin…

远程创建的git仓库,第一次与本地仓库进行联动,需要强制推送。

简介 远程创建的git仓库,第一次与本地仓库进行联动,需要强制推送。 参考链接 cnblog 转载于:https://www.cnblogs.com/eat-too-much/p/11220873.html

mysql自带的卸数工具_数据库卸数必备工具下载-数据库数据导出工具(DBexport)下载v1.3官方版-西西软件下载...

DBexport是一款专业的数据库数据导出工具,支持多数据源导出,目前已测试Oracle,MySQL,SQL_SERVER无明显BUG,目前支持图片种的数据库,支持扩展功能,只要有对应的数据库jar和jdbc等信息&#xff0c…

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

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