send() 、 rev()、write()、read()笔记

1、TCP模式的send()数据发送原理:

     假如socket的文件描述符被设置为阻塞方式,但是发送缓冲区没有足够空间容纳这个send所指示的应用层buffer的全部数据,那么能拷贝多少就拷贝多少,然后进程挂起,等到TCP对端的接收缓冲区有空余空间时,通过滑动窗口协议(ACK包的又一个作用----打开窗口)通知TCP本端:“亲,我已经做好准备,您现在可以继续向我发送X个字节的数据了”,然后本端的内核唤醒进程,继续向发送缓冲区拷贝剩余数据,并且内核向TCP对端发送TCP数据,如果send所指示的应用层buffer中的数据在本次仍然无法全部拷贝完,那么过程重复。。。直到所有数据全部拷贝完,返回。

2、mmap()的理解:

    mmap()函数映射大小到内存中,使用的虚拟内存空间,理论上是可以映射很多数据,但是最好是不要大量的比如几个G的数据都映射进去这样占用内存,也不符合我们的使用内存的习惯,总是化大为小,小块的处理,另外也为后来的块并行设计即多线程处理打好基础!
mmap()函数参数意义:
void* mmap(void* start , size_t length , int prot ,int flag , int fd , off_t offset);
返回值: void * 表示映射到内存中的起始位置,作为返回值;
参数  : 
start  表示映射到内存中的起始位置,一般不自己制定,而是设定为NULL,由系统制定;
length 表示需要映射的长度,也即内存中映射的大小;
prot   期望的内存保护标志;
flag   指定映射对象的类型;
fd     文件描述符;
offset 文件中开始映射的偏移量;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值