第二十三章 进程间通信介绍(一)

2018-05-14  本文已影响0人  羽汐66

本章目标:

    进程同步与进程互斥

    进程间通信目的

    进程间通信发展

    进程间通信分类

    进程间共享信息的三种方式

    IPC对象的持续性


1 进程同步与进程互斥

1.1顺序程序与并发程序的特征

1.1.1顺序程序特征

    顺序性

        后一个指令在前一个指令的基础上才能执行

    封闭性:(运行环境的封闭性)

         同样寄存器,系统堆栈,进程上下文不受其他程序影响    

    确定性

        输入一定,输出一定,不受所运行得机器上

    可再现性

         相同的输入,相同的输出

1.1.2并发程序特征

    共享性

    并发性

    随机性


1.2 进程互斥

    互斥资源(临界资源)

        只允许一个进程使用的资源(排他性)

    进程的互斥

        各进程间竞争使用需要互斥使用的资源,进程的这种关系为进程的互斥

    临界区

        在进程涉及到互斥资源的程序段叫临界区

    互斥示例:售票——票

1.3 进程同步

        多个进程需要相互配合共同完成一项任务

        (两个进程的协作)

    同步与互斥---可以通过信号量实现


2 进程间通信目的

    数据传输

        一个进程需要将它的数据发送给另一个进程

    资源共享

        多个进程之间共享同样的资源

    通知事件

        一个进程需要向另一个或一组进程发送信息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)

    进程控制

        有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变

    进程控制也可以通过信号的方式(SIGTRAP)来实现


3 进程间通信发展

    管道

          两个进程间通信

          匿名管道:父子进程或有亲缘关系的进程间通信  

          有名管道:允许无亲缘关系的进程间通信

    System V进程间通信

        使用广泛,Unix  , linux等

    POSIX进程间通信


4 进程间通信分类

    文件

        两进程A、B数据传输,A数据存在文件中,B从文件中读数据

    文件锁

           互斥与同步---读写锁,读操作-共享,写操作--互斥锁

    管道(pipe)和有名管道(FIFO)

        进程间传输数据

    信号(signal)

            SIGTRAP 一个进程完全控制另一个进程的执行

    消息队列

            进程间传输数据

    共享内存

            进程间共享数据

    信号量

            进程间对数据的同步访问或互斥访问

    互斥量

    条件变量

    读写锁

    套接字(socket)

注:

    System V IPC :System V 消息队列、System V 共享内存、 System V 信号量

    POSIX IPC: 消息队列、共享内存、  信号量\互斥量、条件变量、 读写锁


5 进程间共享信息的三种方式    

     1、共享一个文件系统    

    2、共享内核中的信息    

    3、共享同一块共享内存区(传递数据效率高,不涉及对内核的访问)


6 IPC对象的持续性

    随进程持续

        一直存在直到打开最后一个进程(pipe和FIFO)

    随内核持续

        一直存在直到内核自举或显示删除(如System V 消息队列、共享内存、信号量) 

        ps:  内核自举:机器重启

  随文件系统持续

           一直存在直到显示删除,即是内核自举还存在。(POSIX消息队列、共享内存、信号量如果是使用映射文件来实现

上一篇 下一篇

猜你喜欢

热点阅读