- 博客(23)
- 资源 (53)
- 收藏
- 关注
原创 c++ 学习 -- 复制构造函数
复制构造函数是个非常微妙的函数,如果不能深刻理解它,可是会出现很多莫名奇妙的错误,下面通过一个程序来详细的介绍其中的奥妙。 1 c++中的隐士成员函数 (1)默认构造函数,如果没有定义 (2)复制构造函数,如果没有定义 (3)赋值操作符,如果没有定义 (4)默认析构函数,如果没有定义
2009-03-31 22:04:00 1209
原创 C++学习--使用类(1)
1 操作符重载 operator op(argument-list) eg operator +(argument)注意: (1)重载的操作符不能违反操作符原来的语法规则,例如不能将%,重载成之使用一个操作符 (2) 不能重新定义新的操作符 (3)不能重载下面的操作符:sizeof . :
2009-03-31 18:31:00 1050
转载 A20 Gate
很多稀奇古怪的东西都是由于系统升级时,为了保持向下兼容而产生的,A20 Gate就是其中之一。在8086/8088中,只有20根地址总线,所以可以访问的地址是2^20=1M,但由于8086/8088是16位地址模式,能够表示的地址范围是0-64K,所以为了在8086/8088下能够访问1M内存,Intel采取了分段的模式:16位段基地址:16位偏移。其绝对地址计算方法为:16位基地址左移4位+
2009-03-28 13:31:00 1194
转载 A20 - a pain from the past
Everybody hates the CapsLock key, but keyboard manufacturers continue producing keyboards with CapsLock - it could be that someone wants it. With A20 it is similar but worse. Really nobody wants it,
2009-03-28 13:24:00 1660
转载 IE8 正式版官方下载链接
IE8 今天正式发布! 以下是IE8 简体中文版的官方下载连接 Windows XP (http://download.microsoft.com/download/1/6/1/16174D37-73C1-4F76-A305-902E9D32BAC9/IE8-WindowsXP-x86-CHS.exe)Windows XP 64位 (http://download.micros
2009-03-28 12:29:00 3347
原创 Linux cgroup机制分析之cpuset subsystem 【转】
一:前言前面已经分析了cgroup的框架,下面来分析cpuset子系统.所谓cpuset,就是在用户空间中操作cgroup文件系统来执行进程与cpu和进程与内存结点之间的绑定.有关cpuset的详细描述可以参考文档: linux-2.6.28-rc7/Documentation/cpusets.txt.本文从cpuset的源代码角度来对cpuset进行详细分析.以下的代码分析是基于linux-
2009-03-27 19:58:00 7801
原创 Linux cgroup机制分析之框架分析 【转】
一: 前言前段时间,一直在写操作系统和研究Solaris kernel.从而对linux kernel关心甚少.不久前偶然收到富士通的面试,由于诸多原因推辞掉了这次机会.不过招聘要求给我留下了较深的印像.其中涉及到了cgroup机制.cgroup对我来说并不陌生,在LKML上看到过它的path.在2008 AKA大会上也有人对它做为专题分析.不过一直都没有深入代码研究.这段时间打算将ker
2009-03-27 19:55:00 3733
原创 LXC:Linux 容器工具【转】
容器可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。本文循序渐进地介绍容器工具 Linux® Containers(LXC)。作者在文中演示如何设置和使用它们。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容器可以在核心 CPU 本
2009-03-27 19:46:00 1961
原创 重要的 CFS 数据结构
对于每个 CPU,CFS 使用按时间排序的红黑(red-black)树。红黑树的 Wikipedia 定义根据 Wikipedia 的解释,红黑树 是一种自平衡二叉搜索树,这种数据结构可用于实现关联数组。对于每个运行中的进程,在红黑树上都有一个节点。红黑树上位于最左侧的进程表示将进行下一次调度的进程。红黑树比较复杂,但它的操作具有良好的最差情况(worst-ca
2009-03-27 10:33:00 6396 1
原创 PCWorld:火狐浏览器已宣告死亡【转】
近日,《PCWorld》杂志周五刊登分析文章称,在与Chrome浏览器的竞争中,火狐浏览器正逐渐失去计算机专家的青睐。尽管Mozilla基金会仍致力于一些宏大的目标,但火狐浏览器已经宣告死亡。 Google近日推出了Linux版的Chrome。即使是在戴尔Mini 9这种性能不强的上网本中,Chrome仍然能够带来快速的互联网浏览体验,尤其是在登录Gmail和Google文档等大量使用
2009-03-26 20:10:00 1791
转载 C++虚函数表解析(转)
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使用方法,我在这里不做
2009-03-26 16:11:00 1040
原创 虚函数详细解析
虚函数联系到多态,多态联系到继承。所以本文中都是在继承层次上做文章。没了继承,什么都没得谈。 下面是对C++的虚函数这玩意儿的理解。 一, 什么是虚函数(如果不知道虚函数为何物,但有急切的想知道,那你就应该从这里开始) 简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行
2009-03-26 15:57:00 1333
原创 linux内核的idle进程分析
1. idle是什么 简单的说idle是一个进程,其pid号为0。其前身是系统创建的第一个进程,也是唯一一个没有通过fork()产生的进程。在smp系统中,每个处理器 单元有独立的一个运行队列,而每个运行队列上又有一个idle进程,即有多少处理器单元,就有多少idle进程。系统的空闲时间,其实就是指idle进程 的"运行时间"。既然是idle是进程,那我们来看看idle是如何被创建,又具体做了哪些
2009-03-26 13:22:00 7517
原创 各种init的比较分析
一、什么是INIT: init是Linux系统操作中不可缺少的程序之一。 所谓的init进程,它是一个由内核启动的用户级进程。 内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。 内核会在过去曾使用过init的几个
2009-03-25 19:13:00 1708
原创 linux内核2.6.28调度相关的数据结构分析
struct task_struct {//进程的当前运行状态 volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ unsigned int flags; /* per process flags, defined below *///动态优先级,静态优先级和常规优先级 int prio, stati
2009-03-25 16:19:00 4502
原创 红黑树
红黑树一棵红黑树是指一棵满足下述性质的二叉搜索树(BST, binary search tree):1. 每个结点或者为黑色或者为红色。2. 根结点为黑色。3. 每个叶结点(NIL)都是黑色的。4. 如果一个结点是红色的,那么它的两个子节点都是黑色的(也就是说,不能有两个相邻的红色结点)。5. 对于每个结点,从该结点到其所有子孙叶结点的路径中所包含的黑色结点数量必须相同。红黑树的每个节点上的属性除
2009-03-25 12:55:00 1284
原创 红黑树详细介绍
红黑树是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由鲁道夫·贝尔发明的,他称之为"对称二叉B树",它现代的名字是在 Leo J. Guibas 和 Robert Sedgewick 于1978年写的一篇论文中获得的。它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的: 它可以在O(log n)时间内做查找,插入和删除
2009-03-25 10:18:00 1439
原创 C++关键字static、const和volatile的几点说明
1 static关键字 首先他表示定义的变量是静态的,在静态存储区分配内存空间,c++里面主要有三种用法 (1)在函数外用static关键字 static int var = 0; int var2 = 0; int main() { var++; var2
2009-03-20 18:56:00 1431
原创 鼠眼再看Linux调度器[2]【装】
四、CFS。 CFS现在还是非常新的调度实现,并且本人水平也十分有限,有鉴于此,这里很可能存在不当的地方甚至错误,权当抛砖引玉,不妥之处还请诸位有识之士不吝指正。 在讨论CFS之前,我们先回顾一下现有的调度器实现:这是一个巧妙的双优先级数组方案。为了尽量避免出现“过期数组”中的任务出现饥饿现象,内核使用了一些启发式的方法判断是否出现了饥饿。在绝大多数情况下,这个
2009-03-20 11:03:00 2393 1
原创 鼠眼再看Linux调度器[1] 【转】
一、回顾。 上次鼠眼初看Linux调度器时已有一年有余的光景了。这一年多的时间里,Linux内核中许多地方发生了重要的变化,比如引进了KVM等。相对而言,任务调度这部分变动算是非常小了:其中比较显著的就是增加了优先级继承支持。但若仅有这些变动的话,从量上还不足以撑起这样一篇文章。 在LKML(Linux Kernel Mail List)上,前阵子有
2009-03-20 09:32:00 2880
原创 start_kernel 分析
一位大师级的人物写的,不看要后悔的哟!!如果以为到了c代码可以松一口气的话,就大错特措了,linux的c也不比汇编好懂多少,相反到掩盖了汇编的一些和机器相关的部分,有时候更难懂。其实作为编写操作系统的c代码,只不过是汇编的另一种写法,和机器代码的联系是很紧密的。 start_kernel在 /linux/init/main.c中定义: asmlinkage void __init start_ke
2009-03-12 20:50:00 5117 5
原创 看到的一份不错的介绍“堆和栈的区别”的资料 [转]
堆和栈的区别(转贴,作者为一c++程序员,具体姓名不清楚) 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)—> 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap)—> 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似
2009-03-12 12:16:00 1459
原创 The Kernel Boot Process --linux2.6.25内核启动过程
The previous post explained how computers boot up right up to the point where the boot loader, after stuffing the kernel image into memory, is about to jump into the kernel entry point. This last post
2009-03-11 09:02:00 1709
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人