使用共享内存文件的方式进行进程间通信

使用共享内存文件的方式进行进程间通信

进程的定义

在传统的操作系统中,为了提高资源利用率和系统吞吐量,通常采用多道程序技术,将多个程序同时装入内存,并使之并发执行,传统意义上的程序不能再独立运行。

传统的进程的定义为:
(1),进程是程序的一次执行。
(2),进程是程序及其数据在处理机中顺序执行时所发生的活动。
(3),进程是具有独立功能的程序在一个数据集合中运行的过程,是系统进行资源分配和调度的一个独立单位。

进程的特征

(1),动态性
(2),并发性
(3),独立性
(4),异步性

进程间通信的方式

管道通信系统

所谓管道是指用于连续一个读进程和一个写进程以实现他们之间通信的一个共享文件,又名Pipe文件,向管道(共享文件提供输入的发生进程(即写程序)以字符流形式将大量的文件的数据送入管道;而接受管道输出的接受进程(即读进程)则从管道中接受数据) ,能够有效的大量传送数据,首创与Unix系统。

消息队列

共享内存

为了传输大量的数据,早在内存中划出了一块共享存储区域,诸进程可通过对该共享区域的读写或者交换信息,实现同喜,数据的形式及访问位置甚至访问控制都与由进程负责,而不是OS.这种通信方式属于高级通信

文件

共享内存文件

内存映射文件包含虚拟内存中文件的内容。借助文件和内存之间的 这种映射,应用可以对内存直接进行内存执行读写操作。

内存映射文件的类型

  • 持久化内存映射文件
  • 非持久化内存映射文件

命名空间

System.IO.MemoryMappedFiles;

示例

创建非持久化内存映射文件
CreateNew 和CreateOrOpen 方法创建未映射到磁盘上现有文件的内存映射文件
使用共享内存文件的方式进行进程间通信
读取非持久化内存映射文件
使用共享内存文件的方式进行进程间通信