熬之滴水成石:最想深入了解的内容--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内核机制(6)

58 进程和线程(3) 说完进程再说说线程,线程相比于进程其实有更多可说的内容。首先实现线程调用的数据结构是个栈,该栈记录了调用方法的信息这里面也包括了函数调用及返回的地址。线程肯定是属于某个进程,其...
  • chilavert318
  • chilavert318
  • 2013年11月14日 09:37
  • 408

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

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

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

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

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

56--关于进程和线程 这两个东东应该是在编码生涯里用到最多了,我们知道进程其实包括了许多内容。最为核心的其实就是一个环境,这个环境就是进程依托的生存环境这里面包括了地址空间、句柄表等。每个进程都会有...
  • chilavert318
  • chilavert318
  • 2013年11月12日 09:55
  • 497

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

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

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

59
  • chilavert318
  • chilavert318
  • 2013年11月15日 16:01
  • 490

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

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

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

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

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

67--内存管理(5) 内存管理是离不开池这个圈子的,我们也可以理解这个池是个特殊的模块。在windowsOS中,在内核模块中或是在设备驱动程序使用过程中都有内存池的运用。这样的内存池在windows...
  • chilavert318
  • chilavert318
  • 2013年12月03日 00:02
  • 692

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

68-内存管理(6) 说说执行体的内存池的事吧!和前面提到的系统内存池一样,在执行体内也有内存池这样的模块。相比系统的内存池的管理粒度,执行体的粒度是很小的了。因为在这个层面,windows更需...
  • chilavert318
  • chilavert318
  • 2013年12月04日 00:01
  • 403
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:熬之滴水成石:最想深入了解的内容--windows内核机制(15)
举报原因:
原因补充:

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