浏览 2112 次
锁定老帖子 主题:【基础】操作系统-处理器管理-进程-01
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-08-25
处理器管理
1、处理器管理背景: 以下两种OS中,程序的并行运行对系统资源的竞争 1)单用户多任务的OS 2)多用户多任务的OS 2、进程状态: (1)、进程的定义: 一个具有一定独立功能的程序,关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的调度、执行、管理单元(最小单位)。 ◆解释:进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。 ◆进程的概念主要有两点: 第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。 ->文本区域存储处理器执行的代码; ->数据区域存储变量和进程执行期间使用的动态分配的内存; ->堆栈区域存储着活动过程调用的指令和本地变量。 第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。 (2)、进程的组成: 静态观点:程序 + 数据 + 进程控制块(PCB) = 进程 动态观点:计算机状态的一个有序集合 ◆注意:进程存在的唯一标志->PCB, 内容包括:调度信息和执行信息 调度信息->供进程调度使用包括进程当前的一些基本属性 执行信息->现场,刻画进程的执行情况 生命周期:进程的产生到完成 (3)、进程的特征: 动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。 ->并发性:任何进程都可以同其他进程一起并发执行 ->独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位; ->异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进 ->结构特征:进程由程序、数据和进程控制块三部分组成。 多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变 (4)、进程的状态模型: 1)、三态模型:(假设所有进程都在内存中) 进程一般有三种基本状态:运行、就绪和阻塞。 ->运行:当一个进程在处理机上运行时,称该进程处于运行状态。 ->就绪:一个进程获得了除处理机外的一切资源,一旦得到处理机即可运行,则称该进程处于就绪状态。 ->阻塞:也称等待或睡眠状态,一个进程正在等待某一事件发生而暂时停止运行,这时即使把处理机分配给该进程,它也无法运行,故称该进程处于阻塞状态。 2)、五态模型: 引入新建态和终止态。 ->新建态:对应于进程刚刚被创建且没有被提交的状态,并等待系统完成创建进程的所有必要信息。因为创建进程分为两个阶段,第一个阶段为一个新进程创建必要的管理信息,第二个阶段让该进程进入就绪状态。由于有了新建态,操作系统可以根据系统的性能和内存容量的限制推迟新建态进程的提交。 ->进程的终止:也可分为两个阶段,第一个阶段等待操作系统进行善后处理,第二个阶段释放内存。 3)、具有挂起功能系统的进程状态及其转换:(某些挂起、阻塞或定期启动的进程在磁盘镜像中) ->活跃就绪:进程在主存并且可被调度的状态 ->静止就绪:进程被对换到辅存时的就绪状态,是不能被直接调度的状态;只有当主存中没有活跃就绪态进程,或者挂起就绪态进程具有更高的优先级,系统将把挂起就绪态进程调回主存并转换为活跃就绪 ->活跃阻塞:进程进入主存,一旦等待的事件产生便进入活跃就绪状态 ->静止阻塞:进程被对换到辅存时的阻塞状态,一旦等待的事件产生便进入静止就绪状态 3、进程的控制: 进程控制是指对系统中所有进程从创建到消亡的全过程实施有效的控制。其主要功能包括创建一个新进程,撤销一个已经运行完的进程,改变进程的状态,实现进程间的通信。进程控制是由操作系统内核中的原语实现的。 ◆原语是指由若干条机器指令组成的、用于完成特定功能的程序段。特点是在执行时不能被分割,即原子操作要么都做,要么都不做。 ->内核中包含的原语主要有:进程控制原语、进程通信原语、资源管理原语以及其他原语。 ->属于进程控制原语有:进程创建原语、进程撤销原语、进程挂起原语、进程激活原语、进程阻塞原语以及进程唤醒原语等。 (1)、同步与互斥 a)进程间的同步:指进程间完成一项任务时直接发生互相作用的关系。 b)进程间的互斥:在多道程序系统中,各进程可以共享各类资源,但有一些资源一次只能供一个进程使用,称为临界资源。进程间的互斥是指系统中各进程互斥使用临界资源(一次只允许一个进程访问资源)。 c)临界区管理原则:有空即进,当无进程处于临界区时,允许进程进入临界区,并且只能在临界区运行有限的时间。无空则等,当有一个进程在临界区时,其他需要进入临界区的进程必须等待,以保证进程互斥的访问临界资源。有限等待,对要求访问临界资源的进程,应保证进程等待有限时间后进入临界区,以免陷入”饥饿“状态。让权等待,当进程不能进入自己的临界区时,应立即释放处理机,以免陷入”忙等“状态。 (2)、信号量与PV操作 信号量是最早出现的用来解决进程同步与互斥问题的机制(也可实现进程通信),包括一个称为信号量的变量及对它进行的两个原语操作。信号量为一个整数,我们设这个信号量为:sem。很显然,我们规定在sem大于等于零的时候代表可供并发进程使用的资源实体数,sem小于零的时候,表示正在等待使用临界区的进程的个数。根据这个原则,在给信号量附初值的时候,我们显然就要设初值大于零。 p操作和v操作是不可中断的程序段,称为原语。P,V原语中P是荷兰语的Passeren,相当于英文的pass, V是荷兰语的Verhoog,相当于英文中的incremnet。 ◆注意:在P,V愿语执行期间不允许有中断的发生。对于具体的实现,方法非常多,可以用硬件实现,也可以用软件实现。这种信号量机制必须有公共内存,不能用于分布式操作系统,这是它最大的弱点。 首先应弄清PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下: P(S): ①将信号量S的值减1,即S=S-1; ②如果0<=S,则该进程继续执行;0>S则该进程置为等待状态,排入等待队列。 V(S): ①将信号量S的值加1,即S=S+1; ②如果0<S,则该进程继续执行;0>=S则唤醒队列中第一个等待信号量的进程。 PV操作的意义:我们用信号量及PV操作来实现进程的同步和互斥。PV操作属于进程的低级通信。P操作和V操作是低级通信原语,在执行期间不可分割。其中,P操作表示申请一个资源,V操作表示释放一个资源。 P操作可表示如下,其中Semaphore表示所定义的变量是信号量: 1: Produre P(Var S:Semaphore); 2: Begin 3: S:=S-1; 4: If S < 0 then W(S) // 执行P操作的进程插入等待队列 5: End; V操作可表示如下: 1: Procedure C(Var S:Semaphore); 2: Begin 3: S:=S+1; 4: If S <= 0 then R(S) // 从阻塞队列唤醒一个进程 5: End; 1)、利用PV操作实现进程的互斥 令信号量mutex的初值为1,进入临界区时执行P操作,推出临界区时执行V操作,这样,进入临界区的代码段如下: 1: P(mutex) 2: 临界区 3: V(mutex) 一个例子:两个并发执行的程序段完成交通流量的统计,其中P1识别通过的车辆数,P2定时将计数值清0.用PV操作实现的交通流量统计程序如下: 1: P1 2: f 有车通过 then 3: begin 4: P(mutex) 5: COUNT := COUNT + 1; // 临界区 6: V(mutex); 7: end 8: GOTO L1; 1: P2 2: begin 3: P(mutex) 4: PRINT COUNT; // 临界区 5: COUNT := 0; 6: V(mutex); 7: end 8: GOTO L2; 2)、利用PV操作实现进程的同步 进程的同步是由于进程间的合作而引起的相互制约问题。实现进程同步的一种方法是将一个信号量与消息相联系,当信号量的值为0时表示希望的消息未产生,否则表示希望的消息已经到来。 例:生产者进程P1不断的生产产品送入缓冲去,消费者进程P2不断的从缓冲区中取出产品消费。为了实现进程P1与P2之间的同步问题,需要设置一个信号量S1,表示缓存区是否空闲,初值为1,表示可以将产品送入缓冲区;设置另一个信号量S2,表示缓冲区有无产品,初值为0,P1和P2的同步过程如下: 进程P1 L1: 生产一个产品 P(S1) 产品送缓冲区 V(S2) GOTO:L1 进程P2 L2: 生产一个产品 P(S2) 从缓冲区取一个产品 V(S1) 消费 GOTO:L2 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |