总结: 不仅tcp协议能对数据段进行分割,ip协议也具备这个功能,之所以会这样是两者都受到底层MTU的限制(虽说tcp是根据MSS限制来分割数据包,由于MTU=tcp包头+ip包头+MSS,所以其实也算是受MTU的制约。)。但是尽量别让ip协议来负责数据包的分包工作,因为虽然ip协议会对数据包进行分...
分类:
其他好文 时间:
2014-10-19 14:14:19
阅读次数:
170
函数名:sbrk功能:改变数据段空间位置用法:char*sbrk(intincr);程序例:#include#includeintmain(void){printf("Changingallocationwithsbrk()\n");printf("Beforesbrk()call:%lubytes...
分类:
其他好文 时间:
2014-10-18 16:54:24
阅读次数:
232
函数名:sbrk功能:改变数据段空间位置用法:char*sbrk(intincr);程序例:#include#includeintmain(void){printf("Changingallocationwithsbrk()\n");printf("Beforesbrk()call:%lubytes...
分类:
其他好文 时间:
2014-10-18 15:22:16
阅读次数:
253
虚拟内存自上而下分为 堆栈段,数据段,代码段 , 堆栈段分为堆区和栈区 ,栈区从上往下分配内存,堆区从下往上分配内存 。数据段分为静态区和全局区。两者的作用域不同。代码段分为只读区和代码区 。最后还有bss区现在还不涉及。 六个区域的定义如下: 1 #include 2 #include ...
分类:
其他好文 时间:
2014-10-16 23:00:33
阅读次数:
324
1. 基本概念1.1 地址(1)逻辑地址:指由程序产生的与段相关的偏移地址部分。在C语言指针中,读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址。(2)线性地址:段中的偏移地址(逻辑地址),加上相应段的基地址就生成了一个线性地址。(3)物理地址: 放在寻址总线...
分类:
系统相关 时间:
2014-10-16 14:13:42
阅读次数:
272
没有读过第一篇的读者,可以点击这里,阅读深入研究C语言的第一篇。问题一:如何打印变量的地址?我们用取地址符&,可以取到变量的偏移地址,用DS可以取到变量的段地址。1.全局变量:我们看到,这里的全局变量是在数据段中的。2.局部变量:我们看到,这里的局部变量是在栈段中的。问题二:研究main函数的偏移地...
分类:
编程语言 时间:
2014-10-16 00:05:01
阅读次数:
377
第一题:线程的基本概念、线程的基本状态及状态之间的关系?线程,有时称为轻量级进程,是CPU使用的基本单元;它由线程ID、程序计数器、寄存器集合和堆栈组成。它与属于同一进程的其他线程共享其代码段、数据段和其他操作系统资源(如打开文件和信号)。线程有四种状态:新生状态、可运行状态、被阻塞状态、死亡状态。...
分类:
编程语言 时间:
2014-10-13 23:09:47
阅读次数:
253
UDP总体的封装格式例如以下:以下是8字节UDP首部:当IP层依据协议字段把UDP报文向上传送到UDP模块后,UDP模块再依据port号将数据发送到对应的进程中,以此实现进程到进程间的通信。16位UDP长度代表UDP首部和UDP数据的总字节数。长度最小能够为8,即数据段不包括实际内容。下面是抓包结果...
分类:
其他好文 时间:
2014-10-12 21:31:18
阅读次数:
257
1.子进程是父进程的副本,获得父进程的数据空间/堆/栈,父子进程共享代码段.子进程从fork后开始执行,返回值=0表示子进程,因为子进程可以通过函数来获取父进程的ID,但是父进程无法知道子进程的ID.
2.为了提交效率,fork后,并不立刻复制父进程的空间,而是采取写时复制(COW)的技术,也就是父进程或者子进程要修改数据段/堆/栈的时候,才进行复制操作,并且复制修改的区域.
3.子进程从父进...
分类:
其他好文 时间:
2014-10-03 20:13:55
阅读次数:
151
摘要:本文主要讲述了Linux系统中,程序存储结构(代码区、数据段和BBS区)与进程的基本结构(代码区、数据段、BBS区、堆和栈),以及堆和栈的区别....
分类:
系统相关 时间:
2014-10-03 19:08:04
阅读次数:
230