熬之滴水成石:最想深入了解的内容--windows内核机制(15)
66--内存管理(4)
说说在windows中内存空间初始化的事,开始的开始通过处理器的分页机制,预先建立相应足够的页表以便页表来访问物理内存。预先建立的这个物理内存的是windows自己的加载程序,这个加载程序在业界叫作ntldr。这个东东将内核模块映射到特定的虚拟地址上,这里面关联到了一系列的方法调用。这里面有一系列的方法调用,像kisystemstartup函数,它就是用来作内核的初始化。当然它也是调用其它的方法进行这个事情,它调用的函数叫作kiinitalizekernel函数,该函数实际上又调用了另一个叫explinitializeexcutive的方法。该方法真正做了些事情:它初始化了内存管理器和其它组件的变化。可以说explinitializeexcutive的方法让内存系统初始化的开始,这个时候被划分成2个阶段,这两个阶段都调用了MmInitSystem函数,这2个阶段做的事情也不一样,第一个阶段主要也是完成数据结构的初始化以及一些全局变量的设置。在这个阶段中,psinitsystem创建了系统线程,让系统线程能够执行。第二个阶段是从phase1initialization方法开始的,该方法主要调用了Mminitsystem和Mminitmachinedependent。这个两个函数一看就是做init用的,Mminitsystem主要用初始化系统缓存的作用,设置换页内存变量,Mminitsystem会根据系统可用的页面数量对相应全局变量进行赋值,然后初始化内存管理有关的全局变量。Mminitmachinedependent这个函数功能是真正能让windows的虚拟内存运转起来,该方法是真正的建立页目录,以及建立页表来映射内存的各个区域。总而言之,Mminitsystem的作用就是为系统建立起缓存结构,设置全局变量。而Mminitmachinedependent主要是对换页内存池的初始化工作和页面管理数据库的初始化工作,它正式依据传递进来的物理内存描述符链表信息来求出物理内存页面的数量以及空闲物理内存的最低地址。它们各自的任务保证了windows在内存初始化时的工作顺利进行,一组组的全局变量划定了各个区域的范围。第一个阶段的任务完成数据结构的初始化,实际上也完成了地址空间的划分工作,根据初始化参数让各部分区域的范围相对比较合理。这个阶段为系统内存管理建立了页目录和页表结构并且也完成了非换页区域的物理页面分配。在第二个阶段则主要在内存管理的任务上,完成内存管理系列中的一个个管理任务的初始化。
(未完待续..................)
熬之滴水成石:最想深入了解的内容--windows内核机制(15)的更多相关文章
- 熬之滴水成石:最想深入了解的内容--windows内核机制(6)
58 进程和线程(3) 说完进程再说说线程,线程相比于进程其实有更多可说的内容.首先实现线程调用的数据结构是个栈,该栈记录了调用方法的信息这里面也包括了函数调用及返回的地址.线程肯定是属于某个进程,其 ...
- 熬之滴水成石:Spring--精简的J2EE(7)
49--持久性 关于持久性在最早的Delphi单元中,就曾介绍过.持久性是数据库中读取,保存,或删除数据的过程.毫无 ...
- 三十四、在SAP的屏幕选择中,将英文替换成我们想要的文本内容
一.我们在代码中定义了一个选择屏幕,但是对应的显示界面为英文 界面如下 二.我们选择[转到]-[文本元素] 三.默认的文本内容是问号和三个点 四.我们修改成我们需要的,并激活这个文本,如果不激活会丢失 ...
- python3 利用正则获取网页中的想保存下来的内容
需要获取某个网页中表格部分中某个产品的成份 分析在html中成份的元素代码 <a href="/composition/4c3060178d1184935a48c4e51be4f63f ...
- 不想停机?快使用Windows Server 2016滚动升级
[TechTarget中国原创] Windows Server环境中的关键任务工作量总是密集的.工作量会主要集中在Hyper-V部署集群.硬件故障转移集群或者外来集群的顶部.集群中常用的表格都是基于F ...
- matlab转c++代码实现(主要包含C++ std::vector,std::pair学习,包含数组与常数相乘,数组相加减,将数组拉成一维向量,图片的读入等内容)
MATLAB部分: xmap = repmat( linspace( -regionW/2, regionW/2, regionW), regionH, 1 );%linspace [x1,x2,N] ...
- mysql对查出来的值,在sql里面拼接我们想要拼接的内容
MySQL中concat函数使用方法:CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意:如果所有参数均为非二进制字符串 ...
- 将py文件打包成exe文件
PyInstaller工具是跨平台的,它既可以在 Windows平台上使用,也可以在 Mac OS X 平台上运行.在不同的平台上使用 PyInstaller 工具的方法是一样的,它们支持的选项也是一 ...
- Python如何将py文件打包成exe
安装pyinstaller 打开cmd窗口,输入pip install pyinstaller,命令行输出successfully表示成功. 生成exe文件 一.单个py文件 在py文件目录下,打开c ...
随机推荐
- 孙弘与Masa Maso 做互联网最贵的衬衫(2)_人物对话_中国时尚品牌网
孙弘与Masa Maso 做互联网最贵的衬衫(2)_人物对话_中国时尚品牌网 孙弘与Masa Maso 做互联网最贵的衬衫(2)
- 随机生成A~Z的字母CharDemo
- ActionBar开启Overlay Mode(覆盖模式)
以下内容参考自Android官网http://developer.android.com/training/basics/actionbar/overlaying.html#EnableOverlay ...
- c++,纯虚函数与抽象类
1.纯虚函数的定义: (1)虚函数被“初始化”为0的函数.声明纯虚函数的一般形式是virtual 函数类型 函数名(参数表列) =0;(2)纯虚函数没有函数体:(3)最后面的“=0”并不表示函数返回值 ...
- (Problem 21)Amicable numbers
Let d(n) be defined as the sum of proper divisors of n (numbers less than n which divide evenly into ...
- net core开发环境准备
net core开发环境准备 1.1 安装sdk和运行时 浏览器打开网址https://www.microsoft.com/net/download, 到.Net Core下载页面. 根据操作系统, ...
- 【HTTP 2】 序言
笔者序 HTTP 2 这个关键词在各大 IT 网站出现频率节节升高,然而出现在大家视野里的,仍以浅析居多.虽有一部分实战(如 InfoQ 之前推送的 iOS App 网络层次架构优化),但针对 HTT ...
- 设计模式 ( 十五 ) 中介者模式Mediator(对象行为型)
设计模式 ( 十五 ) 中介者模式Mediator(对象行为型) 1.概述 在面向对象的软件设计与开发过程中,根据“单一职责原则”,我们应该尽量将对象细化,使其只负责或呈现单一的职责,即将行为分布到各 ...
- HTML5实现IP Camera网页输出
HTML5实现IP Camera网页输出 这两天做OA项目.有一个要通过IP Camera将视频流输出到浏览器端的模块.尽管如今买到的摄像头都会提供浏览器和client的实现,可是一般来说都是仅仅支持 ...
- Python学习-使用matplotlib画动态多图
最近常常使用matplotlib进行数学函数图的绘制,可是怎样使用matplotlib绘制动态图,以及绘制动态多图.直到今天才学会. 1.參考文字 首先感谢几篇文字的作者.帮我学会了怎样绘制.大家也能 ...