管道/共享内存
pipe 系统调用
- 参数是一个长度为2的int数组
先pipe再fork
管道的例子 (无名管道)
有名管道
mkfifo 创建有名管道
unlink 删除管道文件
rename 修改文件名字
link 创建新的硬链接
共享内存
- 让不同进程虚拟内存页对应同一物理内存的页框
库文件经常使用共享内存
System V版本的共享内存机制
- ipcs 查看所有共享内存
- ipcrm -M 删除共享内存
- IPC_PRIVATE,创建私有共享内存,进程之间必须存在亲缘关系
例子:
创建共享内存时,会把4096的内存全部置为0
竞争条件
共享内存 control
设置和修改共享内存属性
- 修改前必须先获取状态
删除共享内存
内存机制的实现
虚拟内存和物理内存的转换
局部性原理
- 减少页表的大小
页表每个进程各有一个
练习:共享内存各加10000000
软件上互斥
练习:通过管道实现文件远程拷贝,管道一端读文件,另一端写文件