linux进程与线程.ppt_第1页
linux进程与线程.ppt_第2页
linux进程与线程.ppt_第3页
linux进程与线程.ppt_第4页
linux进程与线程.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、教学内容,进程的概念 进程的特性 进程的状态及其转换 进程的控制 Linux中的进程控制 线程,教学要求,掌握程序、进程、线程的区别 掌握进程的基本状态及状态转换 了解进程控制块(PCB)的内容 重点掌握linux系统中进程相关的命令、系统调用、库函数,单道与多道程序设计,多道程序设计的提出 单道程序设计 执行特点:静态的、孤立的 具体特性:顺序性、封闭性、可再现性、资源独占性 并发执行及“与时间有关的错误” 并发执行,是指多个程序段之间在执行时间上重叠。 多程序段同时在系统中运行 宏观上并行,微观上串行 资源共享 问题: 资源冲突,甚至死锁 “与时间有关的错误”,为了充分有效地利用计算机 的

2、有限资源,提出了多道程序设计,单道与多道程序设计,多道程序设计,单道程序设计,进程的定义,进程的定义:进程是可并发执行的程序在一个数据集合的运行过程。它是操作系统动态执行的基本单元,是系统进行资源分配的独立单位。,启动浏览器IE后,得到的进程,进程与程序及其分类,进程与程序的关联 进程是程序的一次执行过程,即一个执行实例 程序与进程存在:1:1、1:n的关系 进程与程序存在:1:1、1:n的关系 进程与程序的区别 程序:静态、指令集合、无生命周期、可保存、不是进程调度和分配资源的单位 进程:动态、执行过程、有生命周期、不可保存、是进程调度和分配资源的单位 进程是由程序、数据和进程控制块三部分组

3、成;进程具有创建其他进程的功能,而程序没有。 进程和程序的分类 系统进程(系统程序的执行过程) 用户进程(用户程序的执行过程),生活中的程序与进程举例,简单理解:所有正运行的程序都叫做进程,程序只有在被系统载入了内存并运行后才能够叫做进程。,进程的产生与终止,进程的产生 交互式环境中,合法用户终端登陆。 批处理环境中,为响应一个任务的要求而产生进程。 当运行中获取用户程序提出的某种请求后,OS可以代用户程序产生进程以实现某种功能。 基于应用进程的需要,由已存在的进程产生另一个进程,以便使新程序以并发运行方式完成特定任务。当一个进程生成另一个进程时,生成进程称为父进程,而被生成进程称为子进程。

4、进程的终止 正常结束、超时限制、内存不足、I/O失败、非法指令等,进程的特性,进程的特性: 动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的; 并发性:任何进程都可以同其他进程一起并发执行; 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位; 异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。,进程的基本状态,运行态(Running) 进程占有CPU,并在CPU上运行。在单CPU系统中,最多只有一个进程处于运行态。 就绪态(Ready) 一个进程已经具备运行条件,但由于无CPU暂时不能运行的状态(当调

5、度给其CPU时,立即可以运行)。处于就绪状态的进程可以有多个。队列的排列次序一般按优先级大小来排列。 阻塞态(Blocked) 指进程因等待某种事件的发生而暂时不能运行的状态,即使CPU空闲,该进程也不可运行。处于阻塞状态的进程可以有多个。,进程状态之间的转换,进程被调度获得CPU,时间片用完或被抢占,因等待某种事件或者资源而无法运行,即使CPU空闲,该进程也不可运行,已获得事件或等待的资源,Unix进程状 态及其变迁,进程的组成,操作系统控制结构 内存表用来跟踪主存和辅存。 I/0表用来管理I/0设备和通道。 文件表提供当前存在文件中的信息。 进程表用来管理进程。 进程的组成 程序段:进程所

6、对应的可执行程序; 数据段:程序运行过程中要用到的数据或工作区; 进程控制块(PCB):为管理进程设置的一个专门的数据结构,用于记录进程的外部特征,描述进程的运动变化过程。 进程映像: 程序和数据是进程的静态部分,可见 PCB是进程的动态部分,不可见,进程控制块PCB,进程控制块(PCB) PCB-Process Control Block 记录了OS控制和管理进程的所需的所有信息,是进程属性的动态描述(PCB在Linux中对应task_struct,也称为PD;PCB在Unix中对应于proc和user结构) 进程控制块与进程关系: 每个进程有唯一的PCB。 操作系统(OS)根据PCB管理进

7、程。 利用PCB实现进程的动态、并发。 PCB是进程存在的唯一标志。,进程控制块PCB,PCB的内容 标识信息:进程标识、用户名 说明信息:进程状态、等待原因、进程程序和数据的存储信息 现场信息:记录重要寄存器、时钟等内容,用于恢复断点 管理调度信息:进程优先级、进程队列指针、消息队列指针、进程使用的资源清单、进程家族关系、进程当前打开的文件,Linux系统中的PCB,Linux系统中的PCB 在Linux中,任务和进程是同一概念 Linux中的PCB即任务数据结构:task_strcut,也称为进程描述符PD (Processor Descriptor) 定义在include/linux/s

8、ched.h中,Linux系统中的PCB,Linux PCB(task_struct) 包含进程所有信息 task_struct数据结构很庞大,但并不复杂,按功能将所有域划分: 1、进程状态(State) 2、进程调度信息(Scheduling Information) 3、各种标识符(Identifiers) 4、进程通信有关信息(IPC:Inter_Process Communication) 5、时间和定时器信息(Times and Timers) 6、进程链接信息(Links) 7、文件系统信息(File System) 8、虚拟内存信息(Virtual Memory) 9、页面管理信

9、息(page) 10、对称多处理器(SMP)信息 11、和处理器相关的环境(上下文)信息(Processor Specific Context) 12、其它信息,Linux PCB中的进程状态(state),可运行状态 进程正在运行(运行态)、或者正准备运行(就绪态) 正在运行的进程就是当前进程 准备运行的进程只要得到CPU就可以立即投入运行,CPU是这些进程唯一等待的系统资源 可中断等待态、不可中断等待态 进程正等待某个事件(event)或某个资源 一定处于系统中的某个等待队列(wait_queue)中 两种等待态的差异: 可中断等待态:可被信号唤醒,被唤醒后进入可运行态,等待被调度; 不可

10、中断等待态:因等待硬件资源,如某个通道、端口等,在任何情况下都不能被打断,直到资源满足。资源满足后只能用特定的方式来唤醒它,例如唤醒函数wake_up()等,暂停状态 进程暂时停止运行以接受某种特殊处理 通常当进程接收到SIGSTOP、SIGTSTP、SIGTTIN或 SIGTTOU信号后就处于这种状态(关于信号,将在以后讲述) 例如,正接受调试的进程就处于这种状态 僵死状态 进程执行了exit()函数后进入该状态,即进程被终止 此状态将由父进程执行wait()系统调用而“唤醒”,真正终止该进程,并回收其资源 处于该状态的进程是死进程,属于系统中的垃圾,必须进行相应处理以释放其占用的资源 死亡

11、状态:僵死进程被父进程回收后的状态,Linux PCB中的进程状态(state),Linux的进程状态转换模型,Linux中与进程相关的命令,PS,ps Processes Snapshot 句法:ps OPTIONS 功能:对系统中的进程进行监控 OPTION参数如下: l:长格式输出 u:按用户名和启动时间顺序来显示进程 j:用任务格式来显示进程 f:用全格式来显示进程 a:显示所有用户的所有进程 x:显示无控制终端的进程,-A:列出所有的行程 -w:显示加宽可以显示较多的资讯 -au:显示较详细的资讯 -aux:显示所有包含其他使用者的行程 -e:显示所有进程,环境变量 -f:全格式 -

12、h:不显示标题 -l:长格式,注意区分“ps aux”和“ps -aux”命令,PS,Linux中与进程相关的命令,kill,关闭进程:kill 进程号 kill -9 进程号(强行关闭) kill -1 进程号(重启进程) 结束所有进程:killall 查找服务进程号:pgrep 服务名称 关闭进程:pkill 进程名称,Linux中与进程相关的命令,TOP,句法:top OPTIONS 功能:实时显示系统中各个进程的资源占用状况 TOP命令是一个动态显示过程,可以通过用户按键来不断刷新当前状态。 TOP命令是Linux下常用的性能分析工具,Linux中与进程相关的命令,操作系统内核,CPU

13、的两种执行状态:系统态和用户态 系统态/核心态(特态或管态):该状态下,CPU能执行指令集中任何指令; 用户态(常态或目态):该状态下,CPU只能执行一般的指令,不能执行特权指令。 操作系统内核功能 中断处理 时钟管理 原语操作 进程管理 存储器管理 设备管理,进程的创建,进程创建的时机 用户登录 作业调度 提供服务 应用请求 进程创建的过程 取得一个空白PCB,生成一个唯一的进程标识号(一般是数字形式) 为新进程分配必要的资源 初始化PCB将新进程的PCB插入就绪队列,进程的创建,Linux中的进程创建 init_task: Linux在启动时运行在核心态,这时只有初始化程序在执行是系统的第

14、一个进程,因此称为初始进程。 init_task在系统初始化结束后,初始进程启动一个核心进程,称为init。然后执行空闲循环,什么也不做。当系统没有其他工作时,调度程序会运行这个空闲进程。 init: init进程的进程标识号为1,是系统中第一个真正的进程有自己的PCB。是系统中其他进程的祖先。 除init外,Linux所有进程都由其他进程创建;用户态中,可调用fork或clone来创建子进程。,进程的创建,Linux的进程创建fork()函数 fork()函数返回值 = -1:创建失败 = 0:创建成功,并从子进程返回 0:创建成功,并从父进程返回,返回的是子进程PID fork()函数为系

15、统调用 fork()函数完成的事务 检查现有进程数目 分配PCB(task_strcut)及PID 继承父进程的资源 创建进程映像(如静态的程序,动态的PCB)并设置就绪 返回:调用进程返回子进程的PID,被调度执行返回0,进程的创建,fork()函数返回后的处理 可依据父进程和子进程返回的值,做相应处理 一般程序架构如下: main() int pid; /子进程的标识符PID while ( (pid=fork() = -1) ;/直到子进程创建成功 if (pid = 0) /子进程返回,也称调度返回 / 插入子进程返回时处理的程序段 else / 父进程返回,也称调用返回 / 插入父进

16、程返回时处理的程序段 小课验证,进程的终止,进程终止的时机 进程的正常结束 进程执行期间调用exit系统调用 在main函数中执行return语句 main函数执行完 进程的异常结束 进程运行时出现错误或故障被迫结束。如数组越界、除数为0、电源故障等 进程终止的过程 取得当前进程的PCB 归还进程所占的资源 进入进程调度程序,进程的终止,Linux中的进程终止 调用exit()、执行return语句、main函数执行完,最终都要调用内核函数do_exit() do_exit()需要做的工作如下: 根据PCB中的内容进行资源的归还和涉及信息的善后处理 将进程的状态改为TASK_ZOMBIE 设置

17、exit_code 通知父进程和子进程“我即将结束” 调用内核函数schedule()重新调度,进程的阻塞和唤醒,阻塞和唤醒的时机 进程请求系统为它服务,系统不能马上为它服务,就进入阻塞状态; 启动了无法马上完成的操作(I/O),进入阻塞状态; 进程间相互合作时,需要等待其他进程的运算结果; 系统启动时创建的服务,如果没有其他进程的请求,处于阻塞。,进程的阻塞和唤醒,进程阻塞的过程 使当前进程停止执行 将状态改为阻塞态 插入适当的等待阻塞队列 调用schedule()重新进行进程调度 进程唤醒的过程 取出阻塞队列的第一个进程 将状态改为就绪态 插入到就绪队列,进程的阻塞和唤醒,Linux中的进

18、程阻塞和唤醒 使当前进程停止执行若进程等待一个特定的事件发生,则调用函数来阻塞当前进程: sleep_on():进程状态被设置为TASK_INTERRUPTIBLE interruptible_sleep_on():进程状态被设置为TASK_UNINTERRUPTIBLE 当进程等待的事件发生时,调用内核函数来唤醒进程: wake_up(): wake_up_process(): 对某个睡眠进程的唤醒。将状态设置为TASK_RUNNING,注意:sleep_on()和wake_up()都是内核中提供的函数,应用程序中不能直接调用。 Linux中的进程阻塞 系统调用wait():等待子进程终止而

19、进入睡眠 子进程执行exit()而终止自身,并给父进程发信号 父进程执行wait()等待子进程终止信号 库函数sleep(n):进程延时n秒,进程的阻塞和唤醒,未引入线程的操作系统中,进程的两个基本属性: 进程是一个拥有资源的独立单位 给每个进程分配一虚拟地址空间,保存进程映像,控制一些资源(文件,I/O设备),有状态、优先级、调度 进程是一个被处理机独立调度和分配的基本单位 以上两个属性构成进程并发执行的基础,线程的引入,系统必须完成的操作: 创建进程、撤消进程、进程切换 缺点: 每启动一个新的进程都必须分配独立的地址空间 进程的每次调度都需要保护和恢复CPU现场信息,开销过大 进程间通信速度较慢,有些时刻显得不太友好 为此,希望将进程的某些属性展开。使得: 作为独立调度的基本单位,不同时作为占有资源的基本单位 对占有资源的基本单位又不频繁切换,线程的引入,线程,线程的定义:有时称轻量级进程,是进程中的一个执行线路或线索,是一个相对独立的、可独立调度和指派的执行单元。 资源的拥有者还是进程,线程将原来进程的两个属性分开处理。,线程的性质: 是进程内的一个相对独立的可执行单元; 是操作系统中的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论