linux进程与线程汇总课件_第1页
linux进程与线程汇总课件_第2页
linux进程与线程汇总课件_第3页
linux进程与线程汇总课件_第4页
linux进程与线程汇总课件_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

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

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

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

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

5、一个进程已经具备运行条件,但由于无CPU暂时不能运行的状态(当调度给其CPU时,立即可以运行)。处于就绪状态的进程可以有多个。队列的排列次序一般按优先级大小来排列。阻塞态(Blocked)指进程因等待某种事件的发生而暂时不能运行的状态,即使CPU空闲,该进程也不可运行。处于阻塞状态的进程可以有多个。第10页,共47页。进程的状态及其转换运行进程占有CPU就绪具备运行条件,但暂无CPU阻塞等待某事件或资源。进程状态之间的转换进程被调度获得CPU时间片用完或被抢占因等待某种事件或者资源而无法运行,即使CPU空闲,该进程也不可运行已获得事件或等待的资源第11页,共47页。运行就绪被抢占被调度等待高优

6、睡眠低优睡眠高优睡眠低优睡眠内存就绪唤醒等待事件或资源外存就绪唤醒换出换出换出换入等待exitsleepwaitUnix进程状态及其变迁第12页,共47页。进程的组成操作系统控制结构内存表用来跟踪主存和辅存。I/0表用来管理I/0设备和通道。文件表提供当前存在文件中的信息。进程表用来管理进程。进程的组成程序段:进程所对应的可执行程序;数据段:程序运行过程中要用到的数据或工作区;进程控制块(PCB):为管理进程设置的一个专门的数据结构,用于记录进程的外部特征,描述进程的运动变化过程。进程映像:程序和数据是进程的静态部分,可见PCB是进程的动态部分,不可见第13页,共47页。进程控制块PCB进程控

7、制块(PCB)PCBProcess Control Block记录了OS控制和管理进程的所需的所有信息,是进程属性的动态描述(PCB在Linux中对应task_struct,也称为PD;PCB在Unix中对应于proc和user结构) 进程控制块与进程关系:每个进程有唯一的PCB。操作系统(OS)根据PCB管理进程。利用PCB实现进程的动态、并发。PCB是进程存在的唯一标志。 第14页,共47页。进程控制块PCBPCB的内容标识信息:进程标识、用户名说明信息:进程状态、等待原因、进程程序和数据的存储信息现场信息:记录重要寄存器、时钟等内容,用于恢复断点管理调度信息:进程优先级、进程队列指针、消

8、息队列指针、进程使用的资源清单、进程家族关系、进程当前打开的文件第15页,共47页。Linux系统中的PCBLinux系统中的PCB在Linux中,任务和进程是同一概念Linux中的PCB即任务数据结构:task_strcut,也称为进程描述符PD (Processor Descriptor)定义在include/linux/sched.h中第16页,共47页。Linux系统中的PCBLinux PCB(task_struct)包含进程所有信息task_struct数据结构很庞大,但并不复杂,按功能将所有域划分:1、进程状态(State) 2、进程调度信息(Scheduling Informa

9、tion)3、各种标识符(Identifiers)4、进程通信有关信息(IPC:Inter_Process Communication)5、时间和定时器信息(Times and Timers)6、进程链接信息(Links)7、文件系统信息(File System)8、虚拟内存信息(Virtual Memory)9、页面管理信息(page)10、对称多处理器(SMP)信息11、和处理器相关的环境(上下文)信息(Processor Specific Context)12、其它信息 第17页,共47页。Linux PCB中的进程状态(state)可运行状态进程正在运行(运行态)、或者正准备运行(就绪

10、态)正在运行的进程就是当前进程准备运行的进程只要得到CPU就可以立即投入运行,CPU是这些进程唯一等待的系统资源可中断等待态、不可中断等待态进程正等待某个事件(event)或某个资源一定处于系统中的某个等待队列(wait_queue)中两种等待态的差异:可中断等待态:可被信号唤醒,被唤醒后进入可运行态,等待被调度;不可中断等待态:因等待硬件资源,如某个通道、端口等,在任何情况下都不能被打断,直到资源满足。资源满足后只能用特定的方式来唤醒它,例如唤醒函数wake_up()等 第18页,共47页。暂停状态进程暂时停止运行以接受某种特殊处理通常当进程接收到SIGSTOP、SIGTSTP、SIGTTI

11、N或 SIGTTOU信号后就处于这种状态(关于信号,将在以后讲述)例如,正接受调试的进程就处于这种状态 僵死状态进程执行了exit()函数后进入该状态,即进程被终止此状态将由父进程执行wait()系统调用而“唤醒”,真正终止该进程,并回收其资源处于该状态的进程是死进程,属于系统中的垃圾,必须进行相应处理以释放其占用的资源 死亡状态:僵死进程被父进程回收后的状态Linux PCB中的进程状态(state)第19页,共47页。Linux的进程状态转换模型第20页,共47页。Linux中与进程相关的命令PSps Processes Snapshot句法:ps OPTIONS功能:对系统中的进程进行监

12、控OPTION参数如下:l:长格式输出u:按用户名和启动时间顺序来显示进程j:用任务格式来显示进程f:用全格式来显示进程a:显示所有用户的所有进程x:显示无控制终端的进程第21页,共47页。-A:列出所有的行程-w:显示加宽可以显示较多的资讯-au:显示较详细的资讯-aux:显示所有包含其他使用者的行程-e:显示所有进程,环境变量-f:全格式-h:不显示标题-l:长格式注意区分“ps aux”和“ps -aux”命令PSLinux中与进程相关的命令第22页,共47页。kill关闭进程:kill 进程号kill -9 进程号(强行关闭)kill -1 进程号(重启进程)结束所有进程:killal

13、l查找服务进程号:pgrep 服务名称关闭进程:pkill 进程名称Linux中与进程相关的命令第23页,共47页。TOP句法:top OPTIONS功能:实时显示系统中各个进程的资源占用状况TOP命令是一个动态显示过程,可以通过用户按键来不断刷新当前状态。TOP命令是Linux下常用的性能分析工具Linux中与进程相关的命令第24页,共47页。操作系统内核CPU的两种执行状态:系统态和用户态系统态/核心态(特态或管态):该状态下,CPU能执行指令集中任何指令;用户态(常态或目态):该状态下,CPU只能执行一般的指令,不能执行特权指令。操作系统内核功能中断处理时钟管理原语操作进程管理存储器管理

14、设备管理第25页,共47页。进程的创建进程创建的时机用户登录作业调度提供服务应用请求进程创建的过程取得一个空白PCB,生成一个唯一的进程标识号(一般是数字形式)为新进程分配必要的资源初始化PCB将新进程的PCB插入就绪队列第26页,共47页。进程的创建Linux中的进程创建init_task:Linux在启动时运行在核心态,这时只有初始化程序在执行是系统的第一个进程,因此称为初始进程。init_task在系统初始化结束后,初始进程启动一个核心进程,称为init。然后执行空闲循环,什么也不做。当系统没有其他工作时,调度程序会运行这个空闲进程。init:init进程的进程标识号为1,是系统中第一个

15、真正的进程有自己的PCB。是系统中其他进程的祖先。除init外,Linux所有进程都由其他进程创建;用户态中,可调用fork或clone来创建子进程。第27页,共47页。进程的创建Linux的进程创建fork()函数fork()函数返回值= -1:创建失败= 0:创建成功,并从子进程返回 0:创建成功,并从父进程返回,返回的是子进程PIDfork()函数为系统调用fork()函数完成的事务检查现有进程数目分配PCB(task_strcut)及PID继承父进程的资源创建进程映像(如静态的程序,动态的PCB)并设置就绪返回:调用进程返回子进程的PID,被调度执行返回0第28页,共47页。进程的创建

16、fork()函数返回后的处理可依据父进程和子进程返回的值,做相应处理一般程序架构如下:main() int pid; /子进程的标识符PID while ( (pid=fork() = -1) ;/直到子进程创建成功 if (pid = 0) /子进程返回,也称调度返回 / 插入子进程返回时处理的程序段 else / 父进程返回,也称调用返回 / 插入父进程返回时处理的程序段 小课验证第29页,共47页。进程的终止进程终止的时机进程的正常结束进程执行期间调用exit系统调用在main函数中执行return语句main函数执行完进程的异常结束进程运行时出现错误或故障被迫结束。如数组越界、除数为0

17、、电源故障等进程终止的过程取得当前进程的PCB归还进程所占的资源进入进程调度程序第30页,共47页。进程的终止Linux中的进程终止调用exit()、执行return语句、main函数执行完,最终都要调用内核函数do_exit()do_exit()需要做的工作如下:根据PCB中的内容进行资源的归还和涉及信息的善后处理将进程的状态改为TASK_ZOMBIE设置exit_code通知父进程和子进程“我即将结束”调用内核函数schedule()重新调度第31页,共47页。进程的阻塞和唤醒阻塞和唤醒的时机进程请求系统为它服务,系统不能马上为它服务,就进入阻塞状态;启动了无法马上完成的操作(I/O),进

18、入阻塞状态;进程间相互合作时,需要等待其他进程的运算结果;系统启动时创建的服务,如果没有其他进程的请求,处于阻塞。第32页,共47页。进程的阻塞和唤醒进程阻塞的过程使当前进程停止执行将状态改为阻塞态插入适当的等待阻塞队列调用schedule()重新进行进程调度进程唤醒的过程取出阻塞队列的第一个进程将状态改为就绪态插入到就绪队列第33页,共47页。进程的阻塞和唤醒Linux中的进程阻塞和唤醒使当前进程停止执行若进程等待一个特定的事件发生,则调用函数来阻塞当前进程:sleep_on():进程状态被设置为TASK_INTERRUPTIBLEinterruptible_sleep_on():进程状态被

19、设置为TASK_UNINTERRUPTIBLE当进程等待的事件发生时,调用内核函数来唤醒进程:wake_up():wake_up_process():对某个睡眠进程的唤醒。将状态设置为TASK_RUNNING第34页,共47页。注意:sleep_on()和wake_up()都是内核中提供的函数,应用程序中不能直接调用。Linux中的进程阻塞系统调用wait():等待子进程终止而进入睡眠子进程执行exit()而终止自身,并给父进程发信号父进程执行wait()等待子进程终止信号库函数sleep(n):进程延时n秒进程的阻塞和唤醒第35页,共47页。未引入线程的操作系统中,进程的两个基本属性:进程是

20、一个拥有资源的独立单位 给每个进程分配一虚拟地址空间,保存进程映像,控制一些资源(文件,I/O设备),有状态、优先级、调度进程是一个被处理机独立调度和分配的基本单位 以上两个属性构成进程并发执行的基础线程的引入第36页,共47页。系统必须完成的操作:创建进程、撤消进程、进程切换缺点:每启动一个新的进程都必须分配独立的地址空间进程的每次调度都需要保护和恢复CPU现场信息,开销过大进程间通信速度较慢,有些时刻显得不太友好为此,希望将进程的某些属性展开。使得:作为独立调度的基本单位,不同时作为占有资源的基本单位对占有资源的基本单位又不频繁切换线程的引入第37页,共47页。线程线程的定义:有时称轻量级进程,是进程中的一个执行线路或线索,是一个相对独立的、可独立调度和指派的执行单元。资源的拥有者还是进程,线程将原来进程的两个属性分开处理。第38页,共47页。线程的性质:是进程内的一个相对独立的可执行单元;是操作系统中的基本调度单元,在线程中包含调度所需的信息。一个进程至少有一个线程,可有多个线程,因进程已不是被调度的单元。线程并不拥有资源,而是共享和使用包含它的进程所拥有的所有资源。线程在需要时也可创建其他线程。线程有自己的生命期,也有状态变化。线程第39页,共47页。单进程、单线程单进程、多线程多进程、一个进程一个线程多进程、一个进程多个线程线程和进程的关系第40页

温馨提示

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

评论

0/150

提交评论