深入解析Windows操作系统笔记——CH1概念和术语
1.概念和工具
本章主要介绍Windows操作系统的关键概念和术语
1.1操作系统版本
Windows操作系统版本已经很多了
1.2 基础概念和术语
1.2.1 Windows API
Windows API(应用程序接口),是针对Windows操作系统的系统编程接口。
Windows API有几个分类:
n 基本服务
n 组件服务
n 用户界面服务
n 图形和多媒体服务
n 消息和协议
n Web服务
本书重点介绍基本服务(比如,进程和线程,内存管理,I/O,安全性)。
关于.Net和WinFX
.NET FrameWork由框架类库(FCL)和一个提供托管代码运行环境的(CLR)组成。
CLR提供即时编译,类型检查,垃圾回收和代码访问安全性等。
托管代码:在最初编译时,将源代码编译成中间代码(IL),然后在运行时,使用运行库编译器在受控的环境下,将中间代码编译成机器码。
在微软体系下,认为不是托管代码就是非托管代码。
CLR是一个典型的COM服务器,建立在Windows API之上。
而WinFX就是新的Windows API(为vista特别设计的),也提供了托管代码的功能,但是缺容易混淆,后来改为.Net FrameWork 3。(关于WinFX的介绍在第6版中已经没有了)。
.NET FrameWork是对API的一种扩展。
1.2.2 服务、函数和例程
主要介绍一些书中提到的专业术语:
n Windows API函数:主要是指已经被文档化的可调用的子例程
n 原生的系统服务:指操作系统中未文档化的,可以在用户模式下调用的底层服务,如NtCreateProcess
n 内核支持函数(例程):值操作系统内部且只能被内核调用的子例程
n Windows服务:由Windows服务管理器启动的进程(在注册表中,认为驱动定于为服务,但是书中并不这样引用)
n DLL:一组可调用的子例程,合起来被链接成一个二进制文件,应用程序可以动态加载这些二进制文件。
1.2.3 进程、线程和作业
1.2.3.1 进程
程序是指一个静态的指令序列,而进程是程序的实例化,拥有各种资源。一个进程由以下元素组成:
n 私有的虚拟地址空间
n 程序定义的代码和数据,被映射到进程的虚拟地址空间中
n 一个已打开的句柄列表,这些句柄指向各种资源
n 称为访问令牌的安全环境,标示了改进程关联的用户,安全组和特权
n 进程ID,可以唯一识别一个进程
n 至少一个线程
每个进程都指向一个父进程或者创建者进程,但是如果父进程被关闭,进程就会指向一个不存在的父进程。
1.2.3.2 线程
线程是在进程中的实体,也是Windows执行此进程的调度实体,没有线程进程是不可能运行的。
线程的基本部件:
n 一组代表处理器状态的CPU寄存器中的内容
n 2个栈,一个用于线程在内核模式下执行,一个用于线程在用户模式下执行
n 线程局部存储区(TLS),线程私有存储区域,各个子系统,运行库,DLL都会用到这个区域
n 唯一表示线程的线程ID
n 线程自己的安全环境
易失的寄存器,栈,私有存储区域合起来称为线程的环境。
虽然线程有自己的环境,但是同一个进程内的线程共享该进程的虚拟地址空间及其他属于该进程的资源。
也就是说线程可以读写进程内其他线程的内存,但是不能跨进程的访问,除非另外一个进程把虚拟地址空间变成共享内存区。
1.2.3.3 虚拟地址描述符
虚拟地址描述符是一些数据结构,内存管理器使用这个数据结构来记录一个进程所使用的虚拟地址。
1.2.3.4 作业
作业是指,一组进程当一个整体来维护管理。
1.2.4 虚拟内存
Windows 实现了平面地址空间的虚拟内存系统,每个进程感觉自己独立拥有一个很大的私有地址空间。虚拟内存提供了内存逻辑视图,并不对应于内存物理布局。运行的时候,内存管理器借助硬件支持,讲虚拟地址翻译成真正的物理地址。
进程之间就隔离了,一个进程不会访问到另外一个进程的东西。
大多数系统拥有的物理内存比虚拟地址小,所以当内存不够的时候,内存管理器会把内存移动到磁盘,释放内存,让被的进程使用。
在32bit下,4GB的地址空间,其中2GB是内核地址空间,2GB是用户模式地址空间,在起用3gb参数,用户模式地址空间时3GB,内核模式地址空间时1GB
还有AWE地址窗口扩展,可以让32bit系统访问64GB的内存。缺点是程序员自己解决映射关系。
在64bit下地址空间可以达到8T,在Itanium系统上可以达到7T
1.2.5 内核模式和用户模式
为了避免用户程序读写关键操作系统数据,Windows使用了2中处理器访问模式:用户模式,内核模式。用户程序代码运行在用户模式,系统代码运行在内核模式。内核模式允许访问所有系统内存和cpu指令。用内核模式来保护操作系统稳定。
虽然Windows 进程都有自己的地址空间,但是内核模式的操作系统和驱动都是使用同一个虚拟地址空间。
系统空间中的页面只有在内核模式下可以访问,用户空间中的页面在用户模式下都可以访问。
内核模式下运行的代码可以访问所有系统空间中的内存。
因为进入内核模式就缺少保护,所以第三方设备驱动程序加载时要小心。
当用户模式调用系统服务的时候,会切换到内核模式下,当要将cpu控制权返回给用户的时候要先切换到用户模式。
1.2.6 终端服务及多个会话
略
1.2.7 对象和句柄
内核对象是某一个静态定义的对象类型的单个运行时的实例。对象类型包含了一个系统定义的数据类型,在该对象上可用的函数,及一组对象属性。如所有的进程是进程对象类型的一个实例。
对象和普通数据结构的区别是,对象的内部结构是被隐藏的。必须要调用对象服务才能读写对象内部数据。
对象技术的实现了操作系统4个系统任务:
n 提供了可供人读的名称
n 进程间共享资源和数据
n 保护资源,避免未授权访问
n 引用跟踪,如果不再使用可以释放掉。
1.2.8 安全性
Windows的核心安全功能包含:针对所有可共享对象的自主保护,安全审计,登录时密码认证,以及一个资源被一个进程释放后,其他进程看不到上一个进程留下的资源。
1.2.9 注册表
注册表是系统数据库,包含了引道和配置系统所有的信息。也反映了内存中易失的数据窗口,比如当前的硬件状态,性能计数器。
1.2.10 UNICODE
略
1.3 挖掘Windows内部机理
主要介绍了一些调试工具,和Windows SDK
参考
http://zh.wikipedia.org/wiki/WinFX
http://en.wikipedia.org/wiki/Framework_Class_Library
深入解析Windows操作系统笔记——CH1概念和术语的更多相关文章
- 深入解析Windows操作系统笔记——CH3系统机制
3.系统机制 微软提供了一些基本组件让内核模式的组件使用: 1.陷阱分发,包括终端,延迟的过程调用(DPC),异步过程调用(APC),异常分发以及系统服务分发 2.执行体对象管理器 3.同步,包括自旋 ...
- 深入解析Windows操作系统笔记——CH2系统结构
2.系统结构 本章主要介绍系统的总体结构,关键部件之间的交互,以及运行在什么环境. 2.系统结构 2.1 需求和设计目标 2.2 操作系统模型 2.3 总体结构 2.3.1 可移植性 2.3.2 对称 ...
- 【翻译】《深入解析windows操作系统第6版下册》第10章:内存管理
[翻译]<深入解析windows操作系统第6版下册>第10章:内存管理(第一部分) [翻译]<深入解析windows操作系统第6版下册>第10章:内存管理(第二部分) [翻译] ...
- 【摘抄】深入解析Windows操作系统
一.线程是一个进程内部的实体,也是Windows执行此进程时的调度实体.若没有线程,进程的程序将不可能运行.线程包含以下部件: 1.一组代表处理器状态的CPU寄存器中的内容. 2.两个栈:一个用于线程 ...
- Windows操作系统深入解析原理
Windows运用程序编写插口(API)是对于Windows电脑操作系统大家族的客户方式系统软件程序编写插口.在32位版本号的Windows营销推广之前,31位版本号Windows电脑操作系统的程序编 ...
- windows进程/线程创建过程 --- windows操作系统学习
有了之前的对进程和线程对象的学习的铺垫后,我们现在可以开始学习windows下的进程创建过程了,我将尝试着从源代码的层次来分析在windows下创建一个进程都要涉及到哪些步骤,都要涉及到哪些数据结构. ...
- Windows操作系统
Microsoft Windows,是美国微软公司研发的一套操作系统,它问世于1985年,起初仅仅是Microsoft-DOS模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家 ...
- Windows 操作系统
Microsoft Windows,是美国微软公司研发的一套操作系统,它问世于1985年,起初仅仅是Microsoft-DOS模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家 ...
- Js引擎解析执行 阅读笔记
Js引擎解析执行 阅读笔记 一篇阅读笔记 http://km.oa.com/group/2178/articles/show/145691?kmref=search&from_page=1&a ...
随机推荐
- 2016 .net 招聘
职位月薪:面议 工作地点:成都 发布日期:2016-02-23 工作性质:全职 工作经验:1-3年 最低学历:大专 招聘人数:5人 职位类别:软件工程师 岗位职责: 1. 负责项目或产品的开发.单 ...
- Hibernate框架之双向多对多关系映射
昨天跟大家分享了Hibernate中单向的一对多.单向多对一.双向一对多的映射关系,今天跟大家分享下在Hibernate中双向的多对多的映射关系 这次我们以项目和员工举个栗子,因为大家可以想象得到,在 ...
- 解决之前上架的 App 在 iOS 9 会闪退问题 (更新:已有 Hotfix)
最新更新:(2015.10.02) 开发环境: Delphi 10 Seattle OS X El Capitan v10.11 需使用下列 HotfixID: 30398, PAServer Hot ...
- 深入webx框架(li)
目录 1.Webx简介 2.创建webx应用 一.Webx简介 Webx本质上就是一个Web框架,它建立在Java Servlet API基础之上.上图所示是webx的架构图.webx本身类似于s ...
- hdu-4496-D-City
D-City Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Subm ...
- PHP与MySQL的交互(mysqli)
近期在学习PHP,这里总结一下PHP与MySQL的交互. 这里我们使用mysqli进行连接. mysqli扩展允许我们访问MySQL 4.1及以上版本提供的功能. 想深入了解mysqli的信息可以访问 ...
- [moka同学笔记]Yii2.0显示页匿名函数设置$value
匿名函数设置$value <?= GridView::widget([ 'dataProvider' => $dataProvider, 'columns' => [ // ['cl ...
- Java空白final
Java 1.1允许我们创建"空白final",它们属于一些特殊的字段.尽管被申明为final,但却未得到一个初始值. 无论在哪种情况下,空白final都必须在实际使用前得到正确的 ...
- 【转】Linux重定向操作符
Linux重定向操作符 功能描述 > 将命令输出写入文件或设备,而不是命令提示符或句柄,清空原有文件然后写入 < 从文件而不是从键盘或句柄读入命令输入 >> 将命令输出添加到文 ...
- texrecon进行纹理映射
使用texrecon进行纹理映射: 1) 跳转到mesh所在目录 cd meshdir 2) 参数 a) texrecon.exe b) bun ...