- 博客(145)
- 资源 (6)
- 收藏
- 关注
原创 Linux PM QoS framework(
Linux PM QoS framework(1)_概述和软件架构Linux PM QoS framework(2)_PM QoS classLinux PM QoS framework(3)_per-device PM QoS
2015-03-10 15:03:39
1668
原创 毕业四年后的总结和新的开始
今天最后一天下班,意味着我这一份工作的结束,也意味着下一份工作即将开始。不知不觉中,我已经毕业四年多了!这次换工作直接换了城市,对我而言,很多东西都会是一个新的开始。也趁着这新的生活还没有到来之际,对自己过去的四年简单的总结一下。并且对下一个五年生活做一个新的调整和规划。总的来说,过去四年多的工作中我算是比较顺利的,也算比较幸运的。这里先从第一份工作说起,第一份工作
2015-01-09 19:20:07
1880
3
转载 Ubuntu 12.04中设置安装Google拼音输入法
写在最前好久没写文章了,随着近期时间的充裕,肯定会加快会博文更新的速度。言归正传,在安装英文Linux系统后(作为开发来说,本人更倾向于安装英文语言环境的Linux系统,这样各种提示,尤其是错误提示,都很容易在Google上找到),如果为了方便一些日常的使用,也为了方便在搜索引擎中输入中文,我们可以安装中文输入法,网上有很多教程,但有些说得过于冗杂。本文所针对的系统环境是,利用Ubuntu
2014-11-25 09:45:26
1340
原创 在Ubuntu 12.04 为 Eclipse 添加快速启动项
Ubuntu 12.04使用了Unity界面,在桌面左侧侧多了一个启动器栏。我们可以将自己常用的软件在启动器栏放一个图标,实现快速地启动。启动器栏的每一个图标实际上都对应了/usr/share/applications目录下的一个文件。 为了给eclipse创建启动栏图标,我们可以在/usr/share/applications目录下创建文件eclipse.desktop(
2014-08-21 10:03:01
1211
转载 用户空间缺页异常pte_handle_fault()分析--(上)
前面简单的分析了内核处理用户空间缺页异常的流程,进入到了handle_mm_fault()函数,该函数为触发缺页异常的地址address分配各级的页目录,也就是说现在已经拥有了一个和address配对的pte了,但是这个pte如何去映射物理页框,内核又得根据pte的状态进行分类和判断,而这个过程又会牵扯出一些其他的概念……这也是初读linux内核源码的最大障碍吧,在一些复杂的处理中,一个点往往可以
2014-08-12 03:18:19
1212
转载 用户空间缺页异常pte_handle_fault()分析--(下)--写时复制
在pte_handle_fault()中,如果触发异常的页存在于主存中,那么该异常往往是由写了一个只读页触发的,此时需要进行COW(写时复制操作)。如当一个父进程通过fork()创建了一个子进程时,子进程将会共享父进程的页框。之后,无论是父进程还是子进程要对相应的内存进行写操作,都要进行COW,也就是为自己重新分配一个页框,并把之前的数据复制到页框中去,再写。[cpp] view
2014-08-12 03:16:48
1559
转载 linux缺页异常处理--内核空间
缺页异常被触发通常有两种情况——1.程序设计的不当导致访问了非法的地址2.访问的地址是合法的,但是该地址还未分配物理页框下面解释一下第二种情况,这是虚拟内存管理的一个特性。尽管每个进程独立拥有3GB的可访问地址空间,但是这些资源都是内核开出的空头支票,也就是说进程手握着和自己相关的一个个虚拟内存区域(vma),但是这些虚拟内存区域并不会在创建的时候就和物理页框挂钩,由于程序
2014-08-12 03:12:14
1335
转载 linux缺页异常处理--用户空间
用户空间的缺页异常可以分为两种情况--1.触发异常的线性地址处于用户空间的vma中,但还未分配物理页,如果访问权限OK的话内核就给进程分配相应的物理页了2.触发异常的线性地址不处于用户空间的vma中,这种情况得判断是不是因为用户进程的栈空间消耗完而触发的缺页异常,如果是的话则在用户空间对栈区域进行扩展,并且分配相应的物理页,如果不是则作为一次非法地址访问来处理,内核将终结进程
2014-08-12 03:11:06
1254
转载 ARM-LINUX的进程切换
本文主要记录S3C6410/ARM1176JZF-S架构下Linux(kernel 2.6.35)内核如何进行进程切换。进程切换是操作系统进程调度的基础,首先要能够实现切换,接下来才谈得上“多进程”、“多线程”以及调度算法等更高级的话题。(这里在说“进程切换”的时候提到多线程,并不是把概念搞混淆了。在内核里谈切换的时候,Linux并不区分进程与线程,因为这里只有task,一个进程里如果有多
2014-08-12 02:37:34
1324
转载 Linux Support for ARM LPAE
介绍 早期的ARM系统仅需要MB级别的RAM,但是,随着设备的升级,现在更多复杂的智能手机设备 需要 百M甚至GB级别的RAM,而32bit的物理地址空间就显得捉襟见肘了。更让人紧张的是,这些地址空间不仅仅是RAM占用了,还有 外设、FLASH存储器以及系统ROM也占用了部分地址空间。 新兴起的 移动虚拟化 需要更多是RAM,当然在 Guest
2014-08-11 15:38:42
1811
转载 linux内核 address_space 结构
在阅读Linux2.6的内核内存管理这一部分时,我看到page结构中的一个mapping成员,我感到很迷惑,这个成员的属性太复杂了,我们来看看:struct address_space *mapping;表示该页所在地址空间描述结构指针,用于内容为文件的页帧(1) 如果page->mapping等 于0,说明该页属于交换告诉缓存swap cache(2)
2014-08-08 16:28:51
2769
1
转载 mmc驱动的读写过程解析
mmc io的读写从mmc_queue_thread()的获取queue里面的request开始。 先列出调用栈,看下大概的调用顺序, 下面的内容主要阐述这些函数如何工作。host->ops->request() // sdhci_request()mmc_start_request()mmc_start_req()mmc_blk_issue_rw_
2014-08-06 23:54:46
7745
转载 Linux内核调试方法总结
内核开发比用户空间开发更难的一个因素就是内核调试艰难。内核错误往往会导致系统宕机,很难保留出错时的现场。调试内核的关键在于你的对内核的深刻理解。 一 调试前的准备在调试一个bug之前,我们所要做的准备工作有: 有一个被确认的bug。包含这个bug的内核版本号,需要分析出这个bug在哪一个版本被引入,这个对于解决问题有极大的帮助。
2014-08-04 23:11:07
3360
原创 访问CP15寄存器的指令
4.1.1 访问CP15寄存器的指令访问CP15寄存器指令的编码格式及语法说明如下:31 2827 2423 212019 1615 1211 87 543 0cond1 1 1 0opcode_1
2014-08-01 12:25:01
1254
转载 Kernel编译和链接中的linker script语法详解
先要讲讲这个问题是怎么来的。(咱们在分析一个技术的时候,先要考虑它是想解决什么问题,或者学习新知识的时候,要清楚这个知识的目的是什么)。我在编译内核的时候,发现arch/arm/kernel目录下有一个这样的文件:vmlinux.lds.S。第一眼看上去,想想是不是汇编文件呢?打开一看,好像不是。那它是干嘛的?而且前面已经说过,make V=1的时候,发现这个文件的用处在ld命令中,即ld
2014-08-01 11:00:15
1700
原创 wait()和waitpid()函数
1)wait()和waitpid()函数说明 wait()函数用于使父进程(也就是调用wait()的进程)阻塞,直到一个子进程结束或者该进程接收到了一个指定的信号为止。如果该父进程没有子进程或者它的子进程已经结束,则wait()就会立即返回。 waitpid()的作用和wait()一样,但它并不一定要等待第一个终止的子进程,它还有若干选项,如可提供一个非阻塞版本的wait()功
2014-07-30 10:33:01
1674
转载 从一道面试题谈linux下fork的运行机制
今天一位朋友去一个不错的外企面试linux开发职位,面试官出了一个如下的题目: 给出如下C程序,在linux下使用gcc编译:#include "stdio.h"#include "sys/types.h"#include "unistd.h"int main(){ pid_t pid1; pid_t pid2; pid1 = fork
2014-07-21 00:23:30
546
原创 linux中关于创建子进程系统堆栈的分析
2.6.24内核在task_struct结构中增加了一个void类型的指针stack,使它指向进程的系统空间堆栈顶端这是在do_fork()-->copy_process()-->dup_task_struct()函数中实现的:struct thread_info *ti;ti = alloc_thread_info(tsk);if (!ti) { free_task_struc
2014-07-20 22:43:00
791
原创 Linux内存系列文章
从硬件的系统结构开始 http://blog.youkuaiyun.com/vanbreaker/article/details/7464894
2014-07-02 21:31:11
520
转载 linux中fork()函数详解
一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来
2014-05-27 14:08:02
636
原创 使用QEMU模拟搭建ARM开发平台
使用QEMU模拟搭建ARM开发平台(一)——交叉编译Linux内核使用QEMU模拟搭建ARM开发平台(二)——加入busybox支持使用QEMU模拟搭建ARM开发平台(三)——添加SCSI和MTD以及NAND flash支持MTD设备及JFFS2, UBIFS文件系统的使用简介
2014-01-22 17:24:06
995
原创 Linux I/O Scheduler--CFQ
分析Linux CFQ调度器的两篇很好的文章。Linux I/O Scheduler--CFQ(上)Linux I/O Scheduler--CFQ(下)
2014-01-11 13:22:03
959
转载 大数据处理书籍
apache yarnhttp://www.amazon.com/Apache-Hadoop-YARN-Processing-Addison-Wesley/dp/0321934504/ref=sr_1_1?ie=UTF8&qid=1383118090&sr=8-1&keywords=apache+yarn zookeeperhttp://www.amazon.com
2014-01-04 12:08:25
849
原创 sys_open/sys_read/sys_umount/sys_mount
Linux虚拟文件系统之文件打开(sys_open())Linux虚拟文件系统之文件读取(sys_read())Linux虚拟文件系统之文件系统安装(sys_mount())Linux虚拟文件系统之文件系统卸载(sys_umount())Linux虚拟文件系统(安装根文件系统)
2013-12-23 17:29:23
940
原创 linux fd 系列
linux内核中的文件描述符(一)--基础知识简介linux内核中的文件描述符(二)--socket和文件描述符linux内核中的文件描述符(三)--fd的回收linux内核中的文件描述符(四)--fd的分配--get_unused_fdlinux内核中的文件描述符(五)--fd的分配--locate_fdlinux内核中的文件描述符(六)--fd的分配--ex
2013-12-16 12:37:36
1271
原创 CentOS6.4安装hadoop2.2.0集群Pass总结
http://blog.youkuaiyun.com/licongcong_0224/article/details/12972889 这篇Blog 对细节部分介绍的很好,但我站在一个才接触hodoop的新手的角度来看,有些东西讲的有点杂乱,不好理解。我的意思并不是说前面的Blog写的不好 ,我还是非常感谢作者的分享。我只是在其基础上,将其重要的需要注意的地方总结一下,方便大家,也方便自己以后查阅
2013-11-23 00:53:52
2260
原创 全排列与逆序对
在百度上搜索“全排列及其逆序数”能找出N多结果,但是内容很分散。本文旨在对这一方面的问题进行总结整理,如有不完整或者错误之处请与本人联系。 下面是正文。. 一. 预备知识. 这部分就是百度上一搜一大片的东西,不过还是强调一下。. 1. 全排列 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同
2013-11-21 20:07:48
1356
原创 CentOS编译Hadoop 2.2.0 Pass 总结
1. 不要使用最新的 Maven3.1.1,与Maven3.0.x存在兼容性问题,所以老是出现java.lang.NoClassDefFoundError: org/sonatype/aether/graph/DependencyFilter之类的错误。我选择环境如下:Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da
2013-11-21 09:37:47
4889
原创 常用排序算法
排序算法http://zh.wikipedia.org/wiki/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95常用排序算法稳定性、时间复杂度分析http://www.cnblogs.com/nannanITeye/archive/2013/04/11/3013737.html视觉直观感受 7 种常用的排序算法http://blog
2013-11-20 14:00:56
888
原创 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法一网打尽
http://dsqiu.iteye.com/blog/1700312
2013-11-20 13:53:25
1150
原创 VMware Player 安装MAC OS X Mavericks 10.9
http://blog.sina.com.cn/s/blog_624893280101i1dq.html
2013-11-08 11:17:52
1312
转载 VS2012 下编译boost1.52
VS2012 下编译boost1.522012-12-25 20:35 by Scott Guthrie Liu, 684 阅读, 1 评论, 收藏, 编辑1. 下载boost_1_52_0.7z http://sourceforge.net/projects/boost/files/boost/1.52.0/2. 解压缩到d:\boost目录下3. 编译bjam
2013-11-07 13:02:31
858
转载 ARM汇编语言调用C函数之参数传递
对于ARM体 系来说,不同语言撰写的函数之间相互调用(mix calls)遵循的是 ATPCS(ARM-Thumb Procedure Call Standard),ATPCS主要是定义了函数呼叫时参数的传递规则以及如何从函数返回,关于ATPCS的详细内容可以查看ADS1.2 Online Books ——Developer Guide的2.1节。这篇文档要讲的是 汇编代码中对C函数调用时如何
2013-11-01 15:39:18
1000
C语言案例
2008-03-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人