自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (12)
  • 收藏
  • 关注

原创 关于vmalloc缺页异常的一个问题

进程页表和vmalloc缺页异常在新建进程时,新的线程会复制老的线程的页表,复制老线程的文件映射,匿名映射等,而且会复制页表项的全局页表项的内核部分,因为内核部分的页表的映射(除vmalloc)在启动内核时就已经建立好了,因此复制了全局页表项页就相当于复制了内核的页表。pgd_t *pgd_alloc(struct mm_struct *mm){pgd_t *pgd

2012-11-23 15:31:29 1443

原创 虚拟文件系统系列(一)--概述

linux的虚拟文件系统为应用程序提供了一个接口层,可以使用统一的接口操作底层设备和文件,从而也就实现了linux所谓的“万物皆文件”的想法。每种文件所包含的操作不一样,例如目录文件包含lookup函数,而普通文件就没有,设备文件可以通过ioctl操作底层设备。不同的文件系统实现方式也不一样,网络文件系统可以通过网络实现文件读写,缓存同步,等等。。为了为各种文件系统,各种文件提供统一操作,linu

2012-10-19 14:55:50 1235

转载 GDB用法详解

GDB用法详解GDB是一个强大的命令行调试工具。虽然XWindow提供了GDB的图形版DDD,但是我仍然更钟爱在命令行模式下使用GDB。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能。

2012-10-18 19:54:58 896

原创 2013亚马逊笔试题

题目的大概意思是就是,亚马逊有一种配置文件,文件的内容按照如下格式:A={A=1;B=2;C=3;E={A=100;};};A+={D=4;E={B=10;C=D;};};规则A如第一行表示,每条规则用一个字符串表示,可以通过若干条规则向规则A中增加子项,若子项有相同则覆盖之前的值。最后可以通过下面的形式来访问规则A的内容,规则名和相应的值只包含A-z,a-z和0-9:A.

2012-10-18 19:01:26 1083 1

转载 GCC 预处理器选项

GCC 预处理器选项文章来源: 文章作者: 发布时间:2007-08-09 字体: [大 中 小]预处理器选项(Preprocessor Option)下列选项针对C预处理器,预处理器用在正式编译以前,对C 源文件进行某种处理.如果指定了`-E'选项, GCC只进行预处理工作.下面的某些选项必须和`

2012-10-10 09:26:56 1481

原创 小米笔试最后一题

小米笔试的最后一题就是图论的一道题,仔细写了一下答案,结果在gcc和vs下都测试通过:就是一个找无向图的连通子图问题,通过图上面的dfs和bfs都可以,下面使用二维数组表示图之间的关系。这个是vs下面的代码:// xiaomi.cpp : Defines the entry point for the console application.//#include "s

2012-10-08 10:34:22 1089

原创 linux内核定时器

linux的定时器一般分为两种,一种是timeout类型,也就是在指定时间之前完成相应的任务即可,这种定时器对精度要求较低,晚几毫秒执行不会有很大的影响,而且一般这种类型的定时器要处理的任务在超时之前就已经完成,并且从定时器的队列中删除了,用不着真正的等到timeout然后由定时器模块来处理,这种较低精度要求的定时器一般使用timer wheel定时器。另一种类型的就是timer类型定时器,这就要

2012-09-30 19:13:36 8245

原创 linux内核装载vfs过程

linux虚拟文件系统是设备驱动程序的之上的一个抽象层,致力于提供给应用程序一个统一的操作文件的接口。虚拟文件系统的各个数据结构之间的关系比较复杂,画了一张各个数据结构之间的关系图在 http://download.csdn.net/detail/lonewolfxw/4588935,这个清晰的给出了各结构的关系。1. 目录查找linux的虚拟文件系统最核心的结构就是dentry缓存,每次

2012-09-25 16:03:52 2106

转载 vi 命令

一、Unix编辑器概述      编辑器是使用计算机的重要工具之一,在各种操作系统中,编辑器都是必不可少的部件。Unix及其相似的ix 操作系统系列中,为方便各种用户在各个不同的环境中使用,提供了一系列的ex编辑器,包括 ex, edit,ed 和 vi.其中ex,edit,ed都是行编辑器,现在已很少有人使用,Unix提供他们的原因是考虑到满足各种用户特别是某些终端用户的需要。值得庆

2012-09-24 19:37:48 442

原创 linux fork系统调用

fork系统调用是内核中相当麻烦的一部分,由于进程数据结构struct task_struct包含了进程运行所需的所有的数据结构,包括虚拟地址空间,文件系统,打开的文件,信号处理程序,sys v实例,命名空间和IO上下文等。fork系统调用最后调用do_fork函数处理请求:/* * Ok, this is the main fork-routine. * * It copies

2012-09-17 21:08:36 1223

原创 linux 字符设备驱动程序原理

1. 理解驱动程序由于unix的万物皆文件的思想,底层的设备也用特殊文件类型,设备文件来操作,通过读写设备文件就可以读写设备内存或者设备端口了,因此需要一个在虚拟文件系统和底层设备之间的一个适配器,这就是设备驱动程序,用于粘合虚拟文件系统和底层的设备,提供上层的虚拟文件系统统一的接口,并且管理和底层设备的交互。字符设备可以通过一种比较简单的方式管理,因为不需要I/O调度、底层同步、重排请求

2012-09-15 12:45:22 1174

原创 早上看到的微软笔试题,随便写个答案

微软十五道面试题1、有一个整数数组,请求出两两之差绝对值最小的值,记住,只要得出最小值即可,不需要求出是哪两个数。这个我没找到高效算法,O(n2)算法很好实现,应该都能想到的,另外一个快一点点的就是先排序一下,然后查找最小差的,排序用快排可以在)O(nlg(n))内完成,然后查找可以在线性时间完成,总复杂度O(nlg(n))2、写一个函数,检查字符是否是整数,如果是,返

2012-09-12 14:11:05 699

原创 检测单链表是否有环新解

检测单链表是否有环有好几种方法。可以设置两个指针前后步遍历链表,但是这个不好确定环的T型交叉点。如果数据结构可以改就直接加个flag变量表示是否已经被遍历就可以,这个是最简单,但是一般要在不能改数据结构的情况下检测出环。我自己还能想到就是初步估计链表的长度,利用链表节点的地址构建一个散列表,访问一个节点就把这个节点的地址放到散列表里面,这个要额外的数据结构来支持算法,在链表节点比较少的

2012-09-11 08:12:01 2002

转载 linux 基数树

Linux基数树(radix tree)是将指针与long整数键值相关联的机制,它存储有效率,并且可快速查询,用于指针与整数值的映射(如:IDR机制)、内存管理等。IDR(ID Radix)机制是将对象的身份鉴别号整数值ID与对象指针建立关联表,完成从ID与指针之间的相互转换。IDR机制使用radix树状结构作为由id进行索引获取指针的稀疏数组,通过使用位图可以快速分配新的ID,IDR

2012-09-07 10:09:28 3342

原创 linux 进程调度器框架

调度器概述由于现在的计算机系统运行的任务的个数远远超过处理器核心的个数,因此导致了各任务在共享处理器、寄存器资源,为了实现处理器时间在各个任务之间公平的分配,实现程序并行运行的假象,操作系统内核需要进程调度器来尽量公平的在各个进程之间分配运行时间。受到现实问题的影响,调度器实现变得很复杂:需要在各进程间尽量公平的分配处理器时间由于更重要的进程要比次重要的进程分配更多的处理器时间

2012-09-06 00:42:59 1928

原创 linux 文件映射

1. 概述用户进程的虚拟内存管理和内核内存管理比较起来更加复杂,一个对象要在多个数据结构中被管理,而且用户访问内存的不确定性,需要更多的安全检查。下面先看看虚拟内存管理的基本流程。进程task_struct的struct mm_struct* mm 成员管理进程的虚拟的内存,当需要从文件中映射一块size大小的内存时,文件地址空间的相关操作找到一块连续的虚拟内存空间,文件的地址空间对象ad

2012-09-04 21:03:19 1241

转载 linux 匿名映射数据组织

During the stabilization phase of the kernel development cycle, the -rc releases typically happen about once every week. 2.6.34-rc4 is a clear exception to that rule, coming nearly two weeks after t

2012-09-04 17:25:17 2432

转载 中断上下文、进程上下文

Interrupt Context-------------------------------------------    When executing an interrupt handler or bottom half, the kernel is in interrupt context. Recall that process context is the mode of

2012-09-04 11:34:55 598

原创 linux不连续页分配和内核映射

1. 不连续页的分配计算机系统中,随着使用时间的增长,内存碎片越来越严重,导致很多不连续的内存页,linux中伙伴系统能够一定程度上避免不连续的内存页。若要分配一段连续的内存页,而物理内存中又不存在这么多连续的内存页怎么办,可以把多个不连续的内存页映射到连续的虚拟地址空间中,当进程访问内存,进程看到的总是一块连续的空间。下面看看不连续页的分配。分配不连续内存页的主要思想就是通过伙伴系统每次

2012-09-02 11:52:47 1515

原创 linux slab精细结构

1. 数据结构上面是用visio画的slab缓存的结构示意图,而且对标出了slab结构的成员的含义以及kmem_cache的主要成员的含义。看看如何从slab中获取对象,由上图可以清晰的看到,slab中的对象获取应该是通过free成员和bufctl数组中的索引来取得对象,从索引到对象转换通过s_mem偏移来确定:static inline void *index_t

2012-09-01 14:50:07 1508

原创 linux内核线程和 kthread_worker

1. 内核线程             内核线程是直接由内核本身启动的进程。内核线程实际上是将内核函数委托为独立的进程,与系统中的其他进程并行执行,完成内核的委托任务,当然只能在内核空间中执行,不能访问用户空间资源。内核线程通常又称为守护进程。他们一般用于执行下列人物:       1.  周期性的将修改的内存页与页来源设备同步,经常用到就是内存文件映射的同步就通过内核线程实现内存数据

2012-08-18 16:36:11 4818

linux 虚拟文件系统数据结构关系

linux 虚拟文件系统的几个数据结构的关系,自己画的

2012-09-22

threadpool线程池

自己实现的Python实现的线程池源码,测试通过

2012-07-31

学习OpenCV(中文版)

学习OpenCV(中文版) 学习OpenCV(中文版) 学习OpenCV(中文版) 好书不多说

2011-10-31

深入linux内核构架2

深入linux内核构架2 中文清晰版 Wolfgang Mauerer

2011-10-28

深入linux内核构架 中文清晰版

深入linux内核构架 中文清晰版 Wolfgang Mauerer

2011-10-28

云计算相关资料.pdf

云计算时代的软件复用.pdf 云计算技术及运营可行性分析.pdf 云计算_未来IT技术应用的趋势.pdf 云计算_实现概念计算的方法.pdf 虚拟化技术在云计算中的应用初探.pdf 新型网络应用模式_云计算初探.pdf 人联网物联网互联网.pdf 浅析云计算与信息安全.pdf 浅谈云计算的网络安全问题.pdf

2011-05-25

深入浅出Android

深入浅出Android 深入浅出Android 深入浅出Android

2011-05-25

spring-android-1.0.0.M3

spring-android 的源码,大家懂的

2011-05-24

空空如也

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

TA关注的人

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