摘要:
一、mutex VS semaphore类比于bool VS int在sysv的早期进程间通讯机制中,是没有mutex这个概念的,正如早期的C89中有int类型但是没有bool类型一样,因为mutex只是semaphore的一个特例而已。但是事情的发展往往也是惊人的相似,那就是bool变量在C99中 阅读全文
摘要:
一、syn cookie攻击防御方法在前一篇文章中说明了syn flood的原理,可以看到,该机制会造成服务器的DOS瘫痪而无法提供正常服务,所以在当前的Linux中提供了一种相对比较智能的方法方法,就是使用syn_cookie机制。它的实现原理就是把连接的状态信息体现在自己提议的初始化序列号上,这 阅读全文
摘要:
一、TCP拆链发起方经历time_wait状态以前只是注意TCP连接建立时经历的经典的“三次握手”,而对于连接的关闭关注较少,最近看了一下关闭的流程,比建立更为复杂。这个其实也不值得大惊小怪,因为free往往要比malloc复杂,因为free可能要处理释放块的合并。其中比较特殊的有一个time_wa 阅读全文
摘要:
一、listen调用之backlog参数这个系统调用中的第一个参数就是侦听的"父套接口",就好像进程fork时候的"父进程"一样,这个参数是必须的,我想大家应该都没有什么意见。但是后面还有一个容易被人们忽略的参数就是backlog,这个单词不是很常见,所以我第一看到它的时候是不明白它的意义和作用的, 阅读全文
摘要:
一、telnet客户端窗口粗暴关闭一般很多共享式系统都会启动telnet服务,特别是在嵌入式系统中,通常除了串口就是telnet来和单板交互了。典型的场景是一个用户可能通过后台的windows或者linux系统的telnet客户端来telnet连接到服务器上,然后执行操作。在理想情况下,这是一个友好 阅读全文
摘要:
一、epoll实现原理及回调机制epoll是对select系统调用的改善,适用于同时关注文件比较多的时候的一个中优化方法,例如一个具有大量连接的系统。那么select的缺点在哪里呢?当select被唤醒的时候,它并不知道是被哪个或者哪些文件唤醒的,所以它要对位图中所有的文件进行遍历查询(调用该文件的 阅读全文
摘要:
一、clone调用这里选择clone作为例子来描述这个问题,是因为它的确有比较明显的特征,这个特征就是它的实现比较复杂。首先,用户态的clone并不和内核的sys_clone直接对应,而其它的大部分用户态API和内核的sys_XXX接口的参数是一一对应的,例如select、open等。在glibc中 阅读全文
摘要:
一、共享内存及传统sys v IPC机制这个机制在SYS V系统中最早引入,是为了提高进程间通讯效率的一种新的机制,不同的进程可以通过不同的逻辑地址来操作相同的物理地址,这样相当于在地址空间隔离的基础上大家建立DMZ(非军事化区),不同的进程在这里毫不戒备,大家坦诚交流,直接操作内存,这样一个进程的 阅读全文
摘要:
一、如何看到sysV IPC shm文件名1、file_system_type.get_sb修改正如上篇所说,在用户态无法看到可shm文件的名称,不同的挂载点使用不同的dentry,而对于tmpfs文件,它的readdir的系统实现就是通过dcache_readdir函数来实现的,但是这个dentr 阅读全文
摘要:
一、goto情节goto或许相当于白垩纪时期的恐龙,曾经横行于整个地球,但是它的命运和和恐龙一样,最后逐渐绝迹。Dijstra老师第一个对goto拍案而起,痛陈该指令的危害,正如我们现在看有些代码的感受:写代码的人爽了,维护的人哭了。曾经抓住BASIC语言的尾巴,见到过早期的BASIC语言写的程序, 阅读全文