您的位置:首页 > 其它

【读书笔记】Windows CE嵌入式系统_【3】_进程、线程与调度

2014-06-17 23:41 399 查看

进程

1、进程是程序的一次动态执行实例。有创建、执行、结束完整的生命周期。

2、进程消耗的系统资源只有它所占用的内存。

3、winCE最多只支持32个进程同时运行。每个进程占用32MB的虚拟地址空间。也被称为一个s1ot 。

4、WinCE不支持环境变量,也不支持当前目录。--------------WinCE先查找” \Windows“目录,然后查找根目录。如果找不到就报错。

----解决方案1:通过GetModuleFileName()获取当前执行文件所在的目录。



eg:


5、进程的创建

应用程序可以使用CreateProcess()函数创建一个新的进程。



第一个参数 是可执行文件的路径和名称。如果路径未明确指定,则按照如下搜索:

Windows目录 (”\ Windows“)
对象存储的根目录 (”\ “)
OEM所制定的搜索目录 ( 注册表的中


)第二个参数 指定要传递给新进程的命令行参数,须以Unicode字符串形式传递。参数fdwCreate 指定进程夹在后的初始状态。



参数pProcInfo指向一个PROCESS_INFORMATION结构体,PROCESS_INFORMATION结构体返回进程和主线程的句柄以及ID。不需要得到时,可以设置为空。

6、进程终止方法:

最佳方法-------从WinMain()函数返回。

ExitThread()让进程的主线程退出从而终止进程。

ExitProcess()和TerminateProcess()函数用来使进程终止。

线程

1、线程是Windows CE中最小的可执行单元。一个进程可以拥有的线程数理论上是没有限制的。

进程中所有的线程共享进程所占有的资源,包括地址空间、打开的文件等内核对象。

2、线程可以运行核心态或用户态。

操作系统线程和中断服务例程(ISR,Interrupt Service Routine)运行在核心态,

应用程序和设备驱动程序的中断服务线程(IST,Interrupt Service Thread)运行在用户态。

WinCE允许让所有的线程都运行在核心态下,从而增加系统的效率。

3、线程的创建





创建成功,返回新创建线程的句柄。否则,返回NULL。

可以把参数fdwCreate设置成CREATE_SUSPENDED状态来创建一个起始状态为挂起的线程。否则线程创建结束后会立即执行。

4、恢复线程。ResumeThread



5、结束线程。

ExitThread()和TerminateThread()函数使线程结束执行。

调度

1、WinCE是抢占式多任务操作系统。调度程序基于优先级的时间片算法对线程进行调度。





线程优先级通过GetThreadPriority()函数获取,SetThreadPriority()函数设置。

BOOL SetThreadPriority(
HANDLE hThread,
int nPriority
);

其中,nPriority值为



默认时间片100毫秒。通过CeGetThreadQuantum()函数获得。

DWORD CeGetThreadQuantum(
HANDLE hThread
); 

失败时,返回MAXDWORD 。

2、线程状态切换

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: