操作系统-进程管理
- 格式:pdf
- 大小:587.72 KB
- 文档页数:12
进程管理系统操作系统在计算机的世界里,操作系统就如同一位有条不紊的大管家,负责协调和管理各种资源,以确保计算机系统的高效运行。
而进程管理系统则是操作系统中的一个关键部分,它就像是交通警察,指挥着众多进程的运行,保证它们有序、高效地完成任务。
什么是进程呢?简单来说,进程就是正在运行的程序的实例。
当我们打开一个应用程序,比如浏览器或者文本编辑器,操作系统就会为这个程序创建一个进程,为其分配资源,如内存、CPU 时间等,并监控其执行情况。
进程管理系统的主要任务包括进程的创建、调度、同步、通信和终止。
进程的创建是整个进程管理的起点。
当用户请求运行一个程序,或者系统自身需要启动一个服务时,操作系统就要创建一个新的进程。
这个过程可不简单,它需要为新进程分配必要的资源,如内存空间、文件描述符等,并初始化进程的控制信息,如进程标识符、状态等。
调度则决定了哪个进程能够获得 CPU 的使用权。
由于 CPU 的处理能力是有限的,而同时可能有多个进程都在等待执行,所以操作系统需要有一个合理的调度策略,来决定在某个时刻让哪个进程运行。
常见的调度算法有先来先服务、短作业优先、时间片轮转等。
比如先来先服务算法,就是按照进程到达的先后顺序来分配 CPU 时间;短作业优先则会优先让执行时间短的进程先运行,以提高系统的整体效率。
进程之间的同步和通信也是非常重要的。
在很多情况下,多个进程需要协同工作,共同完成一个任务。
比如,一个打印进程需要等待文档生成进程完成后才能开始打印。
这就需要进程之间进行同步,以确保它们的执行顺序和相互关系正确无误。
而进程通信则是让进程之间能够交换数据和信息,常见的通信方式有共享内存、消息队列、管道等。
共享内存就像是一个公共的仓库,多个进程都可以访问和修改其中的数据;消息队列则像是一个邮箱,进程可以把消息发送到队列中,其他进程可以从队列中接收消息;管道则像是一条单向的通道,数据只能从一端流向另一端。
当一个进程完成了它的任务,或者出现了错误无法继续运行时,就需要被终止。
2.1 进程与线程进程是指令的集合(错,程序是指令的集合,进程是程序的一次执行过程)优先级是进程调度的重要依据,一旦确定就不能改变(错)在单CPU的系统中,任意时刻都有一个进程处于运行状态(错,可以空转)进程申请CPU得不到满足时,其状态变为阻塞(错!等待CPU的进程处于就绪状态)进程获得CPU运行是通过调度得到的(对)线程是一种特殊的进程(对)进程是程序在一个数据集合上运行的过程,是系统进行资源分配和调度的独立单位(对)进程是PCB结构、程序和数据的集合(对)撤销父进程时,应同时撤销子进程(错!进程撤销可采用两种策略,一种是只撤销指定进程,另一种是撤销指定进程和其子孙进程)线程的切换,可能会引起进程的切换(对)引入线程后,处理机只在线程中切换(错!!)线程是比进程更小的能独立运行的基本单位(错,这句话的成立需要一定的前提条件)线程的引入增加了程序执行的时空开销(错,应为减少)一个进程一定包含多个线程(错)一个进程创建的若干线程共享该进程的程序段和数据段,但是它们有各自的运行栈区(对)中断是进程切换的必要条件,而不是充分条件。
(对)进程的基本特点:动态性,并发性,独立性,异步性,结构性。
在多道程序设计环境下,操作系统分配资源以进程为基本单位在引入线程的操作系统中,资源分配的基本单位是进程,CPU分配的基本单位是线程。
在引入线程的操作系统中,进程是资源分配的基本单位,线程是调度的基本单位从运行状态到就绪状态是由于时间片用完或出现了比现在进程优先级更高的进程(调度程序决定)从就绪状态到运行状态是调度程序决定的从阻塞状态到就绪状态是协作程序决定的从运行状态到阻塞状态是进程自身决定的(只有这个是主动的)对进程的管理和控制使用原语。
(原语包括创建原语,撤销原语,阻塞原语,唤醒原语等)一个进程被唤醒意味着进程变为就绪状态(该进程可能重新占用CPU)。
(唤醒原语的功能是将被被唤醒进程从阻塞队列中移到就绪队列中)降低进程优先级的合理时机是进程的时间片用完。
操作系统的五大管理功能和四大分类操作系统是计算机系统中的重要组成部分,它是管理计算机硬件和软件资源的核心软件。
操作系统的功能主要包括进程管理、内存管理、文件管理、设备管理和用户界面。
本文将详细介绍操作系统的五大管理功能和四大分类。
一、进程管理进程是计算机中正在运行的程序的实例。
进程管理是操作系统对进程的创建、调度、同步和通信等进行控制和管理的功能。
它主要通过进程调度算法来合理安排进程的执行顺序,确保系统资源的合理分配和高效利用。
1.1 进程创建与撤销进程创建是指操作系统在一个程序运行时,为它分配必要的资源和建立进程控制块。
进程撤销则是指操作系统根据某些条件主动终止一个正在运行的进程。
1.2 进程切换与调度进程切换是指操作系统在多任务环境下,将CPU的执行权从一个进程转移到另一个进程的过程。
进程调度则是指操作系统根据一定的优先级和调度算法,决定将CPU分配给哪个进程来执行。
1.3 进程同步与通信进程同步是指操作系统通过各种机制来协调多个并发执行的进程,防止它们之间的冲突和竞争导致的问题。
进程通信则是指操作系统提供的一种机制,使得进程之间可以传递信息和共享资源。
二、内存管理内存是计算机中用于存储程序和数据的物理设备,内存管理是操作系统对内存空间的分配、回收和保护等进行管理的功能。
它主要通过内存分区、动态分配和页式存储等技术,来提高内存的利用率和访问效率。
2.1 内存分区与地址映射内存分区是将计算机的内存空间划分为若干个逻辑区域,以方便管理不同的程序和数据。
地址映射则是将程序的逻辑地址转换为实际的物理地址,以便于访问内存中的内容。
2.2 虚拟内存与页面置换虚拟内存是指操作系统利用磁盘空间来扩展实际的物理内存,以解决内存不足的问题。
页面置换则是指操作系统根据一定的置换算法,将不常用的内存页面换出到磁盘,以便为其他进程提供更多的内存空间。
三、文件管理文件是计算机中用于存储和组织数据的逻辑单元,文件管理是操作系统对文件的创建、读写、删除和保护等进行管理的功能。
操作系统-进程管理操作系统-进程管理1.简介进程管理是操作系统中的核心功能之一,负责管理计算机系统中的各个进程。
进程是指正在执行的程序实例,它包含了程序的代码、数据和执行状态等信息。
进程管理涉及创建、调度、同步、通信、终止等一系列操作,旨在协调和控制多个进程的执行。
2.进程的创建与终止2.1 进程创建进程的创建是指由操作系统创建新的进程。
主要步骤包括:①分配空间:为新进程分配内存空间。
②初始化:将新进程的状态设置为就绪态,并初始化进程控制块(PCB)。
③指定执行代码:将新进程指向要执行的代码。
④设置执行环境:为新进程设置执行所需的环境变量和资源参数。
2.2 进程终止进程终止是指进程执行完毕或被强制终止。
主要步骤包括:①保存状态:将进程的状态保存到进程控制块中。
②释放资源:释放进程所占用的系统资源。
③给予父进程处理机:将CPU控制权交还给父进程。
3.进程调度进程调度是指选择就绪态进程中的一个进程分配CPU资源。
调度算法的选择和实现会直接影响操作系统的性能和效率。
常见的调度算法有:3.1 先来先服务(FCFS):按照进程到达的先后顺序进行调度。
3.2 短作业优先(SJF):根据进程的执行时间进行调度,执行时间短的进程优先。
3.3 时间片轮转(RR):每个进程被分配一个时间片,在时间片用完后,切换到下一个进程。
3.4 优先级调度:根据进程的优先级进行调度,优先级高的进程先执行。
4.进程同步与通信4.1 进程同步为了保证多个进程之间的操作按照一定的顺序进行,需要进行进程同步。
常见的同步机制有:①互斥锁:只允许一个进程访问共享资源。
②信号量:用于进程之间的互斥与同步。
③条件变量:用于线程之间的等待与通知。
4.2 进程通信进程通信是指进程之间相互传递信息的过程。
常见的通信机制有:①管道:一种半双工的通信方式,可以在具有亲缘关系的进程之间进行通信。
②消息队列:进程可以通过读写消息队列来进行通信。
③共享内存:多个进程可以访问同一块共享内存区域,将其用作通信媒介。
操作系统的进程管理操作系统是计算机系统的核心组成部分,负责管理计算机的资源并提供各种服务。
进程是操作系统中的基本单位,是程序的执行实例。
进程管理是操作系统的重要功能之一,它包括进程的创建、撤销、调度以及进程间的通信和同步等操作。
一、进程的创建进程的创建是指操作系统为一个程序创建一个执行实例的过程。
当用户执行一个程序时,操作系统会为该程序创建一个独立的进程。
进程创建的步骤如下:1. 分配内存空间:操作系统为进程分配一块内存空间,用于存储代码、数据和堆栈等信息。
2. 初始化进程控制块:操作系统创建进程控制块(PCB),用于存储进程的各种状态、资源和控制信息。
3. 设置程序计数器(PC):将程序计数器设置为程序的入口地址,以便开始执行程序。
4. 设置堆栈指针(SP):将堆栈指针设置为堆栈的起始地址,以便进行函数调用和返回。
二、进程的撤销进程的撤销是指操作系统终止一个正在执行的进程的过程。
进程撤销的原因包括进程执行完毕、出现错误、被用户强制终止等。
进程撤销的步骤如下:1. 保存进程状态:将进程的状态、寄存器和堆栈等信息保存到进程控制块中。
2. 释放资源:释放进程占用的内存空间、文件和设备等资源,以便其他进程使用。
3. 销毁进程控制块:操作系统销毁进程控制块,回收其内存空间。
三、进程的调度进程的调度是指操作系统根据一定的调度算法,按照优先级或其他规则决定将哪个进程分配给处理器执行的过程。
进程调度的目标是提高系统的资源利用率和响应速度。
常见的调度算法包括先来先服务(FCFS)、短作业优先(SJF)、时间片轮转等。
四、进程间的通信和同步进程间的通信是指不同进程之间传递信息和共享资源的过程。
进程间通信可以通过共享内存、消息传递、管道、信号量等方式实现。
通信的目的是实现进程间的协作和数据共享。
进程间的同步是指多个进程按照一定的顺序执行,以避免资源竞争和数据不一致的问题。
常见的同步机制包括互斥锁、信号量、条件变量等。
操作系统的进程管理随着计算机技术的不断发展,操作系统作为计算机系统的核心部件,已经发挥了越来越重要的作用。
在操作系统中,进程管理是其中的一个重要的部分,它对计算机系统的性能和稳定运行起着至关重要的作用。
进程是指正在运行的程序。
在计算机中,进程可以分为操作系统进程和用户进程。
操作系统会为每个进程分配运行所需的资源,并实现对进程的调度、控制和同步等管理功能。
下面我们来详细了解一下操作系统的进程管理。
一、进程的概念与属性进程是指正在运行的程序在操作系统中的抽象,是计算机上的基本执行单位。
每个进程都有独立的内存空间和运行环境,包括CPU时间、内存空间、文件和设备等资源。
进程之间相互独立,不能相互干扰和共享内存。
进程有以下几种属性:1.进程标识:每个进程都有一个唯一的进程标识符PID,用于唯一标识该进程。
2.进程状态:进程可以有三种状态:就绪状态、阻塞状态和运行状态。
其中,就绪状态是指进程已经准备好运行,只需等待CPU调度即可;阻塞状态是指进程正在等待某个事件的完成,例如等待IO操作完成;运行状态是指进程正在执行。
3.进程控制块:每个进程都有一个进程控制块PCB,它是操作系统管理进程的重要数据结构,用于存储进程的运行状态、进程标识、程序计数器、寄存器等信息。
二、进程的状态转换进程可以经历三种状态的转换:就绪状态、阻塞状态和运行状态。
进程状态转换图如下:当一个进程在运行时,如果需要等待某个事件的发生,例如等待IO操作完成,它就会进入阻塞状态。
当阻塞事件完成后,它就会进入就绪状态,等待操作系统调度。
当操作系统调度到该进程并执行时,该进程就会进入运行状态。
三、进程的创建与终止进程的创建是指通过操作系统创建一个新进程的过程。
一般来说,进程的创建需要经过以下几个步骤:1.数据结构初始化:操作系统需要为新进程分配一个唯一的PID,并创建一个对应的进程控制块PCB。
2.程序加载:操作系统需要将新进程的代码和数据从磁盘加载到内存中。
实验内容:进程管理一、实验目的1、掌握Linux中进程的创建方法及执行情况;2、加深对进程、进程树等概念的理解;3、掌握Linux中如何加载子进程自己的程序;4、掌握父进程通过创建子进程完成某项任务的方法;5.、掌握系统调用exit()和_exit()调用的使用。
6、分析进程竞争资源的现象,学习解决进程互斥的方法;进一步认识并发执行的实质二、实验内容(一)进程的创建1、编写一段程序,使用系统调用fork( )创建两个子进程。
当此程序运行时,在系统中有一个父进程和两个子进程活动。
让每一个进程在屏幕上显示一个字符。
#include<stdio.h>main(){int p,x;p=fork();if(p>0){x=fork();if(x>0)printf("father\n");elseprintf("child2");}elseprintf("child1");}输出结果:child1child2father2、运行以下程序,分析程序执行过程中产生的进程情况。
#include <stdio.h>main(){int p,x;p=fork();if (p>0)fork();else{fork();fork();}sleep(15);}实验步骤:编译连接gcc –o forktree forktree.c后台运行./forktree &使用pstree –h 查看进程树运行结果:├─gnom e-terminal─┬─bash─┬─forktree─┬─forktree─┬─forkt ree───forktree││││└─forktree│││└─forktree││└─pstree 分析:程序运行,系统首先创建一个进程forktree,执行到p=fork()创建一个子进程forktree,子进程获得处理机优先执行,父进程等待;执行else,当执行到第一个fork()函数时,子进程创建了一个进程forktree,称之为孙进程,孙进程获得处理机往下执行,子进程等待;执行到第二个fork()函数时,孙进程又创建一个进程forktree,称之为重孙进程,重孙进程很快执行完,将处理机还给孙进程,孙进程很快执行完,将处理机还给子进程;子进程继续往下执行,执行到第二个fork()函数,又创建一个进程forktree,称之为第二孙进程,并获得处理机执行,此进程很快执行完,将处理机还给子进程,子进程也很快执行完,将处理机还给父进程,父进程P>0执行if语句,运行fork()函数,又创建一个进程forktree,称之为第二子进程,此进程获得处理机执行很快运行完,将处理机还给父进程,父进程运行sleep(15)语句,休眠15秒,用pstree命令查询进程树。
进程管理习题一、单项选择题1.在进程管理中,当________时,进程从阻塞状态变为就绪状态。
A进程被进程调度程序选中 B.等待某一事件C.等待的事件发生D.时间片用完2.建立进程就是____。
A.建立进程的目标程序B.为其建立进程控制块C.建立进程及其子孙的进程控制块D.将进程挂起3.分配到必要的资源并获得处理机时的进程状态是______。
A.就绪状态B.执行状态C.阻塞状态D.撤消状态4.在操作系统中,P、V操作是一种_______。
A.机器指令B.系统调用命令C.作业控制命令D.低级进程通讯原语5.在消息缓冲通信中,消息队列属于_________资源。
A.临界B.共享C.永久D.可剥夺6.对进程的管理和控制使用__________。
A.指令B.原语C.信号量D.信箱通信7.在操作系统中,进程是一个具有一定独立功能的程序在某个数据集上的一次______。
A.等待活动B.运行活动C.单独操作D.关联操作8.若P、V操作的信号量S初值为2,当前值为-1,则表示有_______等待进程。
A.0个B.1个C.2个D.3个9.下面对进程的描述中,错误的是__________。
A.进程是动态的概念B.进程执行需要处理机C.进程是有生命期的D.进程是指令的集合10.如果有三个进程共享同一互斥段,而且每次最多允许两个进程进入该互斥段,则信号量的初值应设置为A.3B.1C.2D.011.下列的进程状态变化中,____________变化是不可能发生的。
A.运行→就绪B.运行→等待C.等待→运行D.等待→就绪12.一个运行的进程用完了分配给它的时间片后,它的状态变为__________。
A.就绪B.等待C.运行D.由用户自己确定13.用V操作唤醒一个等待进程时,被唤醒进程的状态变为_______。
A.等待B.就绪C.运行D.完成14.临界区是_____________。
A.一段共享数据区B.一个缓冲区C.一段互斥执行的程序段D.一个互斥资源15.进程间的同步是指进程间在逻辑上的相互__________关系。
操作系统----进程管理引言:处理机管理是操作系统的基本管理功能之一,它所关心的是处理机的分配问题。
也就是说把CPU (中央处理机)的使用权分给某个程序,通常把这个正准备进入内存的程序称为作业,当这个作业进入内存后我们把它称为进程。
处理机管理分为作业管理和进程管理两个阶段去实现处理机的分配,常常又把直接实行处理机时间分配的进程调度工作作为处理机管理的主要内容。
进程通常具有三种状态:运行状态(正在使用CPU)、阻塞状态(等待输入/输出)和就绪状态(等待分配CPU)。
进程的引入:1,程序的顺序执行(1)顺序性(2)封闭性程序执行得到的最终结果由给定的初始条件决定,不受外界因素影响;(3)可再现性2,资源共享3,程序的并发执行及其特性(1)什么是并发执行尽管多道程序的并发执行在宏观上是同时进行的,但在微观上仍是顺序执行的。
第二种并发执行是在某到程序的几个程序段中,包含着一部分可以同时执行或顺序颠倒执行的代码。
所谓并发执行,是为了增强计算机系统的处理能力和提高资源利用率所采取的一种同时操作技术。
程序的并发执行总结为:一组在逻辑上互相独立的程序或程序段在执行过程中,其执行时间在客观上互相重叠,即是一个程序段的执行尚未结束,另一个程序段的执行已经开始的这种执行方式。
3.1.2进程的定义需要一个能描述程序的执行过程且能用来共享资源的基本单位,这个基本单位被称为进程。
可以这样定义进程:并发执行的程序在执行过程中分配和管理资源的基本单位。
进程和程序是两个既有联系又有区别的概念,它们的区别和联系可简述如下:(1)进程是一个动态的概念,而程序是一个静态概念。
程序时指令的有序集合,没有任何执行的含义。
而进程则强调执行过程,它动态地被创建,并被调度执行后消亡;(2)进程具有并发特征,而程序没有。
(3)进程是竞争计算机系统资源的基本单位,从而其并发性受到系统自己的制约。
(4)不同的进程可以包含同一程序,只要该程序所对应的数据集不同。
进程与程序的区别和相互关系:(1)动态性和静态性。
(2)从结构上看每个进程的实体都是由程序段和相应的数据段两部分构成的,这一特征与程序的含义相近。
(3)一个进程可以涉及到一个或几个程序的执行;反之一程序可以对应多个进程,即同一程序段可在不同数据集合上运行,可构成不同的进程。
(4)并发性。
(5)进程具有创建其他进程的功能。
(6)操作系统中的每一个程序都是在一个进程现场中运行的。
3.2进程的描述一个进程是一个程序对某个数据集描述,是分配资源的基本单位。
进程的静态描述由三个部分组成:进程控制块PCB、有关程序段、该程序段对其进行操作的数据结构集;PCB包含一个进程的描述信息、控制信息及资源信息;进程的程序部分描述进程所要完成的功能;数据结构集是程序在执行时必不可少的工作区和操作对象;进程控制块的作用:进程控制块是进程存在的标志,当系统或父进程创建一个进程时,实际上就是为其建立一个进程控制块。
进程控制块既能标识进程的存在,又能刻画出进程的动态特征,它是一个进程仅有的被系统真正感知的部分。
对操作系统而言,所有进程控制块将构成并发执行控制和维护系统工作的依据。
3.3进程状态及其转换3.3.1进程状态在进程的生命周期内,一个进程至少具有5中基本状态,它们是:初始态、执行状态、等待状态、就绪状态、终止状态;(1)运行状态:进程正在处理机上运行的状态,该进程已获得必要的资源,也获得了处理机,用户程序正在处理机上运行。
(2)阻塞状态:进程等待某种事件完成(例如,等待输入/输出操作的完成)而暂时不能运行的状态,处于该状态的进程不能参加竞争处理机,此时,即使分配给它处理机,它也不能运行。
(3)就绪状态:该进程运行所需的一切条件都得到满足,但因处理机资源个数少于进程个数,所以该进程不能运行,而必须等待分配处理机资源,一旦获得处理机就立即投入运行。
在单CPU系统中,任一时刻处于执行状态的进程只能有一个。
只有处于就绪状态的进程经调度选中之后才可以进入执行状态;状态变化:(1)就绪状态变化到运行状态。
(2)运行状态变化到就绪状态。
(3)运行状态变化到阻塞状态。
(4)阻塞状态变化到就绪状态。
3.4进程控制进程控制:就是系统使用一些具有特定功能的程序段来创建、撤销进程以及完成进程各个状态的转换,从而达到多进程高效率并发执行和协调、实现资源共享的目的;原语:把系统状态下执行的某些具有特定功能的程序段称为原语;原语分为两类:一类是机器指令级的,其特点是执行期间不允许中断,它是一个不可分割的单位;另一类是功能级的,其特点是作为原语的程序段不允许并发执行;通常把进程控制用程序做成原语:用于进程控制的原语有:创建原语、撤销原语、阻塞原语、唤醒原语;3.7进程通信3.7.1 临界资源和临界区把不允许多个并发进程交叉执行的一段程序称为临界部分或临界区临界区是由属于不同并发进程的程序段共享公用数据或共用变量而引起的。
因此,临界区也可以被称为访问公用数据(临界资源)的那段程序。
3.7.2 进程的通信方式之一——同步与互斥互斥:一组并发进程中的一个或多个程序段,因共享某一公有资源而导致他们必须以一个不允许交叉的单位执行,也就是说,不允许两个以上的共享资源的并发进程同时进入临界区称为互斥;一组并发进程互斥执行时必须满足如下四条准则:(1)不能假设各并发进程的相对执行速度;(2)并发进程中的某个进程不在临界区是,它不阻止其他进程进入临界区;(3)并发进程中的若干个进程申请进入临界区时,只能允许一个进程进入;(4)并发进程中的某个进程申请进入临界区时开始,应在有限时间内得以进入临界区;一、互斥的加锁实现对临界区加锁以实现互斥,当某个进程进入临界区之后,它将锁上临界区,直到它退出临界区为止;二、信号量和P、V原语1,信号量管理相应临界区的公有资源,它代表可用资源实体;在操作系统中,信号量sem是一整数,在sem大于等于零时代表可供并发进程使用的资源实体数,但sem小于零时表示正在等待使用临界区的进程数;2,P、V原语p原语的主要动作:(1)sem减1;(2)若sem减1后仍大于或等于零,则P原语返回,该进程继续执行;(3)若sem减1后小于零,则该进程被阻塞后加入到与该信号相应的队列中,然后转进程调度;v原语的主要动作:(1)sem加1;(2)若相加结果大于零(表示没有等待调用的进程),v原语停止执行,该进程返回调用处,继续执行;(3)若相加结果小于或等于零,则从信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度;注意:P,V操作都必须以原语实现,且在P,V原语执行期间不允许中断发生;例题解析:问:使用p,v原语和加锁法都可以实现并发进程的互斥(1)p,v原语和加锁法实现互斥有何异同?加锁法实现互斥是这样的:当某个进程进入临界区之后,它将锁上临界区,直到它退出临界区为止。
并发进程在申请进入临界区时,首先测试该临界区是否是上锁的,如果该临界区已经被锁住,则该进程要等待该临界区开锁之后才有可能获得临界区。
而p,v原语实现互斥是这样的:为临界资源设置一初值为1的信号量,该信号量只能由p,v 原语操作改变。
并发进程在申请进入临界区时,首先执行p操作,如果临界区已经被占用,则进程阻塞等待被一个v操作唤醒;否则允许进入进入临界区。
在退出临界区时,则执行v操作,若有其他进程等待使用该临界资源,则唤醒队首的进程;加锁操作与p,v原语实现互斥的不同主要有:1)加锁操作咋临界资源已经被占用的情况下,仍要循环测试锁的状态,这将耗费大量的CPU时间2)加锁操作部将等待临界资源的进程按申请次序排队,故有可能造成不公平的现象;(2)使用加锁法实现互斥时,有可能在进程使用临界区时造成不公平现象(即是某个进程一直占有临界区,其他进程永远无法使用)是找出一个不公平现象的例子,并分析产生不公平现象的原语;例子如下:如果有P1进程已通过加锁操作进入临界区内执行,则当p2进程申请进入对应的临界区时,将因临界区已上锁而处于忙等状态,即p2并不会阻塞排队。
当p1退出临界区时,它只需将临界区解锁,并不像v操作那样按次序唤醒等待进程;而且系统也不一定要立即进程调度;如果p1进程继续运行并再次申请进入临界区,则因临界区已解锁,它又可顺利进入临界区。
这将是p1进程一直占用临界区,而p2进程则长期等待,从而造成不公平的现象;习题:设有n个进程共享一个资源,对于如下两种:(1)如果每次只允许一个进程使用该资源;(2)如果每次允许m个进程(m<n)同时使用该资源;解析:两种情况下所采用的互斥信号量的初值不同,在前一种情况下,信号量的初值应设置为1,互斥信号量的实现与资源的使用有关,这种情况是一次只能一个进程使用该临界资源;此时信号量的变化范围是:[1-n,1];后一种情况是,信号量的初值应设置为m,而信号量的变化范围为【m—n,m】感悟:因此进程间的互斥关键在于公有信号量的设计上,这与进程同步不一样,在进程同步中是进程间的协作关系,这时我们考虑的是各个私有进程间的通信问题,此时设置的信号量是私有的;因此在对并发程序的设计时,对于公有变量(即是公有数据)一定要加锁实现,以期实现进程的互斥操作进程同步:异步环境下的一组并发进程,因直接制约而相互发送消息而进行互相合作,互相等待,使得各进程按一定的速度执行的过程称为进程间的同步;具有同步关系的一组并发进程称为合作进程,合作进程间互相发送的信号称为消息或事件;描述进程同步的实现方法:wait(消息名)表示进程等待合作进程发来的消息signal(消息名)表示向合作进程发送消息;例题:试从物理观念上来说明记录性信号量wait与signal操作?从物理观念上来看,一个记录型信号量S可以用来表示一类临界资源的使用情况,S.value的初值表示系统中该类资源的总数;在使用过程中,若S.value>0,则表示系统中还有S.value个该类资源处于空闲状态。
对它每次wait操作,意味着进程请求一个单位的该类资源,因此描述为S.value--;当S.value<0表示资源已经分配完毕,因此进程应将自己插入S.L队列中,并调用block 原语将自己阻塞,此时S.value的绝对值表示因申请该种资源而被阻塞的进程的个数。
对信号量的每次signal操作,表示执行进程释放一个单位的资源,因此要执行S.value++操作将资源数目加一;若果加1后仍是S.value<=0,则表示仍有等待资源的进程处于阻塞状态,故应调用wakeup 原语唤醒S.L队列中的一个进程;私用信号量一般来说,也可以把各进程之间发送的消息作为信号量看待。
这里的信号量只与制约进程及被制约进程有关而不是与整组并发进程有关;因此,称该信号量为私有信号量。