Windows核心概念深度解析
1. 进程、线程和作业
1.1 进程
进程和程序表面相似,但本质不同。程序是静态的指令序列,而进程是执行程序所用资源的容器。一个Windows进程主要包含以下部分:
- 唯一标识符(进程ID,PID)。
- 至少一个执行线程,进程内的每个线程都能完全访问进程容器引用的所有资源。
- 私有虚拟地址空间,用于存储和引用数据与代码。
- 可执行程序,定义初始代码和数据,并映射到进程的虚拟地址空间。
- 各种系统资源的打开句柄列表,如信号量、通信端口和文件。
- 安全上下文(访问令牌),用于识别用户、安全组、权限、UAC虚拟化状态、LSA登录会话ID和终端服务会话ID。
每个进程还会记录其父进程的PID,但如果父进程退出,该信息不会更新,可能会引用不存在的父进程或被分配了原父进程PID的其他进程,不过该记录仅用于信息参考。
1.2 作业
Windows提供了作业这一进程模型扩展。作业对象的主要功能是将一组进程作为一个单元进行管理和操作。例如,可以一次性终止一组进程,而调用进程无需知道组内具体有哪些进程。作业对象还能控制某些属性,并为相关进程设置限制,如对用户模式执行时间和已提交虚拟内存设置每个进程或整个作业的限制。Windows Management Instrumentation(WMI)会将其提供程序加载到由作业控制的单独宿主进程中,该作业会限制内存消耗和同一时间可运行的WMI提供程序宿主进程总数。
1.3 线程
进程只是容器,真正运行的是线程。线程是Windows调度执行的进程内实体,包含以下关键组件
超级会员免费看
订阅专栏 解锁全文
3174

被折叠的 条评论
为什么被折叠?



