自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CToday的专栏

衣带渐宽终不悔,为伊消得人憔悴!

  • 博客(23)
  • 资源 (2)
  • 收藏
  • 关注

原创 hadoop-2.2.0配置eclipse插件(windows和linux平台)

hadoop-2.2.0配置eclipse插件(windows和linux平台)

2014-09-26 17:11:22 3200 1

原创 Ubuntu12.04 64bit搭建Hadoop-2.2.0

Ubuntu12.04 64bit搭建Hadoop-2.2.0

2014-09-26 17:04:03 1270

原创 一个fork问题的思考

问题一: 下面程序一共输出多少个"-"#include #include #include int main(void){ int i; for(i=0; i<2; i++){ fork(); printf("-"); } return 0;}按照fork()机制的运行逻辑,其输出应该是6个"-",但是这段程序的输出结果是8

2014-08-08 19:06:38 654

原创 wait_on_buffer 解析

Linux-0.12代码如下:static inline void wait_on_buffer(struct buffer_head * bh){ cli(); /*关中断*/ while (bh->b_lock) /*判断刚才申请的缓冲区是否加锁了*/ sleep_on(&bh->b_wait); /*由于进程1接下来的执行需要改缓冲块

2014-07-19 18:08:36 2122 1

原创 Linux 0.12 switch_to切换过程

switch_to源代码:/* * switch_to(n) should switch tasks to task nr n, first * checking that n isn't the current task, in which case it does nothing. * This also clears the TS-flag if the task we sw

2014-07-18 12:53:50 1393 1

原创 TSS描述符表的作用

任务状态描述符表TSS用来记录当前进程执行时所对应的寄存器的数据,这些数据主要在进程切换时发挥作用,比如,现在要由当前进程"进程A"切换到进程B,那么系统就要将此时各个寄存器的数值,保存在进程A的任务状态描述符表中,以便将来进程A再次执行时接着使用而不至于出现混乱;之后,再用进程B中TSS里面的寄存器值,来设置相应的寄存器,以此支持进程B接下来的执行。局部数据描述符表LDT中,记录着当前进程对

2014-07-11 17:47:57 2398

原创 Linux 0.12内核从开机加电到执行main函数之前的过程

1.启动BIOS,准备实模式下中断向量表和中断服务程序在按下电源按钮的瞬间,CPU硬件逻辑强制将CS:IP设置为0xFFFF:0x0000,指向内存地址的0xFFFF0位置,此位置属于BIOS的地址范围。关于硬件如何指向BIOS区,这是一个纯硬件动作,在RAM实地址空间中,属于BIOS地址空间部分为空,硬件只要见到CPU发出的地址属于BIOS地址范围,直接从硬件层次将访问重定向到BIOS的

2014-06-28 18:16:22 1103

原创 内核缺页异常处理

在访问内核地址空间时,缺页异常可能被各种条件出发,如下所述:内核本身的程序设计错误导致访问不正确的地址,这个在稳定版本中永远不会发生,在开发版本中偶尔会发生内核通过用户空间传递的参数访问了无效地址访问使用vmalloc分配的区域,触发缺页异常前两种情况是真正的错误,内核必须使用最后的手段---异常修正(exception fixup)机制来进行处理vmalloc的情况是导致缺页

2014-05-09 18:14:06 2706

原创 __do_fault分析

1. 收集pagefault handler的相关信息,存入vmf结构体,并调用vma->vm_ops->fault进行缺页处理(完成页面的调入工作),返回的页存储在vmf.page中2. 如果需要写访问,则需要区分私有映射和共享映射。     a. 如果是私有映射,首先调用anon_vma_prepare为vma区域建立一个新的anon_vma实例,并调用alloc_page_v

2014-05-09 10:50:42 2387

原创 Linux cgroup机制分析之cpuset subsystem 【转】

一:前言前面已经分析了cgroup的框架,下面来分析cpuset子系统.所谓cpuset,就是在用户空间中操作cgroup文件系统来执行进程与cpu和进程与内存结点之间的绑定.有关cpuset的详细描述可以参考文档: linux-2.6.28-rc7/Documentation/cpusets.txt.本文从cpuset的源代码角度来对cpuset进行详细分析.以下的代码分析是基于linu

2014-03-09 12:15:33 752

原创 Linux cgroup机制分析之cpuset subsystem 【转】

一:前言前面已经分析了cgroup的框架,下面来分析cpuset子系统.所谓cpuset,就是在用户空间中操作cgroup文件系统来执行进程与cpu和进程与内存结点之间的绑定.有关cpuset的详细描述可以参考文档: linux-2.6.28-rc7/Documentation/cpusets.txt.本文从cpuset的源代码角度来对cpuset进行详细分析.以下的代码分析是基于linu

2014-03-09 12:13:56 965

原创 Linux cgroup机制分析之框架分析 【转】

一: 前言前段时间,一直在写操作系统和研究Solaris kernel.从而对linux kernel关心甚少.不久前偶然收到富士通的面试,由于诸多原因推辞掉了这次机会.不过招聘要求给我留下了较深的印像.其中涉及到了cgroup机制.cgroup对我来说并不陌生,在LKML上看到过它的path.在2008 AKA大会上也有人对它做为专题分析.不过一直都没有深入代码研究.这段时间打算将kerne

2014-03-09 12:12:29 767

原创 保留的页框池

Motivation:有两种方法来满足内存分配请求:当有足够的空闲内存可用时,请求会被立刻满足否则,内核会回收一些内存,并将发出请求的内核控制路径阻塞,直到有内存被释放但是当请求内存时,一些内核控制路径不能被阻塞。比如在处理中断或执行临界区的代码时的原子请求。原子请求从来不会被阻塞:如果没有足够的空闲页,则仅仅是分配失败而已。尽管内核无法保证一个原子内存分配请求绝不失败,但

2014-03-09 11:21:18 806

原创 关于_load_gdtr

函数 _load_gdtr的汇编代码如下:_load_gdtr: ; void load_gdtr(int limit, int addr) ; mov ax, [esp+4] ; limit mov [esp+6], ax lgdt [esp+6] ret这个函数用来将指定的段上限(limit

2014-03-08 16:39:34 1070 2

转载 破解 Windows 下Markdown 编辑器 MarkdownPad 2

本文转自:http://blog.csdn.net/hazir/article/details/17023255MarkdownPad 是 Windows 平台下一款优秀的 Markdown 编辑器,本文简单介绍 Markdown 以及使用一种方法破解 MarkdownPad 使其升级到专业版。该方法仅限于教育用途,我不为滥用该方法导致的商业纠纷负责!Markdown 简介

2014-03-07 11:35:36 950

原创 do_fork实现分析

进程复制的三个机制fork、vfork和clone最终都是调用do_fork来实现子进程的产生的,不同的产生方式通过传递给do_fork的不同参数来控制。其代码执行流程如下:代码: if (unlikely(clone_flags & CLONE_STOPPED)) { static int __read_mostly count = 100; if

2014-03-07 11:32:12 1546

原创 页框管理

对内存的管理涉及两个部分:对物理内存的管理对虚拟内存的管理对物理内存的管理 是指对“RAM的管理”,对虚拟内存的管理 是指对进程地址空间的管理,它们两者通过page fault(缺页处理)联系起来。在RAM管理部分,主要包括页框管理和内存区管理;内存管理包括内存区管理、内存映射、伙伴系统、slab和内存池等部分。对于i386这种32位的处理器结构,Linux采用4KB页框大

2014-03-07 10:57:46 1798

原创 临时内核页表的建立过程

Motivation:当内核被解压到线性地址0x100000后,为了继续启动内核,即启动内核的第一个swapper进程,内核需要建立一张临时页表供其使用。当内核从16位的实模式进入保护模式(通过在汇编代码中的setup函数中设置linux的cr0寄存器的PE位),内核要创建一个有限的地址空间,容纳内核的代码段、数据段、初始页表和用于存放动态数据结构的128KB大小的空间。程序设计者假定,内

2014-03-06 11:59:44 888

转载 SQLite的结构

转载自:http://hi.baidu.com/fcni_cn/blog/item/0c9cb845b706893c86947355.html简介Block Diagram Of SQLite这篇文档主要描述了SQLite类库的结构。这篇文档的内容对于那些想了解和修改SQLite内部结构的人将会非常有用。右侧是一个结构图,它显示了SQLi

2012-03-19 21:11:15 578

转载 Linux内核调度策略与算法分析 (2)

转自http://hi.baidu.com/mychaoyue2011/blog/item/6df45895c3d63243d0135e01.html4       Linux内核调度策略与算法分析    c = -1000;list_for_each(tmp, &runqueue_head) {     /* 从runqueue中选择一个最佳进程来运行

2012-03-07 23:25:18 525

转载 Linux内核调度策略与算法分析 (1)

转自http://hi.baidu.com/mychaoyue2011/blog/item/6df45895c3d63243d0135e01.html本报告分析Linux 2.6内核的调度策略及算法。Linux内核支持多CPU,每个CPU执行类似的策略,但在必要时(例如CPU负载不平衡等时刻),还会进行更高层的CPU间调度,由此还会引出CPU间的同步等问题。为了简化问题,此

2012-03-07 23:22:52 633

原创 mingw 环境变量配置

首先,我们先在www.mingw.org上找到下载的链接地址,然后再去下载网络安装程序,很小的。我下的是最新的版本,是5.1.6。然后点击 mingw-5.1.6.exe,然后一直next,选择Download only,免得下次重做的时候还的去网上找。下完后,在点击mingw-5.1.6.exe进行安装,不过现在已经下完了,所以不会再一次的去网上下载需要的包了。到选择安装包的时候,可以全部选,也

2012-02-29 11:12:02 1436

原创 静态链接与动态链接

首先我们来介绍一下静态链接于动态链接的基本思想,所谓的静态链接就是将要链接的多个文件中的相似段进行合并,再进行地址的重定位,在程序运行之前就形成一个大的单独可执行的文件。所谓的动态链接就是把程序按照模块拆分成各个相对独立的部分,在程序运行时才将他们链接在一起形成一个完整的程序,而不是像静态链接一样把所有的程序模块都链接成一个单独可执行的文件。       在动态链接的实现中涉及到一个动态共享对

2012-02-29 10:31:52 609

Power Designer15破解补丁

Power Designer15破解补丁

2011-11-26

一个用VC++写的拼图小程序

用C++写的一个拼图小程序,用户可以通过鼠标点击来完成对小片图片的移动,从而将图片拼接完整

2011-07-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除