版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章 进程管理 4.1进程概述 为了提高计算机系统的效率,增强计算机系统内各种硬件的并行操作能力,操作系统要求程序结构必须适应并发处理的需要,为此引入了进程的概念。进程是操作系统的核心,所有基于多道程序设计的操作系统都建立在进程的概念之上。 4.1.1进程的概念 所谓进程是由正文段(Text)、用户数据段(User Segment)以及系统数据段(System Segment)共同组成的一个执行环境。4.1.2程序和进程 进程与程序的联系和区别如下:动态性和静态型。动态性是进程最基本的特性,可表现为由创建而产生,由调度而执行,因得不到资源而暂停执行以及由撤销而消亡,因而进程有一定的生命期;而
2、程序只是一组有序指令的集合,是静态实体。结构上每个进程实体都由程序段和相应的数据段组成,这一特征与程序含义相近。4.1.2程序和进程一个进程可以涉及到一个或几个程序的执行;反之一个程序可以对应多个进程,即同一程序段可在不同数据集合上运行,可构成不同的进程。并发性。并发性是进程的重要特征,同时也是操作系统的重要特征。引入进程的目的正是为了使其程序能和其它建立了进程的程序并发执行,而程序本身是不能并发执行的。进程具有创建其它进程的功能。操作系统中的每一个程序都是在一个主进程中运行的。4.1.3进程的结构 进程是一个动态实体,它具有生命周期。因此,对操作系统中进程的描述模仿人类的活动。4.1.4进程
3、实例 进程是程序在计算机上的一次执行活动,当你运行一个程序,你就启动了一个进程。显然,程序是死的(静态的),进程是活的(动态的)。进程可以分为系统进程和用户进程,凡是用于完成操作系统的各种功能的进程就是系统进程,它们就是处于运行状态下的操作系统本身;用户进程就是所有由你启动的进程。进程是操作系统进行资源分配的单位,进程实例就是一个运行的程序。 4.1.5Linux系统中的进程 在Linux中,每个进程在创建时都会被分配一个数据结构,称为进程控制块(Process Control Block,PCB)。在进程的整个生命周期中,系统(也就是内核)总是通过PCB感知进程的存在。除了PCB以外,每个进
4、程都有独立的内核堆栈,一个进程描述符结构,这些数据都作为进程的控制信息储存在内核空间中,而进程的用户空间主要存储代码和数据。进程的另外一个名字是任务,Linux内核通常把进程也叫任务。另外,在Linux内核中,对进程和线程也不做明显的区别, 4.2进程控制块 操作系统为了对进程进行管理,就必须对每个进程在其生命周期内涉及的所有事情进行全名的描述。这些信息在内核中可以用一个结构体来描述,Linux中把对进程的描述结构叫做task_struct,传统上这样的数据结构即为进程控制块。 4.2.1进程状态 最基本的进程状态有以下三种:运行态:进程占有CPU,并在CPU上运行。就绪态:进程已经具备运行条
5、件,但由于CPU忙而暂时不能运行。阻塞态:进程因等待某种事件的发生而暂时不能运行(即使CPU空闲,进程也不可运行)4.2.1进程状态4.2.2进程标识符 不管对内核还是普通用户来说,如何用一种简单的方式识别不同的进程呢?这就引入了进程标识符(PID)。每个进程都有一个唯一的标识符,内核通过这个标识符来识别不同进程。同时,进程标识符也是内核提供给用户程序的接口,用户程序通过PID来对进程发号施令。 4.2.3进程之间的关系 Linux进程关系主要有三种:父进程和子进程、进程组、进程会话。 4.2.4进程控制块的存放 当一个进程从用户态进入内核态,CPU自动设置该进程的内核栈,这个栈位于内核数据段
6、上。同时,为节省空间,Linux把内核栈和一个紧挨近PCB的小数据结构thread-info放在一起。在Intel系统中,栈起始于末端,并朝这个内存区开始的方向“增长”。刚切换过来,内核栈是空的,堆栈寄存器ESP直接指向此内存区的顶端,通过找到thread-info来找到当前运行的task-struct(PCB)。 4.3进程的组织方式 在Linux中,每个进程都有自己的taskstruct结构。系统拥有的进程数取决于物理内存的大小,因此进程数可能达到成千上万个。为了对系统中的很多进程及处于不同状态的进程进行管理,Linux采用了以下几种组织方式来管理进程。 4.3.1散列表 散列表(Hash
7、table,也叫哈希表),是根据关键码值(Keyvalue)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 4.3.2NAT(网络地址转换模式) 使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可。如果你想利用VMware安装一个新的虚拟系统,在虚拟系统中不用进行任何手工配置就能直接访问互联网,建议你采用NAT模式。 4.3.2双向循
8、环链表 哈希表的主要作用是根据进程的pid可以快速地找到对应的进程,但它没有反映进程创建的顺序,也无法反映进程之间的亲属关系,因此引入双向循环链表。每个进程taskstruct结构中的prevtask和nexttask成员用来实现这种链表,链表的头和尾都是inittask,也就是所谓的空进程,它是所有进程的祖先。 4.3.3可运行队列 当内核要寻找一个新的进程在CPU上运行时,一般只考虑那些处于可运行状态的进程,因为查找整个进程链表效率是很低的,所以引入了可运行状态进程的双向循环链表,也叫运行队列。可运行队列容纳了系统中所有可以运行的进程,它是一个双向循环队列。4.3.4等待队列 可运行队列链
9、表将所有状态为TASK_RUNNING的进程组织在一起。将所有状态为TASK_INTERRUPTIBLE和TASKUN_INTERRUPTIBLE的进程组织在一起而形成的进程链表称为等待队列。 4.4进程的互斥与同步 操作系统是管理计算机的软件和硬件资源,合理组织计算机的工作流程以及方便用户使用的程序的集合。现代操作系统的三个主要特征是并发性、资源共享和异步性。 4.4.1互斥的定义 进程互斥是进程之间发生的一种间接性作用,通常的情况是两个或两个以上的进程需要同时访问某个共享变量。在多道程序环境下,存在着临界资源,两个或两个以上的进程,不能同时进入关于同一组共享变量的临界区域,否则就会导致数据
10、的不一致,产生与时间有关的错误,这种现象被称作进程互斥。4.4.1互斥的定义4.4.2同步的定义 进程同步是在多道程序的环境下,存在着不同的制约关系,为了协调这种互相制约的关系,实现资源共享和进程协作,从而避免进程之间的冲突,引入了进程同步。进程同步也是进程之间直接的制约关系,是为完成某种任务而建立的两个或多个线程,这个线程需要在某些位置上协调它们的工作次序而等待、传递信息所产生的制约关系。 4.4.2同步的定义4.4.3信号量机制 1965年由荷兰科学家Dijkstra提出的信号量机制,是一种卓有成效的进程同步工具。对信号量的充分理解是学习P、V操作的基本前提,信号量是一个记录型的数据结构,
11、它有两个数据项。 Struck semaphore int value; pointer_PCB queue; ;4.4.4用P、V操作实现进程的互斥 在各进程的临界区的两端分别加入对于同一个初值为1的信号量的P、V操作,当一个进程进入临界区后,其它进程不能够再进入临界区,直到先前进入临界区的进程退出临界区后,通过V操作唤醒其它某个等待进程后,才会有进程再次访问临界资源,从而实现多个进程对于临界资源的互斥访问。 4.4.5用P、V操作实现进程的同步 当一个进程执行以后,确定下一个将要执行的进程,并用V操作使该进程可以执行。在实现时,在各进程中完成特定功能的程序段两端加上P操作和V操作,它们分别
12、使用不同的信号量,用以在各进程间传递信息。通常,能够最先执行的进程中,P操作中所使用的信号量的初值大于1,而其它进程中,第一个P操作所对应的信号量的初值为零。这样,在执行时,第一个进程先执行,执行完V操作后,使另一个进程可以执行,依次传递下去,就可以实现各个进程按照一定的顺序执行了。 4.6死锁 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去,此时称系统处于死锁状态或系统产生了死锁。 4.5进程调度 无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需
13、要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。 4.5.1进程调度的基本原理 在设计进程调度程序时应该考虑以下三个方面:调度时机:什么时候,什么情况下进行程序调度。调度策略:使用什么样的策略来选择下一个进入运行的进程。调度方式:是抢占式还是非抢占式,当由调度程序来决定什么时候停止一个进程的执行,以便让其它进程能够得到执行机会时,这种强制挂起进程的动作成为抢占式。 4.5.2Linux进程调度 Linux内核有如下三种调度方法:SCHED_OTHER 分时调度策略,SCHED_FIFO实时调度策略,先到先服务SCHED_RR实时调度策
14、略,时间片轮转4.5.3调度策略 在每个进程的task_struct结构中有以下四项:PolicyPriorityCounterrt_priority这四项就是调度程序选择进程的依据。其中,policy是进程的调度策略,用来区分实时和普通两种进程;priority是进程(实时和普通)的优先级;counter是进程剩余的时间片,它的大小完全由priority决定;rt_priority是实时优先级,这是实时进程所特有的,用于实时进程间的选择。4.5.4调度函数 函数schedule()实现调度程序,它的任务是从运行队列的链表中找到一个进程,并随后将CPU分配给这个进程。 直接调用延迟调用4.6进
15、程间通信 进程间通信就是在不同进程之间传播或交换信息,在Linux这种多用户多任务的环境中,为了完成一个任务有时候需要多个进程协同工作,这必然牵扯到进程间的相互通信。 4.6.1进程通信的方式 管道(Pipe) 命名管道(named pipe) 信号(Signal) 消息(Message)队列 共享内存 内存映射(mapped memory) 信号量(semaphore) 套接口(Socket) 4.6.2Linux信号通信原理 在Linux系统中,根据具体的的软硬件情况,内核程序会发出不同的信号来通知进程某个事件的发生。对于信号的发送,大都由内核程序在遇到以下几种特定情况的时候向进程发送的,
16、例如:系统测出一个可能出现的硬件故障,如电源故障程序出现异常行为,如企图使用该进程之外的存贮器该进程的子进程已经终止用户从终端向目标程序发出中断(BREAK)键、继续(CTRL-Q)键等4.6.2Linux信号通信原理当一个信号正在被处理时,所有同样的信号都将暂时搁置,直到这个信号处理完成后,才加以理会。当一个进程收到信号后,用下列方式之一做出反应 忽略该信号 捕获该信号(即内核在继续执行该进程之前先运行一个由用户定义的函数)让内核执行与该信号相关的默认动作4.6.3Linux管道通信原理 管道只能用于有亲系关系的进程间通信,即只能在父进程与子进程或兄弟进程间通信,而有名管道可以用于任何进程间
17、通信。管道是半双工的,即在某一时刻只能有一个进程向管道里读或写。 4.7线程 线程(Thread)是一个动态对象,是处理机调度的基本单位,表示一个进程中的一个控制点,执行一些指令。一个进程内的个线程均可访问整个进程的所有资源,因此线程间通信比较简单。 4.7.1线程的概念 线程(thread),有时被称为轻量级进程,是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,它可与同属一个进程的其它线程共享进程所拥有的全部资源。 4.7.1线程的概念4.7.2线程与进程的比
18、较 线程和进程在很多方面是相似的,主要表现在如下几方面:都具有ID,一组寄存器,状态,有限级以及所要遵循的调度策略。每个进程都有一个进程控制块,线程也拥有一个线程控制块,这个控制块包含线程的一些属性信息,操作系统适应这些属性信息来描述线程。线程和子进程共享父进程中的资源。线程和子进程独立于它们的父进程,竞争使用处理器资源。线程和子进程的创建者可以在线程和子进程上实行某些控制,比如创建者可以取消、挂起、继续和修改线程和子进程的优先级。线程和子进程可以改变其属性并创建新的资源。4.7.2线程与进程的比较进程和线程的区别在于:一个程序至少有一个进程,一个进程至少有一个线程.线程的划分尺度小于进程,使得多线程程序的并发性高。进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度山西省高校教师资格证之高等教育法规真题练习试卷B卷附答案
- 2024年大、中容量数字程控交换机项目资金需求报告代可行性研究报告
- 2024年机械治疗及病房护理设备项目资金申请报告代可行性研究报告
- 幼儿园校舍安全排查自查报告范文
- 2024年产品保修服务协议文本
- 2024年专用液化气运输服务协议范本
- 2024年建筑效果设计方案协议模板
- 2024年二手车销售协议:全面细化
- 仓库租赁与承包协议范本2024年适用
- 出口业务协议样式2024年专业
- 2024年医院招聘护士考试试题及参考答案
- 2024年永州职业技术学院单招职业技能测试题库及答案解析
- 注射相关感染预防与控制(全文)
- 《红星照耀中国》阅读推进课教学设计-2023-2024学年统编版语文八年级上册
- TSG+11-2020锅炉安全技术规程
- NB-T31030-2012陆地和海上风电场工程地质勘察规范
- 国开(黑龙江)2024年《网络行为分析》终结性考核答案
- 江苏省常州市天宁区2023-2024学年五年级下学期一二单元语文试卷
- 学生自主管理委员会常规检查登记表(定)
- DL-T5142-2012火力发电厂除灰设计技术规程
- 江苏省南京市鼓楼区+2023-2024学年九年级上学期期中物理试题(有答案)
评论
0/150
提交评论