Ctrl c +Ctrl v的底层原理引言:
复制粘贴快捷键,在工作和学习中非常常见,但他为什么可以实现呢?底层原理又是什么?今天我们来揭晓答案。想要了解简单的复制粘贴的原理,就要先来学习进程之间的通信。
为什么要说进程之间的通信呢,假如我现在打开了一个记事本,又打开了一个word文档,然后我要将记事本里面的内容复制,然后粘贴到word中。我们抽象认为记事本是一个任务,一个进程,然后word文档也是一个任务,一个进程,现在它们之间就是在进行通信,所以我们就来了解进程通信,然后最后你就会理解复制粘贴的大概原理了。
—————————————————————————————————————————
1. 进程通信的类型1.1 低级通信和高级通信
高级通信的特征:
通信链路(communication link):
点对点/多点/广播 单向/双向 有容量(链路带缓冲区)/无容量(发送方和接收方需自备缓冲区)
数据格式:
字节流(byte stream):各次发送之间的分界,在接收时不被保留,没有格式; 报文(datagram/message):各次发送之间的分界,在接收时被保留,通常有格式(如表示类型),定长/不定长报文,可靠报文/不可靠报文。
收发操作的同步方式:
发送阻塞(直到被链路容量或接收方所接受)和不阻塞(失败时立即返回) 接收阻塞(直到有数据可读)和不阻塞(无数据时立即返回) 由事件驱动收发:在允许发送或有数据可读时,才做发送和接收操作
区分:
1.2 直接通信和间接通信2.共享存储区
相当于内存,可以任意读写和使用任意数据结构(当然,对指针要注意),需要进程互斥和同步的辅助来确保数据一致性,不要求数据的移动。具体请看下图:
3. 管道
管道通信方式 Pipewhatsapp网页版,也称共享文件方式(直接通信),基于文件系统,利用一个打开的共享文件连接两个相互通信的进程,文件作为缓冲传输介质。请看下图:
4.消息
与窗口系统中的“消息”不同。通常是不定长数据块。消息的发送不需要接收方准备好,随时可发送
消息缓冲:在内存中开设缓冲区whatsapp网页版,发送进程将消息送入缓冲区,接收进程接收传递来的缓冲区
消息队列:
看到这里,有没有觉得复制粘贴就是上图的过程;
5.套接字
双向的,数据格式为字节流(一对一)或报文(多对一,一对多);主要用于网络通信; 支持client-server模式和peer-to-peer模式,本机或网络中的两个或多个进程进行交互。提供TCP/IP协议支持 UNIX套接字(基于TCP/IP):send, sendto, recv, recvfrom; 在Windows NT中的规范称为"Winsock"(与协议独立,或支持多种协议):WSASend, WSASendto, WSARecv, WSARecvfrom;
—————————————————————————————————————————
上图是主机之间的通信原理图,如果使主机与主机之间的通信,需要使用套接字来实现。
6.揭晓原理
复制粘贴操作涉及到进程之间的通信,通过消息队列实现通信过程whatsapp网页版,是间接通信(在Windows中如果复制之后没有执行粘贴操作,会一直存在,就相当于放在了存储空间中,当关机的时候才会自动清除)。