【Windows内核原理与实现】读书笔记(一)

内容:18—42页

  操作系统本身属于软件的范畴,但它与底层硬件打交道,为上层应用软件或应用程序提供了一层抽象,专门负责硬件资源的管理与分配。应用软件不直接使用硬件,而是通过操作系统提供的功能来实现各种应用任务。

  LPC:进程间通信

  现代操作系统的基本结构:

应用环境-----------系统环境----------硬件设备

                    |                     |

              系统服务             硬件抽象

  现代计算机系统中,设备的即插即用(PnP)和电源管理越来越重要

Windows系统结构

  双模式:内核模式与用户模式。应用程序通过硬件指令从用户模式切换到内核模式。

  Windows子系统与Windows内核共同构成了应用程序的执行环境。Windows子系统包含了内核模式部分(图形和窗口管理),也有用户模式部分。用户模式部分包含了一个单独的子系统进程和一组链接到各个应用程序中的系统DLL。

Windows内核结构

         内核分为三层:硬件抽象层(HAL)、内核层、执行体层(包含一个对象管理器)。执行体层和内核层位于同一个二进制模块中,名称是ntoskrnl.exe。

  Windows内核为应用程序提供了一组系统调用,但用户程序不直接调用这些系统服务,而是通过一组系统DLL,最终通过ntdll.dll切换到内核模式下的执行体API函数中,以调用内核中的系统服务。Ntdll.dll是连接用户模式代码和内核模式系统服务的桥梁。

  NTdll.dll中,Nt前缀:系统服务的存根函数;Ldr:映像加载器函数;Csr:Windows子系统进程通信函数、Dbg:调试函数;Etw:系统事件函数,Rtl:一般的运行支持函数和字符串支持函数。

  Windows内核是抢占式的进程调度。每一个线程都有一个基本优先级值(base priority),每个线程还有一个动态优先级值,目的是让系统更快响应用户的动作,以及在系统服务和其他低优先级进程之间平衡处理器资源的分配。

  Windows内核管理两类对象:分发器对象和控制对象。分发器对象实现了各种同步功能,这些对象会影响线程的调度:事件、突发体、信号量、进程、线程、队列、门、定时器。控制对象被用于控制内核的操作,但是不影响线程的调度,它包括异步过程调用、延迟过程调用以及中断对象。

  执行体包括:进程和线程管理器、内存管理器、安全引用监视器、I/0管理器、缓存管理器、配置管理器、即插即用管理器、电源管理器。

  Windows驱动程序包括了3类:即插即用驱动程序(WDM驱动程序)、内核扩展驱动程序与文件系统驱动程序。

  Windows文件系统管理中,每个文件系统实例都有自己的设备栈,通过插入过滤驱动程序可以过滤文件I/O请求。Windows支持两种形式的过滤驱动程序:一种直接插入到设备栈中,从而能够看到每一个经过设备栈的文件I/O请求;另一种基于Windows提供的过滤管理器驱动程序(FltMgr)的I/O过滤框架,称为文件系统小过滤驱动程序,它通过回调的方式来响应FltMgr的事件。

  大容量存储设备以分区和卷来管理整个存储空间,分区是指存储设备上连续的存储区域(连续的扇区)。而卷是指扇区的逻辑集合。一个卷内部的扇区可能来自于一个分区,也可能来自多个分区。文件系统是卷内部的逻辑结构。

  最接近于应用程序的是文件系统,接下来是卷管理部分,最接近于存储设备的是分区管理和磁盘驱动程序。

网络

  Winsock是Windows最重要的网络API,它的用户模式部分包含了ws2_32.dll,还定义了一个可扩展的框架。在内核部分,网络API驱动程序afd.sys通过传输驱动程序接口(TDI,transport Driver Interface)与协议驱动程序进行通信。TDI实际上是一组预定义的I/O请求,它描述了各种网络请求,包括名称解析、建立连接、发送和接收数据等。网络API驱动程序是TDI客户,而传输协议驱动程序实现了TDI接口,称为TDI传输器。

  协议驱动程序通过统一的接口与适配器驱动进行通信,此接口是NDIS(Network Driver Interface),符合NDIS的网络适配器驱动程序称为NDIS驱动程序,或NDIS小端口驱动程序。

  NDIS客户(即TDI传输器)利用NDIS库提供的功能,对将要发送给NDIS驱动程序的命令进行格式化,并发送给NDIS驱动程序;NDIS驱动程序则利用NDIS库,接收请求和发送应答。

Windows子系统,内核部分win32k.sys,包含了大量的系统调用,主要负责窗口管理和图形设备接口(GDI)

Windows窗口的编程模型是消息驱动的,每个窗口对象根据其窗口类指定的窗口过程来响应各种消息。

图形设备接口

图像引擎在Windows子系统中提供,有两方面的优点:

         1、提供了一套与设备无关的编程接口,GDI,这使得应用程序可以适应各种底层显示设备的差异;

         2、应用程序与图形设备驱动程序之间的通信足够高效,从而即使在频繁输出和刷新图形元素的情况下,Windows也能够为用户提供良好的视觉效果。

线程与进程

  每个线程代表了一个指令执行序列,同时也是一个调度单元;进程定义了一个执行环境,有自己独立的地址空间,每个线程都必定依附于一个进程。System进程的线程被称为系统线程。

原文地址:https://www.cnblogs.com/XjChenny/p/2346557.html