linux
文章平均质量分 81
月岛圣司
这个作者很懒,什么都没留下…
展开
-
协程的实现原理
用户空间切换linux 的系统调用提供了在用户空间进行上下文切换的能力。go 语言中用户空间的上下文切换用的是汇编实现,怀疑可能是为了跨平台及提高效率而为之。后面用 linux 提供的系统调用来实现一个简单的用户空间上下文切换,反汇编它,看与 go 语言的汇编实现有什么异同。下面首先来看想关的四个系统调用。毕竟是系统调用,会带来用户态和内核态之间的切换开销,这可能也是 go 用汇编实现的原因之一。s原创 2017-07-13 20:02:37 · 4800 阅读 · 0 评论 -
daemon 进程如何打日志到控制台?
问题起源前几日,遇到一个问题,需要收集在容器里一个 daemon 进程的输出日志。一般来说,容器里的进程只需要打日志到标准输出就可以了,但 daemon 进程比较特殊,daemon 进程没有控制终端,也没有继承相应的文件描述符。 上述问题可以转化为一个通用的问题:如何让一个 daemon 进程输出日志到当前的控制台上? 另外,supervisor 及 docker 在启动的时候,是不允许启动后台原创 2017-07-05 21:28:39 · 1904 阅读 · 0 评论 -
中断知识整理
什么是硬中断,什么是软中断,它们的区别是什么? 硬中断由硬件触发,会打断 CPU 然后跳转到内存的相应的中断处理程序处进行中断处理,处理硬中断时一般会屏蔽掉同一中断线上的其它中断,即硬中断的处理过程不可中断(不可被同一类型的中断中断,不同类型的可以)。也不可以休眠。软中断由进程主动发起,不会中断 CPU,直接指定中断号,无需经过中断控制器,直接触发对应的软中断处理程序。软中断可能会被硬中断中断,原创 2017-08-21 08:23:19 · 1009 阅读 · 0 评论