您的位置:首页 > 其它

第1章 概念和工具

2016-05-03 22:30 183 查看
1. 基础概念和术语

windows 应用编程接口(API ) 是针对windows 操作系统家族的用户模式系统编程接口。32位系统称为Win32 API ,64位系统被称为Win64 API. 本书中,术语Windows API 兼指windows的32位和64位的编程接口。

Windows API 分为以下一些大类:

基本服务,组件服务,用户界面服务,图形和多媒体服务,消息和协作,网络,Web 服务

服务、函数和例程

Windows API 函数 指window API 中已被文档化、可被调用的子例程,如CreateProcess,CreateFile 和GetMessage。

原生的系统服务(系统调用)指操作系统中未文档化、可在用户模式下调用的底层服务。

内核支持函数(或例程) 指位于windows操作系统内部且只能在内核模式下调用的子例程。

windows服务 指由windows服务控制管理器启动的进程。

DLL(动态链接库) 指一组可调用的子例程,合起来被链接成一个二进制文件,使用这些子例程的应用程序可以动态 地加载此二进制文件。

进程、线程和作业

进程是一个容器,其中包含了执行程序的特定实例时所用到的各种资源。

windows 进程由以下元素构成:

私有的虚拟地址空间、

可执行的程序,塔定义了初始的代码和数据,并且被映射到该进程的虚拟地址空间中

已打开句柄的列表,这些句柄被指向各种系统资源,比如信号量、通信端和文件

被称为访问令牌的安全环境,它标识了与该进程关联的用户、安全组、特权、UAC虚拟化状态、会话,以及有限的用户账户状态

被称为进程ID的唯一标识符

至少一个执行线程

线程是一个进程内部的实体,也是windows执行此进程时的调度实体。

线程包括以下最基本的部件:

一组代表处理器状态的CPU 寄存器中的内容

两个栈,一个用于线程在内核模式下直行时,一个用于线程在用户模式下执行时

一个被称为线程局部存储(TLS) 的私有存储区域,各个子系统、运行库和DLL 都会用到该存储区域

一个被称为线程ID的唯一标识符

线程的安全环境,或者令牌

易失的寄存器、栈和私有存储区域合起来被称为线程的环境(context).

纤程与用户模式调度器线程

因为将CPU的执行从一个线程切换到另一个线程,将不可避免地涉及内核调度器,所以,这可能是一个开销昂贵的操作,如果两个线程经常频繁的来回切换则尤其如此。windows实现了两种机制来降低这一开销:纤程和用户模式调度。

为了使用纤程,首先要调用windows的ConverThreadToFiber函数。之后,在转变得到的纤程中,通过调用CreateFiber 函数,又可以创建额外idea纤程。与线程不同的是,纤程不会自动执行,它必须由SwitchToFiber 函数手工选中,然后才能执行。新的纤程辉一直运行,直到退出,或者调用SwitchToFiber 再次选择运行另一个纤程。

UMS线程仅在64位windows上可用。

同一个进程内部的所有线程共享该进程的虚拟地址空间。

windows在进程模型上提供一个扩展,称为作业(job)。 作业对象的主要功能是,使一组进程被当作一个整体来管理和维护。通过作业对象,可以对特定的属性进行控制,也可以对一个进程,或者所有与作业相关联的进程进行限制。

虚拟内存

windows实现了一个基于平面(线性)地址空间的虚拟内存系统,使每个进程感觉自己独立拥有一个很大的私有地址空间。

内核模式和用户模式

为了避免用户应用程序访问和/或修改关键的操作系统数据,windows使用了两种处理器访问模式:用户模式和内核模式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: