加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 钦州站长网 (https://www.0777zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

windows内核情景分析-毛德操(第一章)

发布时间:2022-10-17 12:52:55 所属栏目:Unix 来源:
导读:  微内核操作系统的特点内核尽量缩小windows内核包括了两大部分操作系统内核(ntoskrnl.exe),另一部分则是迁移到了内核中即系统空间中的视窗服务(win32k.sys)用户空间和系统空间

  8086 80186cpu在寻址技术
  微内核操作系统的特点内核尽量缩小windows内核包括了两大部分操作系统内核(ntoskrnl.exe),另一部分则是迁移到了内核中即系统空间中的视窗服务(win32k.sys)用户空间和系统空间
 
  8086 80186cpu在寻址技术上还只能支持"实模式",还不能支持现代意义上的内存管理,因而不能支持系统空间与用户空间的划分。
 
  现代意义的操作系统Windows内核
 
  现代操作系统的一个明显特征就是用户空间和系统空间的划分
 
  UNIX时代
 
  人们一直把存在于系统空间的代码和数据的集合称为"内核",因此内核是有明确边界的。空间的不同,或者说CPU运行模式(系统态和用户态)的不同,是不会被混淆的本质区别。
 
  Windows的术语
 
  微软并不把系统空间的所有代码和数据的集合称为内核,而是把这里面的一部分,即比较低层、与硬件靠得最近而最为核心得一部分称为"内核"即Kernel
 
  位于最高层的是应用软件,就是一般文件扩展名为.exe的可执行程序。除.exe可执行之外,应用软件的开发者和提供者可以(但并非必须)选择把其中的一部分基础性的功能放在若干"动态连接库"DLL里面,这就是文件扩展名为.dll的可执行程序。DLL也是分层次的,相对高的DLL依赖于相对低层的DLL,调用由低层DLL所提供的服务。
 
  在windows操作系统中,整个4GB的虚拟地址空间被对半分成两块,从地址0x80000000开始向上是"系统空间",就是内核所在的地方,下面则是"用户空间",是应用程序所在的地方。系统空间是全局的,而用户空间只属于具体的进程,每个(用户)进程都有自己的用户空间。
 
  Windows的应用程序二进制界面 ABI
 
  ABI 一方面是系统 调用的界面unix线程切换,定义了所有系统调用函数界面的集合,并规定了系统 调用如何进行;另一方面也规定了可执行程序文件的结构和格式。Windows的系统调用界面是不公开的,现在人们所知道的有关信息基本上来自有关的研究和实现,特别是来自逆向工程的研究。
 
  系统态访问权限
 
  CPU必须进入"系统态"才能执行存放在系统空间的程序,访问存放在系统空间的数据。
 
  对用户空间的数据则不论处于"系统态"或"用户态"都能访问。
 
  cpu进入内核的方式三种途径线程调度/切换的问题上Windows内存管理即虚存技术的的重要内容之一是
 
  windows的物理页面的倒换,就是可以将已有映射但是暂时不受到访问的页面倒换到外存中去,到实际受到访问时候再倒进来,使外存称为内存的扩充。
 
  微软把图形操作系统/视窗服务的实现也搬到了内核中,这就使内核的体积增加了很多。再说每个线程的系统空间堆栈也因此增加了许多,当线程数量很多时也确实不可忽视。有些页面注定不可倒换。例如:与中断和异常有关的代码和数据所在的页面,以及与页面倒换有关的代码和数据,倒换出去,就无法把这些页面倒换回来了。
 
  在Linux中,属于内核的页面无论是用于代码还是数据(用于文件内存缓存的除外),是不受倒换的。因为内核毕竟是全局的,所有进程都是公用同一个系统空间
 
  运行级别
 
  IRQ级别即IRQL。在任一时间中CPU总是运行于其中的某一个级别,这个级别就表明了什么事情可以做,什么事情不可以做
 
  Windows内核函数的命名
 
  Windows的内核函数在命名有一个好的特色,就是函数名都按其所在的层次或模块上加上了特定的前缀。了解了这些前缀,看到一个函数名就可以大致知道这个函数所属的层次和模块,主要的前缀有
 

(编辑:PHP编程网 - 钦州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章