一、什么是进程?
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,是操作系统结构的基础。进程实体由程序段、数据段以及进程控制块 (PCB) 组成。其中,PCB是进程存在的唯一标志! PCB中包含一些描述进程的信息:进程标识符(PID)和用户标识符(UID)。
二、进程 = 程序吗?
进程不等于程序。进程是进程实体的运行过程,是一个动态的概念。而程序是一组有序的指令集和,是一个静态的概念。同一个程序执行多次对应不同的进程!
三、实现进程间通信的方式有哪些?
实现进程间通信的方式主要有六种:共享内存机制、消息传递机制、管道通信机制、信号、信号量和pv以及socket。(暂时只讲解前三种,后续更新。。。)
1.共享内存机制
共享内存机制是允许两个或多个进程(不相关或有亲缘关系)访问同一逻辑内存的机制。它是共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。
2.消息传递机制
消息传递机制(Linux 中称消息队列),消息队列的本质就是存放在内存中的消息的链表,而消息本质上是用户自定义的数据结构。如果进程从消息队列中读取了某个消息,这个消息就会被从消息队列中删除。比如,A 进程要给 B 进程发送消息,A 进程把数据放在对应的消息队列后就可以正常返回了,B 进程在需要的时候自行去消息队列中读取数据就可以了。同样的,B 进程要给 A 进程发送消息也是如此。
3.管道通信机制
管道通信(Communication Pipeline)即发送进程以字符流形式将大量数据送入管道,接收进程可从管道接收数据,二者利用管道进行通信。 无论是SQL Server用户,还是PB用户,作为C/S结构开发环境,他们在网络通信的实现上,都有一种共同的方法——命名管道。由于当前操作系统的不惟一性,各个系统都有其独自的通信协议,导致了不同系统间通信的困难。尽管TCP/IP协议已发展成为Internet的标准,但仍不能保证C/S应用程序的顺利进行。命名管道作为一种通信方法,有其独特的优越性,这主要表现在它不完全依赖于某一种协议,而是适用于任何协议——只要能够实现通信。
单个管道只能实现半双工通信,两个管道即可实现全双工通信。