本章主要介绍Windows操做系统的关键概念和术语程序员
1.概念和工具数据库
1.2.2 服务、函数和例程数据结构
1.2.3.1 进程ide
Windows操做系统版本已经不少了
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的一种扩展。
主要介绍一些书中提到的专业术语:
n Windows API函数:主要是指已经被文档化的可调用的子例程
n 原生的系统服务:指操做系统中未文档化的,能够在用户模式下调用的底层服务,如NtCreateProcess
n 内核支持函数(例程):值操做系统内部且只能被内核调用的子例程
n Windows服务:由Windows服务管理器启动的进程(在注册表中,认为驱动定于为服务,可是书中并不这样引用)
n DLL:一组可调用的子例程,合起来被连接成一个二进制文件,应用程序能够动态加载这些二进制文件。
程序是指一个静态的指令序列,而进程是程序的实例化,拥有各类资源。一个进程由如下元素组成:
n 私有的虚拟地址空间
n 程序定义的代码和数据,被映射到进程的虚拟地址空间中
n 一个已打开的句柄列表,这些句柄指向各类资源
n 称为访问令牌的安全环境,标示了改进程关联的用户,安全组和特权
n 进程ID,能够惟一识别一个进程
n 至少一个线程
每一个进程都指向一个父进程或者建立者进程,可是若是父进程被关闭,进程就会指向一个不存在的父进程。
线程是在进程中的实体,也是Windows执行此进程的调度实体,没有线程进程是不可能运行的。
线程的基本部件:
n 一组表明处理器状态的CPU寄存器中的内容
n 2个栈,一个用于线程在内核模式下执行,一个用于线程在用户模式下执行
n 线程局部存储区(TLS),线程私有存储区域,各个子系统,运行库,DLL都会用到这个区域
n 惟一表示线程的线程ID
n 线程本身的安全环境
易失的寄存器,栈,私有存储区域合起来称为线程的环境。
虽然线程有本身的环境,可是同一个进程内的线程共享该进程的虚拟地址空间及其余属于该进程的资源。
也就是说线程能够读写进程内其余线程的内存,可是不能跨进程的访问,除非另一个进程把虚拟地址空间变成共享内存区。
虚拟地址描述符是一些数据结构,内存管理器使用这个数据结构来记录一个进程所使用的虚拟地址。
做业是指,一组进程当一个总体来维护管理。
Windows 实现了平面地址空间的虚拟内存系统,每一个进程感受本身独立拥有一个很大的私有地址空间。虚拟内存提供了内存逻辑视图,并不对应于内存物理布局。运行的时候,内存管理器借助硬件支持,讲虚拟地址翻译成真正的物理地址。
进程之间就隔离了,一个进程不会访问到另一个进程的东西。
大多数系统拥有的物理内存比虚拟地址小,因此当内存不够的时候,内存管理器会把内存移动到磁盘,释放内存,让被的进程使用。
在32bit下,4GB的地址空间,其中2GB是内核地址空间,2GB是用户模式地址空间,在起用3gb参数,用户模式地址空间时3GB,内核模式地址空间时1GB
还有AWE地址窗口扩展,可让32bit系统访问64GB的内存。缺点是程序员本身解决映射关系。
在64bit下地址空间能够达到8T,在Itanium系统上能够达到7T
为了不用户程序读写关键操做系统数据,Windows使用了2中处理器访问模式:用户模式,内核模式。用户程序代码运行在用户模式,系统代码运行在内核模式。内核模式容许访问全部系统内存和cpu指令。用内核模式来保护操做系统稳定。
虽然Windows 进程都有本身的地址空间,可是内核模式的操做系统和驱动都是使用同一个虚拟地址空间。
系统空间中的页面只有在内核模式下能够访问,用户空间中的页面在用户模式下均可以访问。
内核模式下运行的代码能够访问全部系统空间中的内存。
由于进入内核模式就缺乏保护,因此第三方设备驱动程序加载时要当心。
当用户模式调用系统服务的时候,会切换到内核模式下,当要将cpu控制权返回给用户的时候要先切换到用户模式。
略
内核对象是某一个静态定义的对象类型的单个运行时的实例。对象类型包含了一个系统定义的数据类型,在该对象上可用的函数,及一组对象属性。如全部的进程是进程对象类型的一个实例。
对象和普通数据结构的区别是,对象的内部结构是被隐藏的。必需要调用对象服务才能读写对象内部数据。
对象技术的实现了操做系统4个系统任务:
n 提供了可供人读的名称
n 进程间共享资源和数据
n 保护资源,避免未受权访问
n 引用跟踪,若是再也不使用能够释放掉。
Windows的核心安全功能包含:针对全部可共享对象的自主保护,安全审计,登陆时密码认证,以及一个资源被一个进程释放后,其余进程看不到上一个进程留下的资源。
注册表是系统数据库,包含了引道和配置系统全部的信息。也反映了内存中易失的数据窗口,好比当前的硬件状态,性能计数器。
略
主要介绍了一些调试工具,和Windows SDK
http://zh.wikipedia.org/wiki/WinFX
http://en.wikipedia.org/wiki/Framework_Class_Library