|
|
进程是一个程序在一个数据集合上的一次执行,是操作系统中可以并行工作的基本单位,也是核心调度及资源分配的最小单位。它由程序、数据、进程控制块(PCB)组成。进程与程序的重要区别之一是:进程是有状态的;而程序没有,程序是静态的。
|
|
|
进程的基本特征有动态性、并发性、独立性、异步性、结构性。
|
|
|
传统上,每个进程在任何时刻总是处于3种基本状态(即运行、就绪、阻塞)的某一种基本状态。在不少系统中,还增加了两种基本状态,即新建态、终止态。状态之间的转换如下图所示。
|
|
|
|
|
|
在SMP系统中,操作系统还提供了线程机制。线程是比进程更小的能独立运行的基本单位,它是处理器分配的最小单位。
|
|
|
进程是资源分配的基本单位,而线程与资源分配无关,它属于某一个进程,并与进程内的其他线程一起共享进程的资源。线程也有就绪、阻塞和运行3种基本状态。
|
|
|
|
|
(1)进程间的同步。一个进程相对于另一个进程的运行速度是不确定的,也就是说,进程是在异步环境下运行的。每个进程都以各自独立的、不可预知的速度向前推进。但相互合作的进程需要在某些确定点上协调它们的工作,当一个进程到达了这些点后,除非另一进程已经完成了某些操作;否则就不得不停下来等待这些操作结束。
|
|
|
(2)进程间的互斥。在多道程序系统中,各进程可以共享各类资源,但有些资源一次只能供一个进程使用,称为临界资源(Critical Resource, CR),如打印机、公共变量和表格等。同步是进程间的直接制约问题,互斥是进程间的间接制约问题。
|
|
|
|
信号量是一种解决进程同步与互斥的工具。主要有整型信号量、记录型信号量、信号量集机制。最常用的信号量是整型变量。
|
|
|
信号量可分为两类:一类是公用信号量,用于实现进程间的互斥,初值等于1或资源的数目;另一类是私用信号量,用于实现进程间的同步,初值等于0或某个正整数。信号量S的物理意义是:当S≥0时,表示某资源的可用数;当S<0时,其绝对值表示阻塞队列中等待该资源的进程数。
|
|
|
|
PV操作是实现进程同步与互斥的常用方法。PV操作是低级通信原语,在执行期间不可分割。其中,P操作表示申请一个资源,V操作表示释放一个资源。
|
|
|
P操作定义:S:=S-1,若S≥0,则执行P操作的进程继续执行;否则,若S<0,则置该进程为阻塞状态(因为无可用资源),并将其插入阻塞队列。
|
|
|
V操作定义:S:=S+1,若S>0,则执行V操作的进程继续执行;否则,若S≤0,则从阻塞状态唤醒一个进程,并将其插入就绪队列,执行V操作的进程继续执行。
|
|
|
利用PV操作实现进程互斥的方法为:令信号量mutex的初值为1,当进程进入临界区时执行P操作,退出临界区时执行V操作。
|
|
|
利用PV操作实现进程同步的方法为:用一个信号量与消息联系起来。当信号量的值为"0"时表示希望的消息未产生,当信号量的值为非"0"时表示希望的消息已经存在。假定用信号量S表示某条消息,进程可以通过调用P操作测试消息是否到达,调用V操作通知消息已准备好。最典型的就是单缓冲区的生产者和消费者的同步问题。
|
|
|
|
|
(1)先来先服务调度算法:按进程进入就绪队列的先后次序选择可以占用处理器的进程。
|
|
|
(2)优先数调度算法:对每个进程确定一个优先数,进程调度总是让具有最高优先数的进程先使用处理器。如果进程具有相同的优先数,则对这些有相同优先数的进程再按先来先服务的次序分配处理器。
|
|
|
(3)时间片轮转调度算法:把规定进程一次使用处理器的最长时间称为"时间片"。让就绪进程按就绪的先后次序排成队列,每次总是选择就绪队列中的第一个进程占用处理器,但规定只能使用一个"时间片"。如果一个时间片用完,进程工作尚未结束,则它也必须让出处理器给其他进程使用,自己被重新排到就绪队列的末尾,等待再次运行。时间片轮转调度算法经常用在分时操作系统中。
|
|
|
(4)分级调度算法:由系统设置多个就绪队列,每个就绪队列中的进程按时间片轮转调度算法占用处理器。
|
|
|
|
|
若系统中存在一组进程,它们中的每个进程都占用了某种资源,而又都在等待其中另一个进程所占用的资源,这种等待永远不能结束,则说明系统出现了死锁。只要下面4个条件中有1个不具备,系统就不会出现死锁。
|
|
|
(1)互斥条件:某个资源在一段时间内只能由一个进程占有,不能同时被两个或两个以上的进程占有。
|
|
|
(2)不可抢占条件:进程所获得的资源在未使用完毕之前,资源申请者不能强行地从资源占有者手中夺取资源,而只能由该资源的占有者进程自行释放。
|
|
|
(3)占有且申请条件:进程至少已经占有一个资源,但又申请新的资源;由于该资源已被另外进程占有,此时该进程阻塞;但是,它在等待新资源时,仍继续占用已占有的资源。(注:也称为保持与等待条件)
|
|
|
(4)循环等待条件:存在一组进程等待序列{P1,P2,…,Pn},其中P1等待P2所占有的某一资源,P2等待P3所占有的某一资源,……,而Pn等待P1所占有的某一资源,形成一个进程循环等待环。
|
|
|
|
|
|
|
|