Linux编程
seanyxie
谢思源的个人博客
展开
-
TCP三次握手
在server和client调用socket生成套接字后,server调用listen监听某个端口后,调用accept来等待client的连接,accept本身是阻塞的,直到收到client的请求后,accept才返回client调用connect函数项server所在主机发起连接请求,连接的报文中除了包含server的iP和端口外,还包含了client端初始化的序号SYN a 和MSS=1460(最大数据段的大小),正在倾听client连接的server收到client的连接请求后,server从acce原创 2010-07-18 16:15:00 · 1357 阅读 · 0 评论 -
由fork()和vfork()回忆下OS的内存管理
<br />使用fork产生的子进程复制了父进程的代码段和数据段,<br />我们现在假定在父进程中有一个变量var,初始值为88<br />子进程也有一个var,初始值也是88,修改子进程的var,父进程的var并不改变<br />而且父进程和子进程的代码段和数据段是完全一样的,<br />所以父进程和子进程中var的逻辑地址也是完全一样的,<br />{<br />逻辑地址实际上是段内偏移量,就是该变量在该进程空间中数据段的偏移量<br />要求得他的物理地址,要根据操纵系统的段式内存管理方法,来求得他原创 2010-12-09 11:46:00 · 1439 阅读 · 1 评论 -
进一步了解vfork()函数
<br />在《UNIX环境高级编程》一书的第八章中,有一道课后习题如下:<br />回忆图7-3典型的存储空间布局。由于对应于每个函数调用的栈帧通常存储在栈中,并在调用 vfork后,子进程运行在父进程的地址空间中,如果不是在main函数中而是在另一个函数中调用vfork,以后子进程从该函数返回时,将会发生什么情况?<br />作者Rich Stevens是一位大师,留下这么一题必有其深意,于是结合《深入理解计算机系统》中的知识,写了个程序验证了下,受益良多。<br /> 首先回忆下程序运原创 2010-12-12 23:16:00 · 2895 阅读 · 4 评论 -
基于Linux的多线程安全队列
<br />线程队列头文件 threadqueue.h<br />#ifndef THREADQUEUE_H_ .#define THREADQUEUE_H_ #include <pthread.h> #include <iostream> using std::cout; using std::endl; const int QUEUESIZE = 20; template<class Object> class Thr原创 2010-12-30 11:37:00 · 4424 阅读 · 1 评论