Linux操作系统原理与应用第四章课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Linux操作系统原理与应用第四章课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 操作系统 原理 应用 第四 课件
- 资源描述:
-
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操作的基本前提
展开阅读全文