第2节进程描述与控制.pptVIP

  • 3
  • 0
  • 约5.71千字
  • 约 35页
  • 2018-06-09 发布于湖北
  • 举报
2.4.1 线程的有关概念(2) 线程是具体的(执行)上下文,是CPU调度的基本单元;而进程只是若干个共享地址空间和相同特性 (如调度优先级)的线程集合,好像是 “提取公因子”所形成的结果。 进程只是个空架子,实际的运行实体是里面的线程。 线程是1个动态对象,是CPU调度的基本单位,表示进程中的1个控制点,执行一系列指令。 由于同一进程内各线程都可以访问整个线程的所有资源,故它们间的通信比进程间通信要方便; 同一进程内的线程间切换也会由于许多上下文的相同而简化。 2.4.2 线程的相关数据结构 线程的内核数据结构(代表对象) 是ETHREAD,是一种调度对象,它的第一个成份是数据结构KTHREAD,也称为TCB ; 线程在用户空间的相关数据结构 有自己专有堆栈; 有自己的运行上下文; 有自己的线程环境块TEB PEB在用户空间的位置是固定的,PEB下方就是TEB,进程中有几个线程就有几个TEB,每个TEB占一个4KB的页面。 2.4.3 线程的创建 一般首个线程在进程创建的结束阶段被自动创建(由父进程代为创建);其它线程由进程自己调用系统API函数创建。 线程创建的基本过程 创建/初始化ETHREAD数据结构,并处理好与EPROCESS的关系。 为新线程分配堆栈、创建并初始化执行上下文。 在所属进程的用户空间中,创建并设置新线程TEB。 进一步设置目标线程的KTHREAD数据结构,包括: 设定新线程在用户空间执行入口始址。ETHREAD数据结构中有相关成份,用来存放相关地址。 将其上下文中的断点(返回点)设置成指向内核中的一段程序KiThreadStartup,使得该线程一旦被调度运行时就从这里开始执行。 将线程对象标插入就绪队列 2.4.4 线程与进程比较(1) 地址空间:不同进程的地址空间相互独立,而同一进程的各线程共享同一地址空间,一个进程中的线程在另一进程中是不可见的。 通信关系:进程间通信必须通过OS提供的进程间通信机制,而同一进程的线程间通信可以通过直接读写进程数据段如全局变量进行(仍需要同步互斥机制保证数据访问的一致性)。 调度切换:同一进程中的线程上下文切换比进程上下文切换快得多。 2.4.4 线程与进程比较(2) 线程与进程相比的主要优点: 创建、终止、切换快,系统开销少; 通信方便 由于同进程内线程间共享内存和文件资源,故可直接进行不通过内核的通信; 系统允许的最大线程数限制弱得多; 采用多线程的程序设计技术,可以更好提高系统的运行性能(如吞吐量、计算速度和响应时间等)。 LOGO 第2章 进程的描述与控制 2.1 进程及其描述 2.1.1 进程的引入 2.1.2 进程的定义与特征 2.1.3 进程描述控制表 2.2 进程基本状态及其相互转换 2.3 进程控制 2.4 线程 补充部分必要的微机原理知识 2.1.1 进程概念的引入 单任务环境下的“可执行”程序 未执行前的程序 可执行格式的二进制程序文件; 通常被持久存储在外存(磁盘)中。 程序被加载到主存并获得CPU控制权后 将按其中指令所规定的逻辑顺序被依次执行 逻辑顺序结构:顺序、选择、重复(循环) 通常可采用或引入前驱图[节点+有向边],来描述程序中不同单元或程序段之间的关系; 以实模式执行,具有最大的权限,可存取控制所有计算机软硬资源; 程序执行具有以下基本特点: 顺序性、封闭性和(结果)可再现性。 如何创建可执行程序 2.1.1 进程概念的引入 单任务环境下的“可执行”程序 多任务环境下多道程序并发执行 多道程序并发执行情况示例 本例中,程序片段S1与S2可并发执行 并发可有效提高系统的吞吐量 多道程序并发执行的特征 间断性(切换执行) 失去封闭性(共享系统的资源) 结果不可再现性 为有效管理和调度多道并发执行程序 须引入可完整描述每道执行中程序的数据结构; 该思想逐步进化完善?进程(process)概念 S1 S2 S3 S4 2.1.1 进程概念的引入 单任务环境下的“可执行”程序 多任务环境下多道程序并发执行 进程概念的引入与意义 进程是现代OS最重要的概念之一 进程的管理、切换及调度,与保护模式密切相关,需要有保护模式知识,才能清晰理解进程的实现机制和实现过程。 执行进程切换的相关代码,被统称为OS的进程调度模块 通常被运行在比 “进程”更高的层级上; 现代OS的调度代码,通常不是一个集中的模块,而是由分散在内核多个位置的若干代码片段构成。 OS进程切换示意图解 数组或队列 OS的典型进程切换过程 中断处理程序框架 ;入口堆栈为当前进程的进程控制表 ;保存当前CPU工作现场 Push ad ; push ds,es,fs,gs,.. ;禁止当前中断,但允许其它中断发生 ;将堆栈切换到内核栈 ;执行实际的中断处理,

文档评论(0)

1亿VIP精品文档

相关文档