




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实 验(二),进程的创建,实 验 目 的,练习使用 EOS API 函数 CreateProcess 创建一个进程,掌握创建进程的方法,理解进程和程序的区别。 调试跟踪 CreateProcess 函数的执行过程,了解进程的创建过程,理解进程是资源分配的单位。,程序和进程,进程是动态的,程序是静态的。 进程是暂时的,程序可长久保存。 进程和程序的组成不同。 进程与程序的对应关系。,进程控制块(EOS在ps/psp.h文件中定义了PCB结构) (PCB: Process Control Block),typedef struct _PROCESS BOOLEAN System; / 是否系统进程 UCHAR Priority; / 进程的优先级 PMMPAS Pas; / 进程地址空间 PHANDLE_TABLE ObjectTable; / 进程的内核对象句柄表 LIST_ENTRY ThreadListHead; / 线程链表头 PTHREAD PrimaryThread; / 主线程指针 LIST_ENTRY WaitListHead; / 等待队列,等待进程结束的线程在此队列等待 PSTR ImageName; / 二进制映像文件名称 PSTR CmdLine; / 命令行参数 PVOID ImageBase; / 可执行映像的加载基址 PPROCESS_START_ROUTINE ImageEntry; / 可执行映像的入口地址 HANDLE StdInput; / 标准输入句柄 HANDLE StdOutput; / 标准输出句柄 HANDLE StdError; / 标准错误输出句柄 ULONG ExitCode; / 进程退出码 PROCESS;,EOS的PCB结构中主要包括了进程控制信息(是否系统进程标志、优先级),进程所拥有的资源(地址空间、内核对象句柄表等)。可以认为在EOS的PCB结构中除了进程控制信息,其它的都是进程所拥有的资源。 一般来说,PCB中应该包括用来保存CPU现场的结构,这样才能使多个进程并发执行。但是EOS中使用了线程概念,将线程做为CPU执行和调度的单位,进程仅仅做为资源的容器,所以,用来保存CPU现场的结构就被定义在线程控制块(TCB: Thread Control Block)中了。,线程控制块(EOS在psp.h文件中定义了TCB结构) (TCB: Thread Control Block),typedef struct _THREAD PPROCESS Process; / 线程所属进程指针 LIST_ENTRY ThreadListEntry; / 进程的线程链表项 UCHAR Priority; / 线程优先级 UCHAR State; / 线程当前状态 ULONG RemainderTicks; / 剩余时间片,用于时间片轮转调度 STATUS WaitStatus; / 阻塞等待的结果状态 KTIMER WaitTimer; / 用于有限等待唤醒的计时器 LIST_ENTRY StateListEntry; / 所在状态队列的链表项 LIST_ENTRY WaitListHead; / 所有等待线程结束的线程都在此队列等待 PVOID KernelStack; / 线程位于内核空间的栈 CONTEXT KernelContext; / 线程执行在内核状态的上下文环境状态 PMMPAS AttachedPas; / 线程在执行内核代码时绑定进程地址空间 PTHREAD_START_ROUTINE StartAddr; / 线程的入口函数地址 PVOID Parameter; / 传递给入口函数的参数 ULONG LastError; / 线程最近一次的错误码 ULONG ExitCode; / 线程的退出码 THREAD;,CONTEXT结构体定义的成员变量用来保存线程的CPU现场。在inc/ke.h中找到CONTEXT结构体的定义,CONTEXT 结构体定义,typedef struct _CONTEXT ULONG Eax; ULONG Ecx; ULONG Edx; ULONG Ebx; ULONG Esp; ULONG Ebp; ULONG Esi; ULONG Edi; ULONG Eip; ULONG EFlag; ULONG SegCs; ULONG SegSs; ULONG SegDs; ULONG SegEs; ULONG SegFs; ULONG SegGs; CONTEXT, *PCONTEXT;,可以看到CPU现场主要包含了CPU中各个寄存器的值。当一个线程被中断执行时,CPU现场被保存在该线程的TCB中,当该线程可以继续执行时,TCB中保存的现场被恢复到CPU中,该线程就可以从中断处继续执行了。,EOS创建进程的过程,创建一个进程对象 (PCB),为进程分配一个进程地址空间和一个句柄表,系统将进程的可执行文件装入进程的用户地 址空间中,并和内核进行装入的动态链接。,系统为进程创建一个主线程, 主线程的可执行文件被加载到 内存中的入口地址开始执行,CreateProcess 函数 EOS提供的用于创建进程的API函数定义如下,EOS应用 程序通过调用此函数为程序(可执行文件)创建进程。,BOOL CreateProcess( IN PCSTR ImageName, IN PCSTR CmdLine, IN ULONG CreateFlags, IN PSTARTUPINFO StartupInfo, OUT PPROCESS_INFORMATION ProcInfo );,typedef struct _STARTUPINFO HANDLE StdInput; HANDLE StdOutput; HANDLE StdError; STARTUPINFO, *PSTARTUPINFO;,typedef struct _PROCESS_INFORMATION HANDLE ProcessHandle; HANDLE ThreadHandle; ULONG ProcessId; ULONG ThreadId; PROCESS_INFORMATION,*PPROCESS_INFORMATION;,其它 API 函数,HANDLE GetStdHandle( ULONG StdHandle /进程标准句柄的索引 ),ULONG WaitForSingleObject( IN HANDLE Handle, /指定要等待的句柄 IN ULONG Milliseconds /指定超时时间 ),BOOL GetExitCodeProcess( IN HANDLE ProcessHandle, /指定要得到退出码的进程的句柄 OUT PULONG ExitCode /输出进程退出码 ),BOOL CloseHandle( HANDLE Handle /指定要关闭的句柄 ),ULONG GetLastError( VOID ),#define STD_INPUT_HANDLE 1 #define STD_OUTPUT_HAN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 鱼票月半出品课件细胞器
- 高铁物品安全知识培训课件
- 2025年度财务人员年末考核个人工作总结
- 高速公路路政管理
- 电脑钉钉显示课件已过期问题
- 电脑遥控专业知识培训班课件
- 电脑绘画兴趣课件
- 电脑知识培训课程目录课件
- 20kV及以下配网工程勘察设计合同
- 电脑基本知识培训班课件
- 活动成都热波zebra音乐节营销策划方案5月1日5月3日
- 四链融合:新质生产力的深度路径
- 八年级历史上学期(2025版)导言课课件
- 混凝土施工示范样板制作方案
- 2024年(IPA)国际注册对外汉语教师资格认证考试真题卷(含答案)
- 2025-2026学年外研版(三起)(2024)小学英语三年级上册教学计划及进度表
- 2025年中山市三角镇人民政府所属事业单位招聘事业单位人员模拟试卷及1套完整答案详解
- 云南省楚雄彝族自治州佳汇公证处招聘公证员笔试模拟试题参考答案详解
- 女性原发盆腔腹膜后肿瘤诊治中国专家共识(2025年版)解读
- 2025至2030年中国电力巡检无人机行业市场竞争格局及投资前景展望报告
- 食用菌工厂化种植基地建设方案
评论
0/150
提交评论