管道与命名管道:原理、应用与性能优化
1. 命名管道与网络文件系统
命名管道(FIFOs)是一种可在单主机上使用的进程间通信(IPC)形式。尽管它们在文件系统中有名称,但只能在本地文件系统中使用,而不能在网络文件系统(NFS)挂载的文件系统中使用。例如,在Solaris系统上执行以下命令会产生I/O错误:
solaris % mkfifo /nfs/bsdi/usr/rstevens/fifo.temp
mkfifo: 1/0 error
在这个例子中, /nfs/bsdi/usr 是主机 bsdi 上的 /usr 文件系统。
不过,某些系统(如BSD/OS)允许在NFS挂载的文件系统上创建命名管道,但数据无法通过这些命名管道在两个系统之间传递。在这种情况下,命名管道仅作为同一主机上客户端和服务器在文件系统中的会合点。即使两个进程都能通过NFS打开一个对双方主机都可访问的命名管道,一个主机上的进程也不能通过该命名管道向另一个主机上的进程发送数据。
2. 迭代服务器与并发服务器
2.1 迭代服务器
上一节简单示例中的服务器是迭代服务器,它按顺序处理客户端请求,在处理下一个客户端请求之前,会完全处理完当前客户端的请求。例如,如果两个客户端几乎同时向服务器发送请求,第一个请求是一个10兆字节的文件,假设发送该文件需要10秒,第二个请求是一个10字节的文件,那么第二个客户端必须至少等待10秒,直到第一个客户端的请求处理完毕。
超级会员免费看
订阅专栏 解锁全文
702

被折叠的 条评论
为什么被折叠?



