关于进程及线程的基本含义及特性

1,“进程”:process是操作系统中的基本执行单位。在多道程序设计的系统中往往同时有许多进程存在,它们要轮流占用处理器。这些交叉执行的并发进程相互之间可能是无关,也可能是相关的。当并发进程竞争共享资源时会出现与时间有关的错误,因此,应采用进程同步与互斥手段使其合理使用共享资源,以保证系统安全。 2,线程Thread:线程是进程中可独立执行的子任务。一个进程中可以有一个或者多个线程,每个线程都有一个唯一的标识符。 3,进程的顺序性:任何进程在顺序的处理器上的执行是严格按照顺序进行的,这就是进程的顺序性。当一个进程独占处理器顺序执行时,具有两个特性:封闭性、可再现性。 4,进程的同时执行:在多道程序设计系统中,一个进程的工作没有全部完成之前,另一个进程就可以开始工作,它们的执行在时间上重迭的,我们把它们称为是“可同时执行的” 5,进程的并发性:若系统中存在一组可同时执行的进程,则说该组进程具有并发性,并把可同时执行的进程称为“并发进程”。 6,并发进程间的关系:并发进程相互之间可能是无关的,也可能是交往的。如果一个进程的执行不影响其他进程的执行,且与其他进程的进展情况无关,即它们是各自独立的,则这些并发进程相互之间是无关的。如果一个进程的执行依赖其他进程的执行,则这些并发进程之间是有交往的。 7,并发进程的执行速度取决于自身和进程调度策略。一个进程进行时会被中断,且断点是不固定的,一个进程被中断之后,那个进程可以运行,被中断的进程什么时候占用处理器,是与进程调度策略有关的。因此进程的执行速度不能由自己决定。 8,并发进程交替使用共享资源时会出现与时间有关的错误。由于共享资源的原因,加上进程并发执行的随机性,一个进程对另一个进程的影响是不可预测的。造成不正确的因素与进程占用处理器的时间、执行的速度以及外界的影响有关。因为被称为与时间有关的错误。 9,临界区(critical section)的定义:并发进程中与共享变量有关的程序段称为“临界区”。临界区是一段独占对某些共享资源访问的代码,在任意时刻只允许一个线程对共享资源进行访问。如果有多个线程试图同时访问临界区,那么在有一个线程进入后其他所有试图访问此临界区的线程将被挂起,并一直持续到进入临界区的线程离开。临界区在被释放之后,其他线程可以继续抢占,并以此达到用原子方式操作共享资源的目的。 临界区在使用时以critical_section结构对象保护共享资源,并分别用EnterCriticalSection()和LeaveCriticalSection()函数去标识和释放一个临界区。所用到的critical_section结构对象必须经过InitializeCriticalSection()的初始化之后才能使用,而且必须确保所有线程中的任何试图访问此共享资源的代码都处在此临界区的保护之下,否则临界区将不会起到应有的作用,共享资源依然有被破坏的可能。 临界区是一项共享数据访问保护的技术。它其实也是相当于一个全局的布尔变量。但对它的操作有所不同。它只有两个操作,Enter和Leave。同样可以把它的两个状态当作True和False,分别表示现在是否处于临界区中。这两个操作也是原语,所有它 可以用于在多线程应用中保护共享数据,防止访问冲突。 用临界区保护共享数据的方法很简单:在每次要访问共享数据之前调用Enter设置进入临界区标志,然后再操作数据,最后调用Leave离开临界区。它的保护原理是这样的,当一个线程进入临界区之后,如果此时另一个线程也要访问这个数据,则它会在调用Enter时,发现已经有线程进入临界区,然后此线程将会被挂起,等待当前在临界区的线程调用Leave离开临界区。当另一个线程完成操作,调用Leave离开之后,此线程将会被唤醒,并设置临界区标志,开始操作数据,这样就防止了访问冲突。 10,进程的互斥:进程的互斥是指当有若干进程都要使用某一共享资源时,任何时刻最多只允许一个进程去使用,其他要使用该资源的进程必须等待,直到占用资源者释放了该资源。 11,实现进程互斥的工具:PV操作

PV操作是由两个操作,即P操作和V操作组成。P操作和V操作是两个在信号量上进行操作的过程。假设用S表示信号量则把这两个过程记作P(S)和V(S),它们的定义如下:

Procedure P(Var S: Semaphore);

 begin S: = S-1;

 if S<0 then W(S) //wait

 end; {P}

Procedure V(Var S: Semaphore);

 begin S:=S+1;

 if S<=0 then R(S) //release

end; {V}

为了确保PV操作自身的正确执行,因此P(S)和V(S)操作中不可中断,这种不可中断的过程称为“原语”。

用PV操作管理相关临界区的一般形式

1)一个信号量与一组涉及共享变量的相关临界区联系起来,信号量的初值设定为“1”

2)任何一个进程要进入临界区之前先调用P操作,执行临界区的操作后,退出临界区时调用V操作。

3)由于信号量的初值为“1”,P操作起到了限制一次只有一个进程进入临界区的作用,其余进程欲进入临界区必须符合对临界区管理的第一个要求,即一次最多让一个进程在临界区执行。进程退出之后执行V操作,若有进程在等待则释放一个进程,这样就达到了对临界区管理的第二个和第三个要求(既不能无限逗留也不能无限等待)

注意两点:1)PV操作中间只执行相关临界区内容,不能把临界区外的程序段放到PV操作中间,否则会降低系统并发执行能力或引起系统瘫痪。2)另外当有条件语句时要注意在临界区内每个条件分支出口均要调用V操作,否则会违反对临界区管理的第二个和第三个要求。

12,进程的同步:进程的同步是指并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消息,当一个进程没有得到另一个进程的消息时应等待,直到消息到达才被唤醒。

如何使用PV操作实现进程同步。

1)用一个信号量与一个消息联系起来,当信号量的值等于0时表示期望的消息尚未产生,当信号量的值等于非0时表示期望的消息已经存在。

2)在用PV操作实现同步时,一个信号量与一个消息量联系在一起。当有多个消息时必须定义多个信号量:测试不同的消息是否到达或者发送不同消息时,应对不同的信号调用P操作或者V操作。

13,如何使用PV操作实现进程的同步与互斥:进程的同步与进程的互斥都涉及到并发进程访问共享资源的问题。可以看到进程的互斥实际上是进程同步的一种特殊情况。若干进程互斥使用资源时,一个等待使用资源的进程在得到占用资源的进程发出“归还资源”的消息(调用了V操作)之后,它就可去使用资源。因此互斥使用资源的进程之间实际上也存在一个进程依赖另一个进程发出消息的制约关系。所以,也把进程的互斥与进程的同步称为进程的同步。

利用PV操作实现进程互斥时:用一个信号量与一组相关临界区对应,这些进程在同一个信号量上调用P操作和V操作来实现互斥。

利用PV操作实现进程同步是:每一个消息与一个信号量对应,进程在不同信号量上调用P操作以测试自己需要的消息是否到达,在不同信号量上调用V操作把不同的消息发送出去。

信号量S的不同含义:

S>0时表示可使用的资源数或表示可使用资源的进程数

S=0时表示无资源可供使用或不允许进程进入临界区

S<0时表示等待使用资源的进程数或表示等待进入临界区的进程数

                    ----------------以上引自:http://liveforlove.blog.sohu.com/31055434.html

 

 

 

              ---------------------以上引自:http://hi.baidu.com/majianbo2514/blog/item/3680cf2dd67bc1e9e7cd404a.html

相关文章:

  • 2021-06-30
  • 2021-11-08
  • 2021-09-23
  • 2021-12-31
  • 2021-10-14
  • 2021-11-03
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-05-03
  • 2022-12-23
  • 2022-01-15
  • 2021-05-30
  • 2022-02-09
  • 2021-07-20
相关资源
相似解决方案