第1章 概念和工具

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使用了两种处理器访问模式:用户模式和内核模式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值