如果计算机程序知道彼此的存在会怎样?

如果计算机程序知道彼此的存在会怎样?

在现代计算机中,虚拟内存提供了一个抽象层,程序认为它与处理器本身一起工作。我知道在现代软件开发条件下这是不可能的,但如果程序知道彼此的存在会怎样?它们不是唯一与处理器一起工作的程序?这是否能让它们更轻松地进行通信并加快速度?

答案1

存在于同一虚拟地址空间中且可以相互访问数据的进程有一个名称 -线程。当然,线程不具备进程的安全性优势,但在需要在同一空间中同时(或尽可能同时)运行同一代码的多个部分时,线程会被一直使用。

当多个活动执行代码流可能在给定时间修改数据时,必须小心确保每个代码流不会在错误的时间意外覆盖数据,并使用同步概念/原语,例如临界区、锁、互斥锁、信号量等。

进程间通信(IPC)也是一个东西。

一种可能的方法是使用操作系统的 TCP/IP 堆栈并在本地主机 IP 地址上实现客户端/服务器机制。

还可以提供独立的 IPC 服务;例如 D-Bus、特殊代理或消息路由服务,或类似 Win32 CSRSS 的操作系统设施(搜索“Win32 消息泵”以了解其详细工作原理)。

还有操作系统设施,如命名管道、本地 Unix 套接字、FIFO 等。

相关内容