摘要:
1.linux内核调试工具crash并不能直接显示函数参数,而这个对调试又非常重要 下面是工作中一个实际的问题,我们的进程hang在如下一个内核栈中了,通过栈回溯可知是打开了一个nfs3的网盘文件或者目录,已知客户机器的NAS盘不可访问了,只要访问就会hang住,但我们的进程理论上是不会访问该NAS 阅读全文
摘要:
1. 说明 1> 本篇是实际工作中linux上碰到的一个问题,一个使用了CGroup的进程处于R状态但不执行,也不退出,还不能kill,经过深入挖掘才发现是Cgroup的内核bug 2>发现该bug后,去年给RedHat提交过漏洞,但可惜并未通过,不知道为什么,这里就发我博客公开了 3> 前面的2个 阅读全文
摘要:
1. 说明 1> linux内核关于task调度这块是比较复杂的,流程也比较长,要从源码一一讲清楚很容易看晕,因此需要简化,抓住主要的一个点,抛开无关的部分才能讲清楚核心思想 2> 本篇文章主要是讲清楚在cfs公平调度算法中,CGroup如何限制cpu使用的主要过程,所以与此无关的代码一律略过 3> 阅读全文
摘要:
1. 说明 1> linux内核关于task调度这块是比较复杂的,流程也比较长,要从源码一一讲清楚很容易看晕 2> 本篇文章主要是讲清楚cfs公平调度算法如何将task在时钟中断驱动下切换调度,所以与此无关的代码一律略过 3> 本篇只讲最简单的task调度,略过组调度,组调度在下一篇《极简组调度-C 阅读全文
摘要:
1. 问题 当在console中调用API ShellExecuteEx打开"test.iqy"文件时,发现excel会hang住,console退出后excel才会响应,但直接双击"test.iqy"是没有问题的,有意思的是这个情况只有在xp发生,在win7上没有这个问题。 2. 重现步骤 重现环 阅读全文
摘要:
1. 问题 商人要访问5个城市,问按何种顺序访问所费的时间最短? 2. 问题分析 2.1 最直观的解法 遍历所有的访问顺序,然后计算出所费时间最短的一种,那么问题转化为如何遍历5个城市所有的访问顺序 假设5个城市编号分别为{0, 1, 2, 3, 4},那么问题实际上是一个全排列问题,即这5个数能组 阅读全文
摘要:
引用原文地址 : https://msdn.microsoft.com/en-us/library/x98tx3cf.aspx 1. 在program中严格按下面顺序include 2. 必须是Debug版的build Q : LiteServer遍Debug可能会遇到一些问题 A : 可以用来验证 阅读全文
摘要:
项目简介和code见《同步异步和阻塞2-测试小项目》 1. 实现 1> 异步线程IO处理 unsigned CAsyncIO::ThreadWork() { int nRet = IO(); //map is better than array at here, but it need STL unsigned uTid = GetCurrentThreadId(); ... 阅读全文
摘要:
项目简介和code见《同步异步和阻塞2-测试小项目》 1. 实现 由于IO是阻塞的,所以要实现轮询IO的结果,需要将IO放入线程中处理,IO的处理结果作为给线程的exit code返回。这里用“CBaseThread”简单的将线程处理函数封装到类中 在OnStart()中,先依次启动2个线程处理IO 阅读全文
摘要:
项目简介和code见《同步异步和阻塞2-测试小项目》 1. 实现 同步的实现很简单,依次call2次 IO() 函数,此时OnStart()由于是在主线程中调用的,IO()函数会阻塞主线程,当IO()完成后然后将结果通知给UI后立即返回。 当然,由于IO是阻塞的,所以所谓的IO处理进度是无法实现的, 阅读全文