你真的懂复制粘贴吗?

Ctrl c +Ctrl v的底层原理

引言:

复制粘贴快捷键,在工作和学习中非常常见,但他为什么可以实现呢?底层原理又是什么?今天我们来揭晓答案。想要了解简单的复制粘贴的原理,就要先来学习进程之间的通信

为什么要说进程之间的通信呢,假如我现在打开了一个记事本,又打开了一个word文档,然后我要将记事本里面的内容复制,然后粘贴到word中。我们抽象认为记事本是一个任务,一个进程,然后word文档也是一个任务,一个进程,现在它们之间就是在进行通信,所以我们就来了解 进程通信,然后最后你就会理解 复制粘贴的大概原理了。
—————————————————————————————————————————

1. 进程通信的类型

1.1 低级通信和高级通信

  • 低级通信:

  • 只能传递状态和整数值(控制信息),包括进程互斥和同步所采用的信号量和管程机制。

  • 优点:通信速度快

  • 缺点: 传送信息量小:效率低,每次通信传递的信息量固定,若传递较多信息则需要进行多次通信。

  • 高级通信:

  • 能够传送任意数量的数据,包括三类:共享存储区、管道、消息

高级通信的特征:
通信链路(communication link):
点对点/多点/广播 单向/双向 有容量(链路带缓冲区)/无容量(发送方和接收方需自备缓冲区)
数据格式:
字节流(byte stream):各次发送之间的分界,在接收时不被保留,没有格式; 报文(datagram/message):各次发送之间的分界,在接收时被保留,通常有格式(如表示类型),定长/不定长报文,可靠报文/不可靠报文。
收发操作的同步方式:
发送阻塞(直到被链路容量或接收方所接受)和不阻塞(失败时立即返回) 接收阻塞(直到有数据可读)和不阻塞(无数据时立即返回) 由事件驱动收发:在允许发送或有数据可读时,才做发送和接收操作

区分:

1.2 直接通信和间接通信

  • 直接通信:

  • 信息直接传递给接收方,如管道。 在发送时,指定接收方的地址或标识,也可以指定多个接收方或广播式地址; 在接收时,允许接收来自任意发送方的消息,并在读出消息的同时获取发送方的地址。

  • 间接通信:

  • 借助于收发双方进程之外的共享数据结构作为通信中转,如消息队列。通常收方和发方的数目可以是任意的

  • 区分:

  • 区分的标准就是在通信的时候双方的生命状态是否有要求,比如直接通信要求双方都要存在,比如打电话,只有两个人同时在线,才可以交流接通;而间接通信比如发邮件,发的时候接受的一方不一定要在线。

2.共享存储区

相当于内存,可以任意读写和使用任意数据结构(当然,对指针要注意),需要进程互斥和同步的辅助来确保数据一致性,不要求数据的移动。具体请看下图:

3. 管道

管道通信方式 Pipe,也称共享文件方式(直接通信),基于文件系统,利用一个打开的共享文件连接两个相互通信的进程,文件作为缓冲传输介质。请看下图:

4.消息

与窗口系统中的“消息”不同。通常是不定长数据块。消息的发送不需要接收方准备好,随时可发送

消息缓冲:在内存中开设缓冲区,发送进程将消息送入缓冲区,接收进程接收传递来的缓冲区

  • 直接方式:

  • 发送进程发消息时要指定接收进程的名字, 反过来,接收时要指明发送进程的名字 Send(receiver,message) Receiver(sender,message) * 对称形式:一对一 * 非对称形式:多对一 (顾客/服务员) 有缓冲(有界,无界),无缓冲

  • 间接方式:

  • 发送进程发消息时不指定接收进程的名字,而是指定一个中间媒介,即信箱。进程间通过信箱实现通信

  • 发送原语:send(MB,Message) 接收原语:receive(MB,Message)

消息队列:

看到这里,有没有觉得复制粘贴就是上图的过程;

5.套接字

双向的,数据格式为字节流(一对一)或报文(多对一,一对多);主要用于网络通信; 支持client-server模式和peer-to-peer模式,本机或网络中的两个或多个进程进行交互。提供TCP/IP协议支持 UNIX套接字(基于TCP/IP):send, sendto, recv, recvfrom; 在Windows NT中的规范称为"Winsock"(与协议独立,或支持多种协议):WSASend, WSASendto, WSARecv, WSARecvfrom;
—————————————————————————————————————————

上图是主机之间的通信原理图,如果使主机与主机之间的通信,需要使用套接字来实现。

6.揭晓原理

复制粘贴操作涉及到进程之间的通信,通过消息队列实现通信过程,是间接通信(在Windows中如果复制之后没有执行粘贴操作,会一直存在,就相当于放在了存储空间中,当关机的时候才会自动清除)。

图源CSDN

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值