Windows下复制粘贴的进程间通信模型——共享内存
最近在学习操作系统时遇到的一道思考题:Windows下复制粘贴操作属于哪种进程间通信方式?出于直觉,那必然是共享内存的方式,但是苦于没有直接的证据,一通搜索之后没有答案?最后还是在StackOverflow上找到了答案,最后还是在StackOverflow上有所收获。
附上讨论的链接https://stackoverflow.com/questions/52887507/how-is-copy-paste-possible/53177697#53177697
但是苦于没有搜索到中文的有关文档,在此记录一下
关于进程通信的内容这里就不多加叙述了,相关的博客很多
复制粘贴(copy-paste)——进程间通信IPC
大名鼎鼎的Ctrl-C,Ctrl-V操作显然是属于进程间通信(inter-process communication)的,思考以下场景:
你在浏览器上翻译了你需要的英文单词,需要把中文拷贝至Word当中
显然浏览器和Word是运行在你的主机上的两个进程,文本复制也就是进程间通信咯。
复制粘贴(copy-paste)——基于共享内存的IPC
Windows下的复制粘贴采用Clipboard实现,属于共享内存的通信方式
具体可以参考https://docs.microsoft.com/en-us/windows/win32/dataxchg/clipboard(微软官方的文档,瞬间就觉得靠谱了)
在https://docs.microsoft.com/en-us/windows/win32/dataxchg/clipboard-operations中描述了Copy和Paste操作的实现方法
- Copy Operations设置Clipboard的内容并并指定全局共享内存中的句柄。
- 而Paste Operation是获取了全局共享内存中的数据对象
总结
官方文档属实靠谱🐶