熬之滴水成石:最想深入了解的内容--windows内核机制(15)

原创 2013年12月02日 22:37:10

                                                                                      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内核机制(2)

54-复杂的windows系统 可以说windows是一个复杂的系统,也是许多IT人士接触最为多的一个操作系统。当然windows无论在国外还是在世界范围内都有广泛的客户群体。那么在这个操作系统中会是...

熬之滴水成石:最想深入了解的内容--windows内核机制(8)

60 进程和线程(5) 好了,该说说执行体层次的进程和线程的处理结构了。在执行体这端,数据结构是EPROCESS,这也是一个相对比较复杂的结构体。首先会有一个域会专门与之前提到的内核进程的KPROC...

熬之滴水成石:最想深入了解的内容--windows内核机制(10)

62--进程和线程(7) 这个章节说说线程的调度,我所理解的多线程并发在windows中现象实际上就是当线程个数远远大于处理器的数量。而在处理这些线程时,肯定是有的线程先处理,有些延后处理。这里就涉及...

熬之滴水成石:最想深入了解的内容--windows内核机制(1)

53--关于OS 本来接着是要写HTML的,但是一次偶遇让我改变了想法。近段时间,我遇到了一个技术牛人褚老大,他跟我提出一些关于OS的事情,那个时候我才发现自己的深入是那么的肤浅,关于windows...

熬之滴水成石:最想深入了解的内容--windows内核机制(3)

55--内存管理 在winodwsOS的内存管理中,在32位的系统中是将虚拟空间地址按照0-4GB的线性地址空间,任何一个进程都定义了它自己完整的4GB地址空间。其中2GB-4GB之间是进程共享的称为...

熬之滴水成石:最想深入了解的内容--windows内核机制(11)

62--进程和线程(8) 该说说我们在windows编程中经常遇到的一个问题了,就是同步问题。同步的概念其实是源于并发的一种现象。并非在OS中实际上就是多个线程在同时进行,其实实际上并不是真正的并行执...

熬之滴水成石:最想深入了解的内容--windows内核机制(5)

57--windows进程和线程(2) 这一章要细细的说说一下进程,在winodws的OS系统首先会创建一个地址空间为自己创建运行的环境,而线程实际上就是在这个环境中执行的序列。每个进程至少都有一个...

熬之滴水成石:最想深入了解的内容--windows内核机制(12)

63-内存管理(1) 老实说,这块内容一直是我的硬伤。但出于自己总结自己的积累,所以写在这里也无妨!把自己的理解写出来,被小伙伴指出其实也是一件非常有收获的事情。在OS中操作系统往往会硬件会找到相关...

熬之滴水成石:Spring--精简的J2EE(7)

49--持久性 关于持久性在最早的Delphi单元中,就曾介绍过。持久性是数据库中读取,保存,或删除数据的过程。毫无疑问持久性是web应用程序中的一个重要的特性,之前都是用JDBC来完成只要用到读取...

熬之滴水成石:HTML--WEB的基本语言 (1)

52--初识HTML 可以说,在2011年之前我从未接触过WEB前端开发工作,对此我了解甚少!但在11年后开始接触安卓开发时,特别对于界面布局时!感觉和WEB前端有异曲同工之妙,也就是从那个时候起,我...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:熬之滴水成石:最想深入了解的内容--windows内核机制(15)
举报原因:
原因补充:

(最多只允许输入30个字)