操作系統-進程管理3(進程通信)
操作系统-进程管理3(进程通信) 进程通信 进程间的通信分为控制信息的传送和大量信息的传送两种,控制信息的传送称为 低级通信 ,大批量数据的传送称为 高级通信 。 高级通信分为 共享存储系统、消息传递系统和管道通信系统 。 共享存储系器系统 共享存储器系统类型:在共享存储系统中,相互通信的进程共享某些 数据结构 或 共享存储区 ,进程之间能通过这些空间进行通信。 共享数据结构的通信:在这种方式中,要使各进程间共享某些数据结构以实现进程间的信息交换。如生产者-消费者问题中,生产进程和消费进程共享了empty和full的信号量,使得彼此知道能否放置或拿走产品。这种方式只适用于传递少量的数据。 共享存储区的通信:为了实现高级通信,在存储区划出一块共享存储区,各进程可通过对共享存储区的读或写来实现通信。进程在通信前,先向系统申请获得共享存储区的一块分区,并指定该分区的一个关键字;若系统已经给其他进程分配了这样的分区(如本进程是读进程,但是已经有同类的读进程在读这块数据),则将该分区的描述符返回给申请者,由申请者去连接共享存储区。 Linux共享存储区通信的实现 1).共享存储区的建立:当进程要利用共享存储区与另一个进程进行通信时,必须先让系统调用shmget()建立一块共享存储区。 2).共享存储区的操纵:系统可以调用shmctl()对共享存储区的状态信息进行查询,如长度、所连接的进程数