Windows Embedded Compact 7中的进程和线程(上)

       进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.本章主要讲解Windows Embedded Compact 7中的进程和线程。

6.1 Windows Embedded Compact 7中的进程

6.1.1 进程概述

应用程序通常指的是保存在磁盘上的一个可执行文件,是静态的。当应用程序被加载到内存中并运行后,就成为一个或多个进程。在操作系统中,进程通常是指一个程序的运行实例,进程是资源分配的基本单位,所以如果用户使用写字板同时打开8个不同的文件,通过任务管理器将看到8个不同的进程。进程由两个组件构成:一个内核对象,操作系统用它来管理进程,以及一个虚拟地址空间,操作系统的虚拟地址管理保证一个进程不能非法地访问另一个进程的虚拟地址空间 (否则将导致段错误出现)。每个进程在操作系统中都被分配一个唯一的标识,称为ProcessId,在Windows CE7中是一个32位的整数,用于区分不同的进程。新的进程创建后,还将得到进程句柄 (handle),所有对进程对象的操作都通过进程句柄来完成。

每个进程又可以包含一个或多个线程,所有的线程都是在它的地址空间中运行,共享进程的系统资源。其中一个比较特殊的是主线程,系统在创建进程的时候将自动创建它的主线程,主线程负责进程的初始化并根据需要创建其它的线程。线程是系统CPU调度和分派的基本单位,操作系统会采用动态优先级调度策略为每个线程调度一些CPU时间,为线程分配时间片,使所有线程“并发”运行。Windows CE系统是基于多线程的操作系统。

Windows CE中的进程与桌面Windows系统中的进程相比,包含更少的状态信息,Windows CE中的进程不支持环境变量,没有当前目录,不支持安全属性,不支持句柄继承,因此在Windows CE的创建进程函数中,与上下文相关的参数大都被设置为NULL0

6.1.2 创建进程

Windows CE7系统中,函数CreateProcess()用于创建一个新的进程以及它的主线程,这个进程将运行参数指定的可执行文件(程序),这个函数的原型如下:

BOOL CreateProcess(

  LPCWSTR pszImageName,

  LPCWSTR pszCmdLine,

  LPSECURITY_ATTRIBUTES psaProcess,

  LPSECURITY_ATTRIBUTES psaThread,

  BOOL fInheritHandles,

  DWORD fdwCreate,

  LPVOID pvEnvironment,

  LPWSTR pszCurDir,

  LPSTARTUPINFOW psiStartInfo,

  LPPROCESS_INFORMATION pProcInfo

);

这是一个比较复杂的函数,需要多达10个参数,下面分别介绍这些参数的涵义:

l pszImageName: 指定要加载的应用程序名,这里既可以使用应用程序的完整路径,也可以使用相对路径。如果使用相对路径,则将按照下面的顺序查找目录:(1)系统的Windows目录(\windows); (2)设备的根目录(\); (3)一个OEM指定的目录。这是一个指向字符串的指针,Windows CE中,这个参数不能指定为NULL,这是因为Windows CE不支持Windows桌面系统下的将pszCmdLine参数中的第一个命令作为应用程序名的方法。应用程序名可以不指定文件扩展名,如果没有系统将自动补上EXE扩展。

l pszCmdLine: 指定启动应用程序的命令行。该参数可以指定为NULL,表示应用程序不带参数,此时将单单使用参数pszImageName作为命令行;如果不为NULL,那么参数pszImageName指定应用程序名,pszCmdLine指定除应用程序名外的命令行参数,注意不要将应用程序名作为pszCmdLine的第一个命令传递。对于C运行时的进程,可以使用argcargv来访问命令行参数。在Windows CE下,这个参数总是以Unicode字符串传递。

l psaProcess: 指定进程的安全属性,Windows CE不支持,设置为NULL

l psaThread: 指定线程的安全属性,Windows CE不支持,设置为NULL

l fInheritHandles: 指定新创建的进程是否继承父进程的句柄,Windows CE不支持,设置为NULL

l fdwCreate: 指定控制进程优先级以及创建过程的标志,表6-1列出了Windows CE支持的值,这些值可以组合使用(使用“|”运算符)

6-1 Windows CE支持的参数fdwCreate可取值及说明

说明

CREATE_NEW_CONSOLE

为新的进程创建一个新的控制台,而不继承父进程的控制台

CREATE_SUSPENDED

新进程的主线程将被初始化为挂起状态,直到对应的ResumeThread()函数被调用才进入可运行状态

DEBUG_PROCESS

新创建进程将被调用进程调试,系统将把新创建进程的所有调试信息通知调用进程。此时新创建进程的子进程也将被调用进程调试。

DEBUG_ONLY_THIS_PROCESS

与DEBUG_PROCESS标志同时使用,只负责调试新创建进程,它的子进程不被调试

INHERIT_CALLER_PRIORITY

指定新创建进程继承调用进程的优先级

l pvEnvironment: 指定新创建进程的环境块,Windows CE不支持,设置为NULL

l pszCurDir: 指定进程的当前目录,Windows CE不支持,设置为NULL

l psiStartInfo: 

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胡耀文

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值