Linux基础教程(清华大学版教程的课件).docx
《Linux基础教程(清华大学版教程的课件).docx》由会员分享,可在线阅读,更多相关《Linux基础教程(清华大学版教程的课件).docx(139页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、四1丫,三鮑清华大学计算机基础教育课程系列教材汤荷美董渊李莉程志锐编著Linux基础教程(1)清华大,林-5稷泰材Linux用础数盤操忙系统基础11貝 BSfB ,操作系统基础UA UN.第2章处理机管理2.1 作业2.2 进程2.3 线程2.4 小结习题肩华一提高处理机(CPU)的使用率,使它尽可能处于工作状态,是操作系统管理功能的 主要目标之一。在Linux系统中,提高处理机使用率的技术措施主要是多道和分时,处理机在进程 之间切换,按照一定的规则轮流执行每个进程。对于单个处理机的系统,这些进程宏观上看似并行执 行,而微观上来看仍然是串行执行的,这种执行方式被称为并发执行。操作系统通过并发控
2、制机制,对处理机进行分配、调度,在保证每个进程都得 到公平合理执行的同时,使系统中的各种资源得到充分的使用。本章主要围绕处理机管理展开,着重介绍进程的概念,同时也包括相关的两个基本概念:作业和线程。58本Linux经典电子书教程(免积分下载) tao/l)log/static/22341604120136221733144/2.1 作业作业是用户向计算机系统提交一项工作的基本单位, 是用户在次事务处理或计算过程中要求计算机所 做工作的总和。作业和程序是两个相互联系而又不同的概念。如果 次业务处理可以由某个程序完成,就是说这个业 务处理只要提交这个程序就够了,这种情况下, 这个程序就是一个作业。
3、通常,完成一次业务需要 由多个程序协同完成,这时,多个程序、这些程序 需要的数据以及必要的作业说明一起构成一个作 业。系统通过作业说明书或者作业控制语句(JCL) 控制程序和相应的数据执行,完成整个业务处理。按照对作业的处理方式,可以分为联机、批处理等作 业。Linux系统中的shell提供了操作系统和用户之间的联 机命令接口。Linux的shell同时提供了程序级接口。用户通过提交 个命令或个命令序列以批处理方式执行特定的 操作(详见本书第2部分)。在Linux分时批处理系统中,也可以根据对作业执行 时的响应特征分为前台作业和后台作业。在多用户系统中,多个用户、不同类型的作业可能同 时请求执
4、行,控制和管理这些作业,协调它们之间 的关系,就是作业调度,作业调度是处理机调度的 一部分。2.2 进程计算机内存中同时存放多个相互独立的已经开始运行 的程序实体,大家按照某种规则轮流使用处理器, 这是现代多道操作系统实现资源共享,提高系统资 源利用率的主要方式。描述这些程序实体的概念就 是进程。在多道情况下,每个进程独立地拥有各种必要的资 源,占有处理机,独立地运行。在多道系统中,同 时存在多个进程,所以当某个进程进入等待状态 时,操作系统将把处理机控制权拿过来并交给其他 可以运行的进程。进程之间存在着相互制约、相互 依赖的约束关系。种最糟糕的情况是所有进程都拥有部分资源,同时 在等待其他进
5、程拥有的资源,这样,大家都无法运 行,进入种永久等待的状态,这种情况称为死 锁,死锁是对系统资源极大的浪费,必须设法避本节着重讨论现代多道操作系统中的核心概念进 程,这是理解操作系统工作原理的基础和关键。首 先介绍单个进程的状态、状态转换的条件和控制原 语、进程在系统中的静态描述等,接着介绍多个进 程之间的约束关系,由此引出进程间通信的概念, 通信是协调、解决进程间约束关系的惟一手段,这 种约束关系处理不当造成的最严重的后果就是死 锁。2.2.1进程的概念进程(process)的概念最早出现在60年代中期,用于多道系统,在Linux系统中,进程也称为任务(task) 简单地讲,进程就是正在运行
6、的程序, 更为严谨的表达是,进程是个具有一定独立功能 的程序关于某个数据集合的一次运行活动。进程的概念对于理解操作系统有决定性的意义,而真 正理解进程,必须了解它的基本性质。进程是操作系统分配资源和进行调度的独立单位,具 有独立性。同时,具有动态性。多道系统中同时存 在多个进程,这些进程拥有各自的资源,各自独立 地执行,对于单处理机系统,进程宏观上同时运行 而微观上是依次执行,这种情况称为并发执行。1 .进程和程序进程和程序是对相互联系的概念。程序是指令的有 序集合,是个静态的概念,描述完成某个功能的 一个具体操作过程,而进程是程序针对某组数据 的次执行过程,更强调动态特征。个完整的进 程,包
7、括程序、执行程序所需要的数据,同时还必 须包括记录进程状态的数据资料。在多道分时操作系统中,按照时间片轮流在各个进程 间切换。对于单处理器系统,每个时刻只能有 个进程在执行,当分配给该进程的时间片用完之 后,不管该进程运行到什么程度,都必须立即停 止,然后让出处理器资源,下个进程进入执行状 态。让出处理器的进程必须记录好正在运行的状态,包括 寄存器、堆栈等各种信息,这些信息保证当处理器 下次切换到这个进程的时候,进程能够正确地从上 次执行到的位置继续往下执行。个程序在处理相同或不同的操作数据时可以同时对 应于多个进程。个进程也可以包含多个程序,某 个程序在运行过程中,可能同时会调用到多个其他
8、程序,这些具有调用关系的多个程序共同构成一次 完整的运行活动,即个完整的进程。举个直观的例子。我们在Linux系统下使用编辑器vi进行编辑,同时打开多个窗口,编辑多个不同名 称的文件,vi编辑器是个可执行程序,不同的文 件就是不同的操作数据,而对应于这些文件同时打 开的每一个编辑窗口就对应着个进程,每个进 程都处于不同的状态。如果说程序是提供计算机操作的组工作流程的话, 进程就是具体的工作过程,按照同样的工作流程, 针对不同的原料,可以同时开始多个工作过程,得 到多种不同的成品。这种工作流程和工作过程的关 系就可以类比为程序和进程的关系。2 .进程和作业作业是用户向计算机系统提交一项工作的基本
9、单位, 是用户在次事务处理或计算过程中要求计算机所 做工作的总和。进程是个具有一定独立功能的程 序关于某个数据集合的一次运行活动,是操作系统 分配资源和进行调度的基本单位。作业是描述用户向系统提交工作任务的实体单位,而 进程是系统完成工作任务时程序执行的实体单位。 从这个角度讲,他们处于不同的层次,作业描述用 户和操作系统之间的任务委托关系,而进程描述操 作系统内部任务的具体执行过程。一个用户的任 务,即作业,由用户提交给系统,必须以进程的形 式具体完成。mSlTY PR.ES.S. :莪海函般对于批处理系统,通常,作业放在外存中专门的作业 队列中等待进入内存执行,要经过一次宏观调度, 由外存
10、进入内存,以进程的形式运行。而对于 UNIX/Linux这样的分时系统,没有宏观调度,作 业不经过调度,直接进入内存,以进程的形式开始 运行。任何个进程,都存在于内存中,并且是已 经开始运行的动态实体。2.2.2进程描述我们知道,进程是个动态的概念,描述程序的次运行活动。它存在于系统的内存中,是操作系统可 感知、可控制的动态实体,是系统分配各种资源、 进行调度的基本单位。1.进程控制块现在我们来讨论进程在内存中的静态存在方式。在多 道系统中,处理机在多个进程之间来回切换,每个 进程都会在暂停、运行这两种状态之间来回转换。 当个进程在处理机切换过来重新进入运行状态 时,它必须严格精确地接着上次运
11、行的位置继续进 行,进程的静态描述可以保持切换现场,确保准确 衔接,保证进程调度的实现,顺利完成程序所规定进程切换现场称为进程上下文(contex。,包含了一个 进程所具有的全部信息,一般包括:进程控制块(Process Control Block, PCB)、有关程序段和 相应的数据集,具体组成见图2.1。程序段是某个 进程执行的相关指令集合,和静态的程序段有明确 的对应关系,相应数据集是这个程序段正在操作的 那部分数据,PCB是记录进程各种状态的数据体, PCB是操作系统管理感知、控制进程的数据实体, 通过它,就可以找到进程的程序段和数据集,系统 正是通过PCB来控制进程的。一般来讲,PC
12、B记录 着进程的所有资料,是全部或部分常驻内存的, PCB记录着程序段和数据集的地址指针,通过这些 指针,就可以得到具体的指令和数据。 mSlTY PR.ES.S. PCB记录了进程的全部控制信息,一般较庞大而复 杂,它可以按照功能大概分成四个组成部分:进程 描述信息、进程控制信息、进程相关的资源信息和 CPU现场保护结构(如图2.1)。图2.1进程描述数据关系示意图(进程上下文)2. Linux的PCBLinux系统的进程控制块PCB用个称为task-struct 的结构体来描述。(1)进程描述信息通过进程描述信息,Linux系统可以惟一地确定某 个进程的基本情况,可以了解该进程所属的用户及
13、 用户组等信息,同时还能确定这个进程与所有其他 进程之间的关系。这些描述信息包括:进程号、用 户和组标识以及描述进程家族关系的连接信息。 进程号(pid, process identifier)Linux系统为每个进程分配个标识号,通过这个 标识号识别、控制、调度这个进程,别的进程也通 过这个标识号来识别这个进程并与之通信,用户也 可以使用操作命令或系统调用通过标识号来控制该 进程。 用户和组标识(user and group identi行er)Linux系统中有四类不同的用户和组标识,主要用来 控制进程对系统文件的访问权限,实现系统资源的 安全访问。Linux使用组将文件和目录的访问特权授
14、予一组用 户,一个进程可以同时属于多个组,这些组都被放 在进程的task-struct中的group数组中。 连接信息(Links)Linux系统中的进程之间形成树状的家族关系,连接 信息记录某个进程的父进程、兄弟进程(具有相同 父进程的进程)以及子进程的信息,描述个进程 在整个家族系统中的具体位置。(2)进程控制信息进程控制信息记录了进程的当前状态、调度信息、记 时和时间信息以及进程间通信信息,是系统确定进 程的状态、了解进程之间的关系、进行进程调度的 主要依据。进程当前状态进程的生命周期中,总是不停地在各种状态之间转 换,有关进程的状态及转换规则,在下小节讨调度信息系统的调度程序利用这部分
15、信息决定哪个进程应该 运行,包括优先级、实时优先级、计数器和调度策 略。记时信息包括时间和定时器,给出进程占有和利用CPU的情 况,是调度的依据,也是进行统计、分析以及记费 的依据。通信信息多个进程之间通信的各种信息也记录在PCB中。Linux支持典型的UNIX进程间通信机制信号、 管道,也支持System V通信机制共享内存、 信号量和消息队列。(3)进程资源信息Linux的PCB中包含大量的系统资源信息,这些信息 记录了与该进程有关的存储器的各种地址和资料、 文件系统以及打开文件的信息等等。通过这些资 料,进程就可以得到运行需要的相关程序段以及必 要的数据。(4) CPU现场信息进程的静态
16、描述必须保证个进程在获得处理机并重 新进入运行状态时,能够精确地接着上次运行的位 置继续进行。相关程序段和数据集以及处理机现场(或处理机状态)都必须保存。处理机(CPU)现 场信息一般包括处理机的内部寄存器和堆栈等基本 数据。task-stmct是Linux系统的进程控制块(PCB),通 过对PCB的操作,系统为进程分配资源并进行调 度,最终完成进程的创建和撤销。系统利用PCB中 的描述信息来标识个进程,根据PCB中的调度信 息决定该进程是否应该运行。如果这个进程要进入 运行,首先根据其中的CPU现场信息来恢复运行现 场,然后根据资源信息获取对应的程序段和数据 集,接着上次的位置开始执行,同时
17、通过PCB中的 通信信息和其他进程协同工作。2.2.3进程状态及转换系统通过PCB对进程进行控制,进程不断地在不同的 状态之间转换。1.进程的基本状态在分时系统中,个进程拥有了所需要的全部资源, 就可以开始执行,当分配的时间片结束,让出CPU 资源,这种只要能够占有CPU就能进入执行的状态 称为就绪状态。有时,多个进程之间互相制约,某 个进程必须等到某个事件发生(才能够竞争CPU资 源,这是等待状态,当等待的事件发生之后,这个 进程被唤醒,由等待状态进入就绪状态,直到获得 CPU开始执行。等待状态、就绪状态和执行状态 是个进程所具有的最基本的三种状态,见图四1Y ,三鮑阳度/图2.2进程基本状
18、态及转换示意图时间片、等待事件,耗X睡眠(等待)事件发生,喚醒2.Linux系统进程状态Linux系统的2216版本进程共有六种状态,包括运 行状态、可中断等待状态、不可中断等待状态、僵 死状态、暂停状态和交换状态,而在2.4.0版本中取 消了交换状态,加入独占状态。表2.1 Linux系统(2.2.X2.4.X版本)进程状态表进程状态值说明TASK-RUNNING0运行态TASK-INTERRUPTIBLE1等待态,可中断TASK-UNINTERRUPTIBLE2等待态,不可中断TASK-ZOMBIE4僵死态TASK-STOPPED8暂停态TASK-SWAPPING16交换态(2.4.X版本
19、已取TASK-EXCLUSIVE32独占态(1)运行状态(miming)Linux系统中的运行状态实际包含了上述基本状态中 的执行和就绪两种状态,进程到底是正在运行还是 处于就绪状态准备运行,要靠当前是否占有CPU资 源来区分。(2)等待状态Linux系统把基本的等待状态进步细化为可中断的 等待态和不可中断的等待态两种。处于这种状态的 进程都在等待某个事件或某个资源,可中断等待状 态的进程可以被信号唤醒而进入就绪状态等待调 度,而不可中断等待状态的进程是因为硬件资源无 法满足,不能被信号唤醒,必须等到所等待的资源 得到之后由特定的方式唤醒。(3)僵死状态(zombie)由于某些原因进程被终止,
20、这个进程所拥有的内存、 文件等资源全部释放之后,还保存着PCB信息,这 种占有PCB但已经无法运行的进程就处于僵死状 态。(4)暂停状态处于暂停状态的进程,一般都是由运行状态转换而 来,等待某种特殊处理。比如处于调试跟踪的程 序,每执行到个断点,就转入暂停状态,等待新 的输入信号。(5)交换状态处于交换状态的进程正在执行内存、外存的交换 作。这个状态在2.2.X版本的内核中基本已经不使 用,在2.4.X版本中没有这种状态。(6)独占状态它应该是等待状态的种,处于独占状态的进程位于 等待队列中,当等待的事件发生时,只有处于这种 状态的进程被唤醒,其他处于可中断和不可中断等 待状态的进程则继续等待
21、。Linux 2.4引入独占状态 后,如果事件发生,只唤醒处于独占状态的那一个 进程,这就可以大大提高Apache这类Web应用的效 率,使Linux更适合网络服务器的角色。来看Linux系统进程的状态转换情况。采取一定的简 化措施:按照进程是否占有处理机为依据,把进程 的运行状态分为执行和就绪两种状态;等待状态统 一考虑,不再区分是否可中断,独占状态也作为 种等待状态处理;不涉及交换状态。见图2.3。跟踪调度一分配资源 创建进程回收PCB 进程消亡僵死耗尽睡眠暂停执行IDI=跟踪结束等待事件;就绪事件发生,喚醒图2.3 Linux系统进程状态及转换示意图图2.3同时也记录了一个进程在整个生命
22、周期的变化 过程。从图的左下方开始看,系统在某种特定的情 况下,响应某个要求,首先分配各种资源,创建 个新的进程,进程进入就绪队列。所有的进程必须在就绪之后,才有资格竞争CPU,进入运行状态。这样,进程的整个生命周期中,大 致的转换路径总是沿着三个闭合回路进行。就绪状态和执行状态形成第一个回路。进程进入就绪 态,放入可执行队列等待,一旦被调度函数选中, 就切换现场,进入运行状态,等自己的时间片耗尽 之后,马上保护现场,让出CPU,转入就绪状态, 等待新的调度。执行状态、等待状态和就绪状态形成第二个回路。处 于执行状态的进程,有时需要等待某个事件或某种 资源的发生,这时,继续占有CPU也无法开展
23、 作,就转入等待状态,CPU由下个被调度的进程 占有。当等待进程所等待的事件发生后,等待进程 被唤醒,进入就绪状态。执行状态、暂停状态和就绪状态构成第三个回路。当 接收到某种特殊的信号,比如SIGSTOP (Linux的 停止信号)时,处于执行状态的进程放弃CPU,保 护现场之后,进入暂停状态,直到获得另外一个特 殊的信号进入就绪状态。个处于执行状态的进程调用退出函数exit之后,进 程就会进入僵死状态,这种状态下,进程释放了 PCB之外的所有系统资源。也就是说,它在系统中 只留下这个进程的一个PCB。僵死进程的父进程通过PCB 了解到该进程所处的状态 后,采取相应的处理措施,回收PCB,这个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 基础教程 清华大学 教程 课件
限制150内