Linux操作系统原理与应用第四章课件.ppt

上传人(卖家):三亚风情 文档编号:3592406 上传时间:2022-09-22 格式:PPT 页数:48 大小:324.50KB
下载 相关 举报
Linux操作系统原理与应用第四章课件.ppt_第1页
第1页 / 共48页
Linux操作系统原理与应用第四章课件.ppt_第2页
第2页 / 共48页
Linux操作系统原理与应用第四章课件.ppt_第3页
第3页 / 共48页
Linux操作系统原理与应用第四章课件.ppt_第4页
第4页 / 共48页
Linux操作系统原理与应用第四章课件.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

1、第四章 进程管理 4.1进程概述 n为了提高计算机系统的效率,增强计算机系统内各种硬件的并行操作能力,操作系统要求程序结构必须适应并发处理的需要,为此引入了进程的概念。进程是操作系统的核心,所有基于多道程序设计的操作系统都建立在进程的概念之上。4.1.1进程的概念 n所谓进程是由正文段(Text)、用户数据段(User Segment)以及系统数据段(System Segment)共同组成的一个执行环境。4.1.2程序和进程 进程与程序的联系和区别如下:n动态性和静态型。动态性是进程最基本的特性,可表现为由创建而产生,由调度而执行,因得不到资源而暂停执行以及由撤销而消亡,因而进程有一定的生命期

2、;而程序只是一组有序指令的集合,是静态实体。n结构上每个进程实体都由程序段和相应的数据段组成,这一特征与程序含义相近。4.1.2程序和进程n一个进程可以涉及到一个或几个程序的执行;反之一个程序可以对应多个进程,即同一程序段可在不同数据集合上运行,可构成不同的进程。n并发性。并发性是进程的重要特征,同时也是操作系统的重要特征。引入进程的目的正是为了使其程序能和其它建立了进程的程序并发执行,而程序本身是不能并发执行的。n进程具有创建其它进程的功能。n操作系统中的每一个程序都是在一个主进程中运行的。4.1.3进程的结构 n进程是一个动态实体,它具有生命周期。因此,对操作系统中进程的描述模仿人类的活动

3、。4.1.4进程实例 n进程是程序在计算机上的一次执行活动,当你运行一个程序,你就启动了一个进程。显然,程序是死的(静态的),进程是活的(动态的)。进程可以分为系统进程和用户进程,凡是用于完成操作系统的各种功能的进程就是系统进程,它们就是处于运行状态下的操作系统本身;用户进程就是所有由你启动的进程。进程是操作系统进行资源分配的单位,进程实例就是一个运行的程序。4.1.5Linux系统中的进程 n在Linux中,每个进程在创建时都会被分配一个数据结构,称为进程控制块(Process Control Block,PCB)。在进程的整个生命周期中,系统(也就是内核)总是通过PCB感知进程的存在。除了

4、PCB以外,每个进程都有独立的内核堆栈,一个进程描述符结构,这些数据都作为进程的控制信息储存在内核空间中,而进程的用户空间主要存储代码和数据。进程的另外一个名字是任务,Linux内核通常把进程也叫任务。另外,在Linux内核中,对进程和线程也不做明显的区别,4.2进程控制块 n操作系统为了对进程进行管理,就必须对每个进程在其生命周期内涉及的所有事情进行全名的描述。这些信息在内核中可以用一个结构体来描述,Linux中把对进程的描述结构叫做task_struct,传统上这样的数据结构即为进程控制块。4.2.1进程状态 最基本的进程状态有以下三种:n运行态:进程占有CPU,并在CPU上运行。n就绪态

5、:进程已经具备运行条件,但由于CPU忙而暂时不能运行。n阻塞态:进程因等待某种事件的发生而暂时不能运行(即使CPU空闲,进程也不可运行)4.2.1进程状态4.2.2进程标识符 n不管对内核还是普通用户来说,如何用一种简单的方式识别不同的进程呢?这就引入了进程标识符(PID)。每个进程都有一个唯一的标识符,内核通过这个标识符来识别不同进程。同时,进程标识符也是内核提供给用户程序的接口,用户程序通过PID来对进程发号施令。4.2.3进程之间的关系 nLinux进程关系主要有三种:父进程和子进程、进程组、进程会话。4.2.4进程控制块的存放 n当一个进程从用户态进入内核态,CPU自动设置该进程的内核

6、栈,这个栈位于内核数据段上。同时,为节省空间,Linux把内核栈和一个紧挨近PCB的小数据结构thread-info放在一起。在Intel系统中,栈起始于末端,并朝这个内存区开始的方向“增长”。刚切换过来,内核栈是空的,堆栈寄存器ESP直接指向此内存区的顶端,通过找到thread-info来找到当前运行的task-struct(PCB)。4.3进程的组织方式 n在Linux中,每个进程都有自己的taskstruct结构。系统拥有的进程数取决于物理内存的大小,因此进程数可能达到成千上万个。为了对系统中的很多进程及处于不同状态的进程进行管理,Linux采用了以下几种组织方式来管理进程。4.3.1散

7、列表 n散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。4.3.2NAT(网络地址转换模式)n使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可。如果你想利用VMware安装一个新的虚拟系统,在虚拟系统中不用进行任何手工配置就能直接访问互联网,建议你采用NA

8、T模式。4.3.2双向循环链表 n哈希表的主要作用是根据进程的pid可以快速地找到对应的进程,但它没有反映进程创建的顺序,也无法反映进程之间的亲属关系,因此引入双向循环链表。每个进程taskstruct结构中的prevtask和nexttask成员用来实现这种链表,链表的头和尾都是inittask,也就是所谓的空进程,它是所有进程的祖先。4.3.3可运行队列 n当内核要寻找一个新的进程在CPU上运行时,一般只考虑那些处于可运行状态的进程,因为查找整个进程链表效率是很低的,所以引入了可运行状态进程的双向循环链表,也叫运行队列。可运行队列容纳了系统中所有可以运行的进程,它是一个双向循环队列。4.3

9、.4等待队列 n可运行队列链表将所有状态为TASK_RUNNING的进程组织在一起。将所有状态为TASK_INTERRUPTIBLE和TASKUN_INTERRUPTIBLE的进程组织在一起而形成的进程链表称为等待队列。4.4进程的互斥与同步 n操作系统是管理计算机的软件和硬件资源,合理组织计算机的工作流程以及方便用户使用的程序的集合。现代操作系统的三个主要特征是并发性、资源共享和异步性。4.4.1互斥的定义 n进程互斥是进程之间发生的一种间接性作用,通常的情况是两个或两个以上的进程需要同时访问某个共享变量。在多道程序环境下,存在着临界资源,两个或两个以上的进程,不能同时进入关于同一组共享变量

10、的临界区域,否则就会导致数据的不一致,产生与时间有关的错误,这种现象被称作进程互斥。4.4.1互斥的定义4.4.2同步的定义 n 进程同步是在多道程序的环境下,存在着不同的制约关系,为了协调这种互相制约的关系,实现资源共享和进程协作,从而避免进程之间的冲突,引入了进程同步。进程同步也是进程之间直接的制约关系,是为完成某种任务而建立的两个或多个线程,这个线程需要在某些位置上协调它们的工作次序而等待、传递信息所产生的制约关系。4.4.2同步的定义4.4.3信号量机制 n1965年由荷兰科学家Dijkstra提出的信号量机制,是一种卓有成效的进程同步工具。对信号量的充分理解是学习P、V操作的基本前提

11、,信号量是一个记录型的数据结构,它有两个数据项。Struck semaphore int value;pointer_PCB queue;4.4.4用P、V操作实现进程的互斥 n在各进程的临界区的两端分别加入对于同一个初值为1的信号量的P、V操作,当一个进程进入临界区后,其它进程不能够再进入临界区,直到先前进入临界区的进程退出临界区后,通过V操作唤醒其它某个等待进程后,才会有进程再次访问临界资源,从而实现多个进程对于临界资源的互斥访问。4.4.5用P、V操作实现进程的同步 n当一个进程执行以后,确定下一个将要执行的进程,并用V操作使该进程可以执行。在实现时,在各进程中完成特定功能的程序段两端加

12、上P操作和V操作,它们分别使用不同的信号量,用以在各进程间传递信息。通常,能够最先执行的进程中,P操作中所使用的信号量的初值大于1,而其它进程中,第一个P操作所对应的信号量的初值为零。这样,在执行时,第一个进程先执行,执行完V操作后,使另一个进程可以执行,依次传递下去,就可以实现各个进程按照一定的顺序执行了。4.6死锁 n死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去,此时称系统处于死锁状态或系统产生了死锁。4.5进程调度 n无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理

13、机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。4.5.1进程调度的基本原理 在设计进程调度程序时应该考虑以下三个方面:n调度时机:什么时候,什么情况下进行程序调度。n调度策略:使用什么样的策略来选择下一个进入运行的进程。n调度方式:是抢占式还是非抢占式,当由调度程序来决定什么时候停止一个进程的执行,以便让其它进程能够得到执行机会时,这种强制挂起进程的动作成为抢占式。4.5.2Linux进程调度 Linux内核有如下三种调度方法:nSCHED_OTHER 分时调度策略,nSCHED_FIFO实时调度策略,先到

14、先服务nSCHED_RR实时调度策略,时间片轮转4.5.3调度策略 在每个进程的task_struct结构中有以下四项:nPolicynPrioritynCounternrt_priorityn这四项就是调度程序选择进程的依据。其中,policy是进程的调度策略,用来区分实时和普通两种进程;priority是进程(实时和普通)的优先级;counter是进程剩余的时间片,它的大小完全由priority决定;rt_priority是实时优先级,这是实时进程所特有的,用于实时进程间的选择。4.5.4调度函数 n函数schedule()实现调度程序,它的任务是从运行队列的链表中找到一个进程,并随后将C

15、PU分配给这个进程。n直接调用n延迟调用4.6进程间通信 n进程间通信就是在不同进程之间传播或交换信息,在Linux这种多用户多任务的环境中,为了完成一个任务有时候需要多个进程协同工作,这必然牵扯到进程间的相互通信。4.6.1进程通信的方式 n管道(Pipe)n命名管道(named pipe)n信号(Signal)n消息(Message)队列 n共享内存 n内存映射(mapped memory)n信号量(semaphore)n套接口(Socket)4.6.2Linux信号通信原理 n在Linux系统中,根据具体的的软硬件情况,内核程序会发出不同的信号来通知进程某个事件的发生。对于信号的发送,大

16、都由内核程序在遇到以下几种特定情况的时候向进程发送的,例如:n系统测出一个可能出现的硬件故障,如电源故障n程序出现异常行为,如企图使用该进程之外的存贮器n该进程的子进程已经终止n用户从终端向目标程序发出中断(BREAK)键、继续(CTRL-Q)键等4.6.2Linux信号通信原理n当一个信号正在被处理时,所有同样的信号都将暂时搁置,直到这个信号处理完成后,才加以理会。当一个进程收到信号后,用下列方式之一做出反应 n忽略该信号 n捕获该信号(即内核在继续执行该进程之前先运行一个由用户定义的函数)n让内核执行与该信号相关的默认动作4.6.3Linux管道通信原理 n管道只能用于有亲系关系的进程间通

17、信,即只能在父进程与子进程或兄弟进程间通信,而有名管道可以用于任何进程间通信。管道是半双工的,即在某一时刻只能有一个进程向管道里读或写。4.7线程 n线程(Thread)是一个动态对象,是处理机调度的基本单位,表示一个进程中的一个控制点,执行一些指令。一个进程内的个线程均可访问整个进程的所有资源,因此线程间通信比较简单。4.7.1线程的概念 n线程(thread),有时被称为轻量级进程,是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,它可与同属一个进程的其它线程

18、共享进程所拥有的全部资源。4.7.1线程的概念4.7.2线程与进程的比较 线程和进程在很多方面是相似的,主要表现在如下几方面:n都具有ID,一组寄存器,状态,有限级以及所要遵循的调度策略。n每个进程都有一个进程控制块,线程也拥有一个线程控制块,这个控制块包含线程的一些属性信息,操作系统适应这些属性信息来描述线程。n线程和子进程共享父进程中的资源。n线程和子进程独立于它们的父进程,竞争使用处理器资源。n线程和子进程的创建者可以在线程和子进程上实行某些控制,比如创建者可以取消、挂起、继续和修改线程和子进程的优先级。n线程和子进程可以改变其属性并创建新的资源。4.7.2线程与进程的比较进程和线程的区

19、别在于:n一个程序至少有一个进程,一个进程至少有一个线程.n 线程的划分尺度小于进程,使得多线程程序的并发性高。n进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。n线程在执行过程中与进程还是有区别的。n从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配,这就是进程和线程的重要区别。4.7.3Linux中的线程 nLinux中的线程有两种:用户级线程和内核级线程。n用户级线程通过库在用户区进行调度,内核不负责调度这些线程,如果某进程创建了多个线程,那么

20、所有这些线程仅有一个相对应的内核线程。n内核级线程与Linux进程非常相似,因此,内核级线程也称为轻量级进程。该进程所创建的每个线程都有一个相对应的内核级线程,内核识别这些线程都是调度实体,每个线程都独立进行调度,因此,更容易控制,它与正常进程唯一不同之处在于它是轻量级的。4.7.4线程的实现 实现线程就有两种方法:n继承Thread类并覆盖它的run()方法;n实现Runnable接口并实现它的run()方法。4.7.5线程的状态及转换 n线程从创建、运行到结束总是处于下面五个状态之一:新建状态、就绪状态、运行状态、阻塞状态及死亡状态。本章小结 n本章主要讲述了Linux操作系统下的进程管理的相关要点,介绍了其结构、控制块、组织方式、调度以及其通信原理,并简单介绍了进程与线程的区别以及线程的各状态间的转换。在学习完本章之后,读者可以简单编写线程与进程的实例,更好地理解进程的原理及其在Linux内核里的实现。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(Linux操作系统原理与应用第四章课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|