操作系统 信号量

时间:2021-12-04 15:11:07

进程控制:就是系统使用一些具有特定功能的程序段来创建、撤销进程以及完成进程各个状态的转换,从而达到多进程高效率并发执行和协调、实现资源共享的目的;

原语把系统状态下执行的某些具有特定功能的程序段称(不能被打断的原子型的,运行快速的语句)

信号量     管理相应临界区的公有资源,它代表可用资源实体; (信号量赋初值后、不能读不能写,只能通过PV原语操作修改。

在操作系统中,信号量sem由它的整数部分标识,在sem大于等于零时代表可供并发进程使用的资源实体数但sem小于零时表示正在等待使用临界区的进程数

互斥和同步是进程的两大进程竞争关系。

多个线程或者进程在读写一个共享数据时结果依赖于它们执行的相对时间,这种情形叫做竞争。
 
竞争条件发生在当多个进程或者线程在读写数据时,其最终的的结果依赖于多个进程的指令执行顺序。

互斥:两个或两个以上的进程,不能同时进入关于同一组共享变量的临界区域,否则可能发生与时间有关的错误,这种现象被称作进程互斥

  一个进程正在访问临界资源,另一个要访问该资源的进程必须等待。

达到互斥关系的软件操作有两种:忙等待和睡眠与唤醒。

P原语的主要动作:

      P(Somaphore s) 睡眠等待                                           P(Somaphore s)  忙等待                         

      {  s = s-1;                                                                     {

        if(s < 0)//满足  则把进程阻塞                            while(!s<0 )

         {                                  yield the CPU;

           休息操作                            s--;

          }                             }

      }

S原语的主要动作:   

      S(Somaphore s)睡眠等待                 S(Somaphore s)忙等待       

      {  s = s-1;                         {   s++;  }

        if(s <= 0)//满足 则要做唤醒事情

         {

           进程唤醒

          }

      }

同步:异步环境下的一组并发进程因直接制约而互相发送消息、进行互相合作、互相等待,使得各进程按一定的速度执行的过程这种逻辑顺序称为进程间的同步

    具有同步关系的一组并发进程称为合作进程,合作进程间互相发送的信号称为消息或事件。

   如果我们对一个消息或事件赋以唯一的消息名,则我们可用过程wait (消息名)表示进程等待合作进程发来的消息,而用过程signal (消息名) 表示向合作进程发送消息。