linux
ruthless_killer
good
展开
-
socket系统调用
从别人那里看,一边翻源码。总结的socket的系统调用,主要是参考大神的 Socket系统调用对应的内核函数为: asmlinkage long sys_socket(int family, int type, int protocol) { int retval; struct socket *sock; /* 根据协议族、套口类型、传输层协议创建套口 *转载 2017-07-29 16:38:27 · 818 阅读 · 0 评论 -
系统调用过程
系统调用: 每个系统调用都通过lib库体现。每一个系统调用在lib库中一般是一个宏syscallX(),X是具体某个调用的数字参数。 有的系统调用更复杂,因为它们有可变 的参数列表,但它们仍用一样的入口指针。 当syscall()被调用后,并没有任何的系统代码被执行,直到syscall()调用了int 0x80 ,中断0x80 把调用 (控制)传给核心入口地址中的_s原创 2017-07-20 14:31:16 · 240 阅读 · 0 评论 -
fork系统调用过程
又是查找资料,又是看源码,折腾了大半天,终于把fork的过程弄完了,但是后面的跟踪状态还不太懂,等具体后面弄清楚了,再加上。内核是2.6.11版本的。fork()系统调用:我们运行一个系统调用时,系统将调用宏指令_syscall0 #define _syscall0(type,name) \ type name(void) \ { \ register long原创 2017-07-19 18:25:23 · 957 阅读 · 0 评论 -
epoll详解
ET模式实现分析 1.1 ET和LT的实现区别 注:上图的poll不要理解成和select相似那个poll,这是通过epoll_ctl调用的。 下面简要分析一下epoll的工作过程: (1) epoll_wait调用ep_poll,当rdlist为空(无就绪fd)时挂起当前进程,知道rdlist不空时进程才被唤醒。 (2) 文件fd状态改变(buffer由不可读变为可读或由不可写变为可转载 2017-07-29 18:11:45 · 380 阅读 · 0 评论 -
多线程下如何实现生产者消费者模型
生产者消费者问题就是一个著名的线程同步问题,该问题描述如下:有一个生产者 在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并 发执行,在两者之间设置一个具有多个缓冲区的缓冲池,生产者将它生产的产品放 入一个缓冲区中,消费者可以从缓冲区中取走产品进行消费,显然生产者和消费者 之间必须保持同步,即不允许消费者到一个空的缓冲区中取产品,也不允许生产者 向一个已经转载 2017-07-20 21:59:17 · 1087 阅读 · 0 评论