windows内核开发学习笔记⼆⼗四:windows内核架构
从上图上可以看出,windows内核主要层次划分为三个层次,以及windows⼦系统、⽂件系统、⽹络、设备驱动程序等⼏个部分。
硬件抽象层(Hardware Abstraction Layer,简称HAL):主要是把所有与硬件相关联的代码隔离到⼀个专门模块中,从⽽使上⾯的层次尽可能做到独⽴于硬件平台。
createprocessa内核层或微内核层(micro-kernel):位于HAL硬件抽象层之上,主要包含了基本的操作系统原语和功能,如线程和进程、线程调度、中断和异常的处理、同步对象和各种同步机制。
执⾏体层(execution):提供供应⽤层或者内核驱动程序直接调⽤的功能和语义。包含⼀个内核管理器,⽤于⼀致地管理执⾏体中的对象。
执⾏体和内核层位于内核基本模块⼆进制模块中,⼆者的具体分⼯是:内核层实现操作系统的基本机制,执⾏体负责所有的策略的决定。执⾏体中的对象绝⼤多数封装了⼀个或者多个内核对象,并且通过某种⽅式(如句柄)提供给应⽤程序,体现了机制与策略分离的设计思想。
windows内核为⽤户模式代码提供了⼀组系统服务,供应⽤程序使⽤内核中的功能,并且是通过⼀组系统DLL,最终通过ntdll.dll切换到内核模式下的执⾏体API函数中,来调⽤内核中的系统服务。ntdll.dll是这种调⽤的桥梁。对于内核提供的每⼀个系统服务,该DLL都提供⼀个响应的存根函数,这些存根函数的名称以“Nt”作为前缀,如NtCreateProcess、NtOpenFile和NtSetTimer等。另外ntdll.dll还提供了许多系统级的⽀持函数,如映像加载函数(前缀Ldr)、windows⼦系统通信函数(前缀Csr)、调试函数(前缀Dbg)、系统事件函数(前缀Etw),以及⼀般的运⾏⽀持函数(前缀Rtl)和字符串⽀持函数等。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论