1、第二章 进程、线程与作业,2.1 多道程序设计多道程序设计目标:提高系统效率(吞吐量),2.1.1 单道程序设计的特点 1.设备利用率低 2.内存资源利用率低 3.处理机资源利用率低,2.1.2 多道程序设计的提出 1.设备利用率提高 2.内存资源利用率提高 3.处理机资源利用率提高,注意: 增加同时运行程序的道数可以提高资源利用率,从而提高系统效率,但道数应与系统资源数量相当。 道数过少,系统资源利用率低。 道数过多,系统开销增大,程序响应速度下降。,2.1.3 多道程序设计的问题 处理机资源的管理 程序个数处理机个数(如何分配?) 存储资源的管理 地址空间的相对独立性、共享性 内存、外存的
2、分配与去配 设备资源管理 分配策略,2.2 进程的引入,2.2.1 进程的概念,定义: 进程是具有一定独立功能的程序关于一个数据集合的一次运行活动。定义强调两个方面: 动态:执行中的程序; 并发:可与其他进程同时执行。,2.2.2 进程状态及状态转换 一、进程状态 一个进程至少具有三个基本状态:就绪状态、执行状态、等待状态(又称阻塞或挂起状态)。 (1)就绪状态:存在于处理机调度队列中的那些进程,它们已经准备就绪,一旦得到CPU,就立即可以运行,这些进程所处的状态为运行状态。 (2)执行状态:当进程由调度/分派模块分派后,得到中央处理机控制权,它的程序正在运行,该进程所处的状态为执行状态。 (
3、3)等待状态:若一进程在等待着某一事件发生(如等待输入输出操作的完成)而停止执行,即使给它CPU时间,它也无法执行,则称该进程处于等待状态。,二、进程状态转换,调度选中,三、进程控制块 定义:进程控制块标志进程存在的数据结构,其中包含系统对进程管理所需要的全部资源。,进程标识 用户标志 进程状态 调度参数 现场信息 家族联系 程序地址 当前打开的文件 消息队列指针 资源使用情况 进程队列指针,四、进程的组成与上下文 ()进程的组成:进程控制块PCB程序,()进程上下文 进程的上下文是由其相应的程序地址空间的内容、硬件寄存器的内容以及与该进程有关的核心数据结构组成的,具体包括:计算机系统中与执行
4、该进程有关的的各种寄存器的值、程序段在经过编译之后形成的机器指令代码集、数据集及各种堆栈值和PCB结构。,上下文切换:由一个进程的上下文转到另外一个进程的上下文。,系统开销:运行操作系统程序完成系统管理工作所花费的时间和空间,五、进程的队列,PCB构成的队列:(不一定FIFO),1. 就绪队列:系统一个或若干个(根据就绪的原因确定) 2. 等待队列:每个等待事件一个 3. 运行队列(运行指示字):每个处理机一个,六、进程的类型和特性 .进程类型 系统进程:运行操作系统程序,完成系统管理(服务)功能 用户进程:运行用户(应用)程序,为用户服务。 .进程的特征 并发性:可以与其它进程一道向前推进;
5、 动态性:动态产生、消亡,生存期内状态动态变化; 独立性:一个进程是可以调度的基本单位; 交往性:同时运行的进程可能发生相互作用; 异步性:进程以各自独立,不可预知的速度向前推进; 结构性:每个进程有一个PCB。,七、进程的创建与撤销 .相互联系()相关进程:在逻辑上具有某种联系的进程。 同一家族的进程 可以共享文件,需要相互通讯,协调推进速度 父进程可以监视子进程,子进程完成父进程交给的任务。 ()无关进程:在逻辑上没有任何联系的进程 没有逻辑关系、同时执行的进程。 有资源竞争关系,.进程间的相互作用 ()直接相互作用:进程之间不需要通过媒介而发生的相互作用。(也称直接制约或同步制约),()
6、间接相互作用:进程之间需要通过某种中间媒介而发生的相互作用。,八、进程的创建与撤销()进程的创建建立PCB,分配内存,加载程序,入就绪链UNIX:pid=fork() ()进程撤销收回资源,撤销PCB,通知父进程UNIX:exit(),九、进程与程序的联系和区别 进程与程序的联系 进程包括一个程序 进程存在的目的就是执行这个程序进程与程序的差别 程序静态,进程动态 程序可长期保存,进程有生存期 一个程序可对应多个进程,一个进程只能执行一个程序,2.3 线程与轻进程,一、线程的引入 二、线程的概念 1.线程(轻进程):是进程内一个相对独立的执行流。 2.进程和线程 进程是资源分配单位 线程是执行
7、单位 3.线程的特点 切换速度快(地址空间不变) 系统开销小 通讯容易(共享数据空间),三、线程结构,多进程结构,多线程结构,四、线程控制块 线程控制块是标志线程存在的数据结构,其中包含系统对于线程进行管理所需要的全部信息。注:TCB可能属于操作系统空间,也可能属于用户进程空间,有线程的实现方式决定。,线程标识 线程状态 调度状态 现场 链接指针,五、线程的实现 1.用户级别线程:线程的创建和撤销以及线程状态的变化都是由库函数控制并在目态完成。 优点: 不依赖于操作系统,调度灵活 切换速度快 缺点: 同一进程中多个线程不能真正并行 一个线程进入系统受阻,进程中其它线程不能执行,2.核心级别线程
8、: 实现方法: 基于系统调用 创建、撤销、状态转换由操作系统完成 优点: 同一进程内多线程可以并行执行 一线程进入核心等待,其它线程仍可执行 缺点: 系统开销大,同一进程内多线程切换速度慢 调度算法不能灵活控制,三、混合线程,六、线程的应用 内在的多控制流,共享内存 生产消费问题 多线程优于多进程 快100倍! 提高处理机与设备的并行性 多处理机环境 提高处理机利用率,加快进程推进速度,例子: Word字处理(不同代码) 交互编辑(T1) 词法检查(T2) 定时保存(T3) HTTP server(相同代码) 对每个http请求,建立一个线程,2.4 作业,作业:用户要求计算机系统为其完成的计
9、算任务的集合。作业步:在一个作业的处理过程中,计算机所做的相对独立的工作。2.4.1 批处理作业 作业控制块:标识作业存在的数据结构,其中包含系统对作业进行管理所需要的全部信息。,一般编程过程,作业控制程序,假脱机输入输出工作原理图,2.4.2 交互式作业用于分时系统,用户一次登录为一个作业。 帐户管理 /etc/passwd文件创建与撤销 创建: 用户提供(用户名,口令,资金) 系统操作员建立(根目录/usr/zhang, 填写passwd文件) 撤销: 删除该用户目录及所有文件 在passwd文件中清除对应的内容,注册与注销 注册: logon: 用户名 password: * 注销: 显
10、示注销: logout 隐式注销: (如5分钟无输入命令),处理,命令解释程序,小结:作业、进程、线程,作业与进程 作业进入内存后变为进程 一个作业通常与多个进程相对应 进程与线程 不支持多线程的系统,可视为单线程进程 一个进程一般包含多个线程,至少包含一个线程,2.5 系统举例,2.5.1 Java线程 Java线程四种基本状态 New:新建的线程 Runnable:可运行状态 Blocked:封锁状态 Dead:终止状态 Jave有关线程的函数: Sunspend():挂起当前线程 Sleep():使当前线程睡眠指定时间 Resume():唤醒某个挂起线程 Stop():中止某一线程,Ja
11、ve线程状态转换图,Class worker extends thread public void run( )system.out.println(“Im a worker thread”); Public class first public static void main(string args )worker runner=new worker( );runner.start( );system.out.println(“Im the main thread”); ,2.5.2 Linux进程与线程 进程与线程在系统内部具有统一的表示 进程与线程的差别通过与fork不同的另外一个系统
12、调用clone体现出来 Clone系统调用的形式pid=clone(function,stack_ptr,sharing_flag,arg),2.5.3 Windows/XP进程、线程与纤程 在Win32环境中创建进程的过程 当Win32应用执行CreateProcess调用,消息被发给Win32子系统,后者调用进程管理器创建进程,进程管理器调用OM创建进程对象,然后返回对象把柄给Win32.Win32子系统再次调用进程管理器为该进程创建线程,最后Win32将把柄返给新进程和线程。,Windows线程状态转换图,纤程:用户级别的线程。 (1)纤程由Win32库函数支持。 (2)纤程包含独立的目态栈、寄存器状态等控制信息。 (3)纤程属于目态对象,一个纤程被封锁其所在线程也被封锁。,