关闭

第三章 进程的同步与通信

695人阅读 评论(0) 收藏 举报

第三章 进程的同步与通信

3.1   进程同步的概念

3.2   信号量机制

3.3   经典进程同步问题

3.4   管程机制

3.5   进程通信

 3.1     进程同步的概念

进程之间的关系:

资源共享关系:

相互合作关系:

1.  临界资源

临界资源的定义:

2.  临界区:

⑴临界区的定义

⑵临界区进入和退出的方法:

⑶同步机制应该遵循的准则:

  空闲让进、忙则等待、有限等待、让权等待

3.  利用软件方法解决进程互斥问题

4.  利用硬件方法解决进程互斥问题

⑴利用Test-and-Set指令实现互斥

   TS指令:

   TS(lock)

   Int   *lock;

   { int t;

    t=*lock;

    *lock=1;

    return(t);

   }

   入口:while(TS(&lock));

   出口:lock=0;

⑵利用Swap指令实现互斥

  Swap指令:

  Swap(a,b)

   Int  *a,*b;

  {

int  t;

t=*a;

a=b;

*b=t;

      }

      入口:key=1;

            do

            {swap(&lock,&key);

              }while(key==0);

           }

      出口:lock=0;

 

3.2     信号量机制

1.  整型信号量机制:

⑴整形信号量:

⑵利用信号量互斥:

⑶利用信号量描述前驱关系:

2.  记录型信号量机制:

3.  信号量集机制:

⑴AND信号量集机制:

⑵一般信号量集机制:
 

3.3     经典进程同步问题

1.        生产者消费者问题。

2.        读者写者问题。

3.        哲学家进餐问题。
 

3.4     管程机制

1.管程的引入:

2.管程的基本概念:

  ⑴管程的定义:

  ⑵条件变量

3.利用管程解决生产者----消费者问题

4.  利用管程解决哲学家进餐问题

5.  利用管程解决读者写者问题:(孙钟秀)

 

3.5     进程通信

进程通信的定义:进程间的信息交换。

进程通信:

低级进程通信:少量的信息交换,没有专门的通信机制,如信号量机制

             缺点:效率低,通信对用户不透明

高级进程通信:大量的信息交换,有专门的通信机制

 

1.  进程的通信类型:

⑴共享存储器系统

①基于共享数据结构的通信方式:

②基于共享存储区的通信方式:

  ⑵消息传递系统:

   message为传递单位

    直接通信方式和间接通信方式(信箱方式)

  ⑶管道通信

2.  直接通信和间接通信方式

 ⑴直接通信方式:

 ⑵间接通信方式:

3.  消息传递系统的几个问题:

 ⑴通信链路

 ⑵消息的格式

 ⑶进程的同步方式

  ①发送进程阻塞,接收进程阻塞;

  ②发送进程不阻塞,接收进程阻塞;

  ③发送进程和接收进程均不阻塞;

4.消息缓冲队列机制

 ⑴消息缓冲队列机制中的数据结构:

 ⑵发送原语

 ⑶接收原语 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:428905次
    • 积分:4687
    • 等级:
    • 排名:第6217名
    • 原创:34篇
    • 转载:140篇
    • 译文:0篇
    • 评论:84条
    文章分类
    最新评论