《深入解析Windows操作系统》之管理机制

内容总结:

在这里插入图片描述

内容重难点笔记:

注册表
注册表是windows操作系统、硬件设备以及客户应用程序得以正常运行和保存设置的核心“数据库”,也可以说是一个非常巨大的树状分层结构的数据库系统。
注册表记录了用户安装在计算机上的软件和每个程序的相互关联信息,它包括了计算机的硬件配置,包括自动配置的即插即用的设备和已有的各种设备说明、状态属性以及各种状态信息和数据。利用一个功能强大的注册表数据库来统一集中地管理系统硬件设施、软件配置等信息,从而方便了管理,增强了系统的稳定性。
注册表文件的数据信息保存在system.dat和user.dat中、利用regedit.exe程序能够存取注册表文件。

注册表数据类型
注册表包含了键(key)和值(value),键类似于磁盘的目录,而值则好比是磁盘上的文件。键是一个容器,可以包含其他的键(子键)或值。而值存储的是数据。最顶级的键是根键(root key)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
服务
几乎每一个操作系统都有一种在系统启动时刻启动进程的机制,这些进程提供了一些不依赖于任何交互式用户的服务。在 Windows中,这样的进程称为服务(service)或者Windows服务(Windows Service),因为它们依赖于 Windows AP与系统进行交互。 Windows服务类似于UNIX的守护进程,它们通常实现了客户/服务器应用的服务器一方。 Windows服务是由三个组件构成的:服务应用、服务控制程序(scp, service control program),以及服务控制管理器(scm, service control manager)。

当你安装一个包含有服务的应用时,该应用的安装程序必须向系统注册它的服务。为了注册该服务,安装程序调用 Windows的 CreateService函数,这是一个在 Advapi332.dl(%SystemRoot%\System332\Advapi32.d)实现的、与服务有关的函数。 当一个安装程序通过调用CreateService来注册服务时,就会发送一个消息给该服务将要驻留的机器上的sCM然后,SCM为该 HKLM服务在SYSTEMCurrentControlSetServices下创建一个注册表键, Service键是sCM数据库的非易失部分。在创建了一个服务以后,一个安装程序或者管理应用程序可以通过 StartService函数来启动该服务。

当SCM启动一个服务进程时,该进程必须立即调用 StartServiceCtrlDispatcher函数, StartServiceCtrlDispatcher接受一个入口点列表,每个入口点对应于该进程中的一个服务。每个入口点是由它所对应的服务的名称来标识的 StartServiceCtrlDispatcher创建了一个命名管道来跟SCM进行通信,在建立了该通信管道以后,它等待SCM通过该管道发送过来的命令。

每次SCM启动一个属于该进程的服务时,它发送一个“服务启动”命令 StartServiceCtrlDispatcher函数对于所接收到的每个启动命令,创建一个线程(称为服务线程),由该线程来调用所启动服务的入口点函数,并实现该服务的命令循环。

每个服务的入口点的第一个动作是调用 RegisterServic函数。该函数接收一个指向某个函数的指针,并且将该指针保存起来,此函数指针称为控制处理器( control handler)该服务实现此函数以便处理各种来自SCM的命令。

在入口点初始化该服务的过程中,它必须利用 SetServiceStatus函数来定期地给sCM发送状
态消息,以指明该服务的启动过程正在如何进行。

SCM主要负责下面的东西:
     ・维护安装的服务数据库
       ・在系统启动或者有命令的时候开始服务和驱动服务
       ・枚举安装的服务和驱动
       ・维护运行着的服务和驱动的状态
       ・传输控制请求去运行服务
       ・锁定和解锁服务数据库
服务控制程序
服务控制程序是标准的 Windows应用程序,它用到了SCM服务管理函数,包括 CreateService、 OpenService、 StartService、 ControlService、 QueryServiceStatusDeleteService和为了使用这些sM函数,SCP必须首 OpenSCManager先调用函数,以打开一个通向SCM的通信通道。在调用该打开函数的时候,SCP必须指定它想要执行的动作的类型。SCM在初始化过程中,创建了一个代表SCM数据库的内部对象,并且利用 Windows的安全功能,通过一个安全描述符来保护该对象。当一个SCP利用 CreateService函数来创建一个服务时,它指定一个安全描述符,SCM在内部将此安全描述符与该服务在服务数据库中的记录关联起来。SCM将此安全描述符保存在该服务注册表键的 Security值中,SCM在初始化过程 Serv中扫描注册表的键时,读入此 Security值,所以,即使机器重新引导以后,安全设置也会一直有效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值