摘要: X86_32.s文件,启动汇编程序的最后阶段,主要工作为装入堆栈指针, Xen会在栈顶分配一个cpu_info结构,这个结构包含很多重要的成员:1)客户系统的切换上下文2)当前运行的vcpu指针3)物理处理器编号. 1,IDT的处理,整个idt_table的向量入口都初始化ignore_int,这个... 阅读全文
posted @ 2012-11-15 09:42 GOD! 阅读(1310) 评论(0) 推荐(0) 编辑
摘要: 汇编文件trampoline.s,为启动汇编程序第二阶段,主要工作为进入实模式,读取内存,磁盘,视频信息然后再次进入保护模式装入新的GDT(gdt_table),英文注释了很大部分,很容易理解。下面的代码注释中,从标号0开始运行,然后是标号1。 1 .code16 2 /* NB. bo... 阅读全文
posted @ 2012-11-15 09:41 GOD! 阅读(1884) 评论(0) 推荐(0) 编辑
摘要: 启动汇编部分代码是xen 的引导启动程序,位于./xen/arch/x86/boot目录下。代码描述了从xen加载到调用第一个C函数“__start_xen”之间的初始化系统环境过程。主要涉及的文件流程为head.S->trampoline.S->x86_32.s,其中head.s为冲GRUB进入... 阅读全文
posted @ 2012-11-15 09:38 GOD! 阅读(5404) 评论(0) 推荐(0) 编辑
摘要: View Code 1 #include 2 #include 3 4 #define N 10/*0-1分成10份,也即是说10个桶*/ 5 6 /** AUTHOR: Mike Feng 7 * 桶排序:桶排序假设输入由一个随机过程产生,该过程将元素均匀... 阅读全文
posted @ 2012-03-23 20:08 GOD! 阅读(272) 评论(0) 推荐(0) 编辑
摘要: Linux内核同步控制方法有很多,信号量、锁、原子量、RCU等等,不同的实现方法应用于不同的环境来提高操作系统效率。首先,看看我们最熟悉的两种机制——信号量、锁。 一、信号量 首先还是看看内核中是怎么实现的,内核中用struct semaphore数据结构表示信号量(中): View ... 阅读全文
posted @ 2012-03-23 19:46 GOD! 阅读(9915) 评论(3) 推荐(4) 编辑
摘要: 基数排序思想很简单,直接上代码: View Code 1 #include 2 #include 3 #include 4 5 #define N 16 /*字符串个数*/ 6 #define M 3 /*每个字符串的字符个数*/ 7 /** AUTHOR: ... 阅读全文
posted @ 2012-03-23 16:27 GOD! 阅读(855) 评论(6) 推荐(0) 编辑
摘要: 计数排序用于处理元素全为整数或可以用整数形式表示的元素,我们直接看代码与注释: View Code 1 #include 2 #include 3 4 #define N 12 5 #define K 15 6 /** AUTHOR: Mike Feng 7 * 计数排序假... 阅读全文
posted @ 2012-03-23 09:30 GOD! 阅读(1092) 评论(0) 推荐(0) 编辑
摘要: 基本知识: 堆的最基本的几种操作:建堆,时间复杂度为O(n),具体计算如下:假设有n=2^k个元素,从n/2元素开始, 以该点为根,使之成为一个堆; 然后再以n/2-1元素开始, 使之成为一个堆。。。,直到数组第1个元素,使之成为一个堆; 于是整个数组就成为一个堆了。杂度是2^(k-1) * 1 +... 阅读全文
posted @ 2012-03-22 21:40 GOD! 阅读(1428) 评论(2) 推荐(2) 编辑
摘要: 快排的几种方式与思想可以用到很多地方,直接看代码: View Code 1 #include 2 #include 3 4 /** AUTHOR: Mike Feng 5 * 快排,时间复杂度为O(nlgn),几种方法的实验,注意细节。 6 * ... 阅读全文
posted @ 2012-03-22 20:15 GOD! 阅读(267) 评论(0) 推荐(1) 编辑