博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows系统架构
阅读量:4629 次
发布时间:2019-06-09

本文共 1494 字,大约阅读时间需要 4 分钟。

操作系统模型

 

大多数操作系统中,都会把应用程序和内核代码分离运行在不同的模式下。内核模式访问系统数据和硬件,应用程序运行在没有特权的模式下(用户模式),只能使用有限的API,且不能直接访问硬件。当用户模式调用系统服务时,CPU执行一个特殊的指令以切换到内核模式,当系统服务调用完成时,操作系统切换回用户模式。

Windows与大多数UNIX系统类似,驱动程序代码共享内核模式的内存空间,意味着任何系统组件或驱动程序都可能访问其他系统组件的数据。但是,Windows实现了一套内核保护机制,比如PatchGuard和内核模式代码签名。

内核模式的组件虽然共享系统资源,但也不会互相访问,而是通过传参数的方式来访问或修改数据结构。大多数系统代码用C写的是为了保证可移植性,C语言不是面向对象的语言结构,比如动态类型绑定,多态函数,类型继承等。但是,基于C的实现借鉴了面向对象的概念,但并不依赖面向对象。

 

系统架构

 

下图是简化版的Windows系统架构实现:

首先注意那条横线将用户模式和内核模式分开两部分了。横线之上是用户模式的进程,下面是内核模式的系统服务。

这4种用户模式下的进程分别是:

 

  • Fixed系统支持进程,比如登陆进程和Session管理器,它们都不是Windows服务(不是通过SCM即服务控制管理器启动的)。
  • 服务进程,比如任务调度器和打印机服务,这些服务一般都需要用户登陆才可以运行。很多服务应用程序,比如sql server和exchange server都以服务的方式运行。
  • 用户程序,可以是Windows32位或64位,Windows3.1 16位,MS-DOS 16位,或者POSIX 32位或64位,注意16位程序只能运行在32位系统上。
  • 环境子系统服务器进程,实现了部分支持操作系统的环境,也可以说是展现给用户或者开发者的个性化界面。Windows NT最初发布时带有Windows,POSIX,OS/2三个子系统,Windows 2000是最后带有POSIX和OS/2的子系统,旗舰版和企业版的Windows也支持一个加强版的POSIX子系统,叫做SUA(基于UNIX的应用)。

注意:服务进程和用户程序之下的“子系统DLL”。在Windows下,用户程序不直接调用本地Windows服务,而是通过子系统DLL来调用。子系统DLL的角色是将文档化的函数翻译成该用的非文档化的系统服务(未公开的)。

 

内核模式的几个组件包括:

 

  • Windows执行实体,包括基础系统服务,比如内存管理器,进程和线程管理器,安全管理,I/O管理,网络,进程间通信。
  • Windows内核,包括底层系统函数,比如线程调度,中断,异常分发,多核同步。也提供了一些routine和实现高层结构的基础对象。
  • 设备驱动,包括硬件设备驱动(翻译用户I/O到硬件I/O),软件驱动(例如文件和网络驱动)。
  • 硬件抽象层,独立于内核的一层代码,将设备驱动与平台的差异性分离开。
  • 窗口和图形系统,实现了GUI函数,处理用户接口和绘图。

 

下表中是Windoows系统核心组件的文件名:

文件名 组件
Ntoskrnl.exe 执行体和内核
Ntkrnlpa.exe(32位才有) 支持PAE
Hal.dll 硬件抽象层
Win32k.sys 子系统的内核模式部分
Ntdll.dll 内部函数
Kernal32.dll,Advapi32.dll,User32.dll,Gdi32.dll 核心子系统的组件

 

 

 

转载于:https://www.cnblogs.com/jiangu66/p/3159695.html

你可能感兴趣的文章
<AJJL002>Flalsh游戏内密码箱的开启问题
查看>>
3518调试2
查看>>
轻松搭建Xposed Hook
查看>>
Android 网络图片Url 转 Bitmap
查看>>
Android 从无到有打造一个炫酷的进度条效果
查看>>
MyBatis传入多个参数的问题
查看>>
让html文件也具体include包含的功能
查看>>
第一次作业:基于Orange's OS系统的进程模型分析与心得体会
查看>>
jmeter-实用插件
查看>>
算法导论 Exercises 22.5(转载)
查看>>
《HTML5编程之旅》系列三:WebSockets 技术解析
查看>>
二叉树的存储结构 - 数据结构和算法45
查看>>
地址和指针的概念
查看>>
.NET开发笔记--对config文件的操作(3)
查看>>
apache2.2 + tomcat6 整合以及集群配置整理
查看>>
Spark word count 实例
查看>>
配合Jenkins自动化构建,bat脚本(一)
查看>>
web版源码管理软件SCM-Manager安装配置
查看>>
iOS拼接json字符串的两种方式
查看>>
资深FR告诉你如何判断一个公司的好坏(转载)
查看>>