上一页 1 2 3 4 5 6 7 8 9 ··· 13 下一页
摘要: Linux中的进程调度策略1.早期版本的进程调度首先,在linux2.6以前的版本中,调度策略都是非抢占式的,无论是用户进程还是内核线程,都是不可被抢占的。最原始的linux0.11版本中,有"进程槽“的概念,是一个长度为64的数组,也就是说,系统中同时最多可以存在64个进程。调度时,遍历进程槽,选取剩余时间片最多的进程来执行。当所有进程时间片都用光时,根据优先级给所有进程重新分配时间片,然后再选... 阅读全文
posted @ 2012-04-14 16:16 linyvxiang 阅读(545) 评论(0) 推荐(0) 编辑
摘要: 近期主要研究linux kernel中的进程调度算法。在2.4及2.4以前的版本中,基本上都是根据优先级来选择下一个被调入的进程。算法时间复杂度为O(n)(因为要遍历所有进程,来决定哪个被选中)。当进程数比较多时,些操作费时较大。在2.6版本刚推出时,采用著名的O(1)调度算法,每个优先级有一个单独的可运行队列,此队列又分为active和expired两个,通过指针的交换等巧妙操作,使选择下一个进... 阅读全文
posted @ 2012-04-13 22:30 linyvxiang 阅读(436) 评论(0) 推荐(0) 编辑
摘要: Linux大致把进程分类三类1.Interctive process与用户交互比较多的进程,一时开始,必需控制其响应时间。如shell,文本编辑,图像处理等进程。2.Batch process与用户交互不多,但需要大量计算,占用CPU的进程。如编译器,数据库。3.Real-time process对响应时间要求更为严格,一旦提交,必需马上处理。如视频播放,机器控制等进程。显然,这三类进程,在调度时... 阅读全文
posted @ 2012-03-31 21:32 linyvxiang 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 昨天写了一下interrupt和exception的不同,在弄清以后,可以来研究linux kernel中的各种同步机制,各种锁了。先写一下Spin Lock,其余的有时间再写。Spin Locks这个是很常见的,好多地方翻译成“自旋锁”,在临界区只允许一个进程进入(且该进程不允许休眠,例如中断处理程序)时经常使用。spin lock使用spinlock_t结构体来实现,其定义在/include/... 阅读全文
posted @ 2012-03-31 10:28 linyvxiang 阅读(508) 评论(0) 推荐(0) 编辑
摘要: 由于阅读内核时经常遇到各种各样的锁,以前没去太在意它们,终于忍不住了,决心把内核中的锁搞清楚。为了使并发程度达到最大,不同的情况下需要使用不同的锁,在了解各种锁之前,需要先搞清两个很容易混淆的概念,国内很多书籍对这两个概念是不区分的,其实,在内核中,对它们的处理是有不同的,其中很大一个不同就是运行所对应的handler时中断是否关闭,所以,又由此引出了不同锁的使用。废话不说,上原文,配合自己写的理... 阅读全文
posted @ 2012-03-31 00:52 linyvxiang 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 折腾了大半天,算是搬家成功了吧。其实很早就有一个想法,自己去买个虚拟主机,建个博客,写些字记录一下自己。QQ空间不适合记录技术,cnblogs不适合记录生活。一个偶然的机会,进了一个网友的百度空间,看到说RED_HAT推出有免费云服务,可以自己建立应用,包括php。便拿来试手了,折腾了大半天,总算是有些模样了,还有感谢某网友开发的cnblogs导出到wordpress plugin。唯一的不足是我... 阅读全文
posted @ 2012-03-25 17:29 linyvxiang 阅读(98) 评论(0) 推荐(0) 编辑
摘要: http://pat.zju.edu.cn/contests/pat-practise/1028 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <algorithm> 5 using namespace std; 6 struct Stu{ 7 char ID[7]; 8 char name[9]; 9 int score;10 }student[100002];11 int meth;12 bool cmp(struct Stu a,str 阅读全文
posted @ 2012-03-24 11:24 linyvxiang 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 不想调程序,来学下LaTeX,毕竟以后肯定会用到。写这些也参考了tsinghua某老师的LaTeX学习笔记,只为加深自己的印象,还有以后用到时方便查询。首先,LaTeX文档主要分三部分,文档类声明,序言,正文。文档类声明即1 \documentclass{}其中,括号内可填 article , report , book,其实,就是说,LaTeX针对这几种不同的文档类型提供了不同的默认设置,比如字体大小等。序言部分可以引入额外的宏包,比如开源社区ftp上就有西电的毕业论文宏包(明年毕业时直接拿来用了~)如果是article的话,肯定要有标题,作者,写作日期等标识信息,这些通过如下命令实现1 \ 阅读全文
posted @ 2012-03-23 17:14 linyvxiang 阅读(1246) 评论(0) 推荐(1) 编辑
摘要: http://pat.zju.edu.cn/contests/pat-practise/1029一招鲜也有不好使的时候,sort和qsort均不好使,超时。只好自己写,其实就是merge sort,唯一担心的就是内存了,还好不超。 1 #include <stdio.h> 2 int num1[1000002]; 3 int num2[1000002]; 4 int num_fin[2000002]; 5 int main() 6 { 7 int len1,len2; 8 scanf("%d",&len1); 9 int i;10 for(i=0;i&l 阅读全文
posted @ 2012-03-21 18:00 linyvxiang 阅读(720) 评论(0) 推荐(0) 编辑
摘要: http://ac.jobdu.com/problem.php?id=1420其实就是0-1背包,要求两集合之差绝对值最小,不妨求“当背包容量为所有数之和一半时,能放入背包的总重量",求出这个来,结果就出来了动态分配的内存,因为有的数据比较大,怕超内存。还有,就是内存在使用之前一定要初始化,malloc是不会自动初始化的。 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 int max(int a,int b) 5 { 6 return a>b?a:b; 7 阅读全文
posted @ 2012-03-18 20:24 linyvxiang 阅读(329) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 13 下一页