自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 Linux内核学习——中文注释计划

序幕:试想一下这样的情景。某天你到一座陌生的城市去旅行,买了一份城市的地图。当你进入这个城市的时候,期望着从地图上获取尽可能多的导航信息,可是你还是迷路了。因为城市在不断的建设,你手中的地图很可能已经过期了,地图上的古迹已经变成了摩天大楼;也可能地图上标的很明确,但是当你站在路口时还是不知该往哪个方向前进,因为路口没有相应的指示牌,或者路牌上使用的不是你掌握的语言。。。甚至是一些你永远也猜

2011-06-20 23:06:00 3940 6

转载 页面缓存——内存与文件的那些事儿

转载:http://blog.csdn.net/drshenlei/article/details/4582197原文标题:Page Cache, the Affair Between Memory and Files原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家

2013-01-05 00:04:20 1792

转载 内核是如何管理内存的?

转载:http://blog.csdn.net/drshenlei/article/details/4350928原文标题:How The Kernel Manages Your Memory原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。]

2013-01-04 23:43:24 1573

转载 剖析程序的内存布局

转载:http://blog.csdn.net/drshenlei/article/details/4339110原文标题:Anatomy of a Program in Memory原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。]     内存管理

2013-01-04 23:37:13 1728

转载 Cache:一个隐藏并保管数据的场所

转载:http://blog.csdn.net/drshenlei/article/details/4277959原文标题:Cache: a place for concealment and safekeeping原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分

2013-01-04 23:35:22 2037

转载 CPU的运行环、特权级与保护

转载:http://blog.csdn.net/drshenlei/article/details/4265101原文标题:CPU Rings, Privilege, and Protection原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。] 可能

2013-01-04 23:23:35 2070

转载 内存地址转换与分段

转载:http://blog.csdn.net/drshenlei/article/details/4261909原文标题:Memory Translation and Segmentation原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。] 本文是

2013-01-04 23:12:33 1745

转载 内核引导过程

转载:http://blog.csdn.net/drshenlei/article/details/4253179原文标题:The Kernel Boot Process原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。] 上一篇文章解释了计算机的引导过

2013-01-04 23:03:11 2050

转载 计算机的引导过程

转载:http://blog.csdn.net/drshenlei/article/details/4250306原文标题:How Computers Boot Up原文地址:http://duartes.org/gustavo/blog/  [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。]  前一篇文章介绍了Intel计算

2013-01-04 22:46:48 1959

转载 主板芯片组与内存映射

转载:http://blog.csdn.net/drshenlei/article/details/4246441原文标题:Motherboard Chipsets and the Memory Map原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。]

2013-01-04 22:31:21 1726

转载 CPU的等待有多久?

转载:http://blog.csdn.net/drshenlei/article/details/4240703原文标题:What Your Computer Does While You Wait原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。] 本文

2013-01-04 22:14:16 1730

原创 Linux登录时输错密码怎么办

在终端登录Linux的时候有时候密码输错习惯上会按backspace想删除错误的输入但这样是不行的只能回车等login超时再次弹出输入提示这种时候需要使用终端的特殊输入字符KILL进行擦行操作按Ctrl + U这样就可以重新输入密码了

2012-12-21 21:29:11 2481

原创 Linux终端

哑终端,使用RS-232与主机相连的硬件设备控制台,通过显示器,键盘,鼠标与主机相连的人机接口控制台终端,通常指显示器虚拟终端,在控制台上使用getty软件虚拟的终端伪终端,使用软件模拟的成对逻辑设备控制终端,应用程序中的输出终端使用tty命令查看当前使用的终端/dev/pts/0使用ssh登录或X中打开的伪终端/dev/tty1控制台虚拟终端

2012-12-21 20:38:10 1537

原创 Fedora17中使用AR9170芯片的USB无线网卡

使用lsusb可以看到已经识别出无线网卡设备到http://linuxwireless.org/en/users/Drivers/carl9170下载固件Linux 3.1 and newer1.9.6carl9170-1.fw得到固件carl9170-1.fw将固件放入/lib/firmwar

2012-12-13 22:04:54 1980

原创 Fedora定制内核

Fedora桌面版安装完后使用http://mirrors.163.com/的软件源使用yum grouplist查看可安装的软件组使用yum groupinstall "Development Tools"安装开发工具参考https://fedoraproject.org/wiki/Building_a_custom_kernel编译内核的时候预留10G的空间大概要半个小

2012-12-10 23:47:16 1465

转载 linux时钟浅析

时钟的作用尽管与CPU指令执行没有什么直接关系,时钟对于操作系统来说还是有着很重要的意义: 1、记录系统时间。很多应用程序需要知道日期和时间、由日期和时间构成的时间戳也会被打在文件上面、等等; 2、统计功能。如top之类的用户程序可以查看一段时间内的系统负载、以及各个进程占用CPU的时间、等等; 3、定时功能。很多用户程序会使用到定时器,比如sleep一段时间后做某件事情、比如给s

2012-08-21 21:44:11 2401

原创 socket的创建

struct filestruct socketstruct inodestruct sockstruct tcp_sock等结构间关系的建立如图具体内容请参考 git://github.com/kernel-digger/linux.git 代码 comments 分支

2012-03-31 22:24:52 1422

转载 The Evolution of a Programmer

High School/Jr.High           10 PRINT "HELLO WORLD"          20 END       First year in College          program Hello(input, output)            begin              writeln('Hello Worl

2012-03-15 20:52:34 1380

原创 使用位与运算代替取模运算

使用构造哈希表的方法来代替简单的遍历查找是常用的算法优化根据关键字计算哈希值的时候通常使用取模运算计算最终的桶下标以防止桶的溢出在Linux内核中也使用了大量的哈希表进行查找起初内核中也是使用取模的方式计算桶下标不过现在内核中在实现哈希表的时候桶通常选择为2^n个使用按位与(2^n - 1)的方式计算桶下标最终的目的都是为了确定桶下标但是内核为什么选择位

2012-03-14 21:26:44 4190 1

转载 时钟周期、振荡周期、机器周期、CPU周期、状态周期、指令周期、总线周期、任务周期

计算机系统有一系列的“周期”概念,区别、联系地理解这些概念至关重要。以下对时钟周期、振荡周期、机器周期、CPU周期、状态周期、指令周期、总线周期、任务周期进行简单介绍。 周期 在电子技术中,脉冲信号是一个按一定电压幅度,一定时间间隔连续发出的脉冲信号。脉冲信号之间的时间间隔称为周期;而将在单位时间(如1秒)内所产生的脉冲个数称为频率。频率是描述周期性循环信号(包括脉冲信号)在单位时

2012-03-12 20:59:44 2233

转载 深入理解磁盘文件访问

Disk-file-io读写磁盘数据是程序设计中最基本也是最重要的操作之一。实际系统为磁盘 I/O 提供了多种接口,不同的接口不但语义有所不同,而且性能也有差异。理解这些接口对实现正确和高效的程序是很重要的,本文将结合内核的实现原理来比较各种磁盘 I/O 系统调用,希望能从最底层来透彻理解这些接口。 目录 1 内核访问磁盘文件的原理2 访问磁盘数据的系统调用比较2.1

2012-02-08 20:00:20 1064

原创 误用kfree()释放skb导致内存泄露

前段时间写的一个转发模块在现网应用后几台设备出现了不同程度的内存泄露大约4-15天设备内存耗尽泄露速度因业务压力和网络丢包情况而不同经历了N次的代码review和一个不眠之夜后终于找到了原因在一处释放skb的地方本应该使用kfree_skb()的,鬼使神差的被我敲成了kfree()教训很深刻遂仔细查看了相关函数以SLUB分配方式为例

2012-01-13 21:18:21 4495

转载 软件人才成长链

软件人才成长链(1) 程序员程序员处于技术成长历程的最下端。他们需要熟练掌握各种语言技巧,知道技巧适用性还要对资源做出最恰当安排。(2) SA系统分析师系统分析师是抽象模型的建立者,他们需要专业的概念模型知识和基础编程技巧。杰出的系统分析师会利用编程技巧来辅助建立概念模型。(3) SD系统设计师系统设计师应当对“系统结构”所使用的软件技术非常了解。如

2012-01-04 22:57:13 458

转载 什么是真正的实时操作系统

做嵌入式系统开发有一段时间了,做过用于手机平台的嵌入式Linux,也接触过用于交换机、媒体网关平台的VxWorks,实际应用后回过头来看理论,才发现自己理解的肤浅,也发现CSDN上好多同学们都对实时、嵌入式这些概念似懂非懂,毕竟如果不做类似的产品,平时接触的机会很少,即使做嵌入式产品开发,基本也是只管调用Platformteam封装好的API。所以在此总结一下这些概念,加深自己的理解,同时也给新手

2011-12-22 20:00:08 585

转载 关于单CPU,多CPU上的原子操作

所谓原子操作,就是"不可中断的一个或一系列操作" 。1.1.硬件级的原子操作:在单处理器系统(UniProcessor)中,能够在单条指令中完成的操作都可以认为是"原子操作",因为中断只能发生于指令之间。这也是某些CPU指令系统中引入了test_and_set、test_and_clear等指令用于临界资源互斥的原因。在对称多处理器(Symmetric Multi-Pr

2011-12-18 15:08:23 517

转载 多处理器系统下的伪共享(false sharing)问题

1. 背景介绍首先简单说一下计算机中处理器-内存体系结构。由于CPU速度远大于内存访问速度,现代CPU设计中都引入了缓存(cache)作为CPU和内存两者之间交流的缓冲中介。缓存的速度也介于两者之间。缓存中存放了最经常被访问的内存数据,CPU在很大程度上只需要访问高速缓存,大大提高了系统性能。系统对缓存进行读写的单位被称作缓存行(cache line)。大家知道系统对内存的操作单位一般

2011-12-18 14:47:52 468

原创 Linux内核代码风格摘要

第一章:缩进制表符是8个字符避免3级以上的缩进在switch语句中switch与case对齐不要把多个语句放在一行里除了注释、文档和Kconfig之外,不要使用空格缩进不要在行尾留空格第二章:把长的行和字符串打散每一行的长度限制是80列第三章:大括号和空格的放置起始大括号放在行尾,结束大括号放在行首(if、switch

2011-12-10 22:17:10 697

转载 駭客們,起來創業吧

前一陣子「雲端」服務正紅的時候,很多熟悉技術的朋友(包括我在內)都有同一種反應:「這有什麼了不起?我十年前就有自己的Linux主機,在任何地方都可以連上去收信、抓檔、聽音樂…。」對於熟悉各種電腦網路技術的駭客來說,有自己的UNIX伺服器是很普通的事。我在十年前就已經習慣用ssh連到我的伺服器上收email,或是用NFS把伺服器上的硬碟掛載到我的laptop上使用,所以在gmail和dropbox剛

2011-12-08 21:05:20 481

转载 用GCC来跟踪程序的函数调用关系

GCC就像一个巨大的宝藏,只要你愿意花时间,总能淘到好东西。在看一些大中型的软件的源代码时,你是不是非常希望有一个工具能够方便的生成各个函数之间的调用关系图呢?为了实现这个目标,你可以通过对源代码进行静态扫描得到函数的调用关系,但是你无法通过这种方法获得更多的信息,(如:对某个函数的调用次数,被调用的函数执行了多长时间等,这些信息对于软件的优化具有很好的参考价值)除了静态扫描之

2011-12-07 23:49:25 960

原创 Linux内核中crc16_table与crc32_table的计算

CRC: Cyclic redundancy check 循环冗余校验具体的计算原理与方法参考:http://en.wikipedia.org/wiki/Cyclic_redundancy_check内核中使用的crc16计算方法位于代码树/lib/crc16.c文件中crc32的计算方法位于代码树/lib/crc32.c文件中均采用了查表法其中

2011-12-04 23:03:35 3227

转载 修炼一名程序员的职业水准

作者:林庆忠,1990年毕业于昆明工学院计算机软件专业,后又于1999年毕业在南京大学 完成软件工程专业硕士的学习,现供职于CNPC旗下的一个行业软件研发中心,因为在网上看了许多有经验的各路软件开发人员写的好帖,一时手痒兴起,也凑一篇壮壮声势。假设你是一名软件专业毕业的本科学子,如何在工作中修炼成为一名有较高职业水准的程序员呢,本文试图总结作者从事15年软件开发工作的感想,希望对有志成

2011-12-01 20:11:02 1444

原创 git工具的使用

克隆远程仓库git clone git://github.com/kernel-digger/linux.git从远程仓库拉取git pull git://github.com/kernel-digger/linux.git切换本地分支git checkout branchname获取远程标签git pull git://github.com

2011-11-30 21:26:49 1255

转载 详解C中volatile关键字

volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:short flag;

2011-11-28 19:41:14 342

转载 How software developers fix defects (bugs) - QA point

This should hold us over.   It worked yesterday.  This is designed according to sepecification.  This is a good fix.  It will work this way.  Here you go.

2011-10-18 21:08:58 412

转载 Typical start-up process for x86 Linux

Figure 1. Typical start-up process for x86 Linux    原文:Migrating from x86 to PowerPC, Part 2: Anatomy of the Linux boot processhttp://www.ibm.com/developerworks/power/library/pa-migrate2/i

2011-10-16 22:15:31 892

原创 一个简单的通用Makefile模板

供写小程序的时候使用可以随意的修改文件名称随意的增删文件、目录随意的调整文件的目录层次不编译某个.c文件时将其改个后缀名即可不能有重复的文件名称 # [email protected] = asLD = ldCC = gccCPP = $(CC) -EAR = arNM = nm

2011-09-25 21:46:51 1206

原创 地址空间

1、地址空间用一个非负整数的集合:{0, 1, 2, ... }表示地址空间 2、线性地址空间如果地址空间中的整数是连续的,则称为一个线性地址空间大多数情况下我们只考虑线性地址空间 3、物理内存空间将物理内存按照字节(8bit)为单位进行划分并用从0开始的线性整数表示各个字节单位组成物理内存空间例如对于1GB的物理内存,可用的物理内存空间为:{0, 1, 2

2011-09-17 21:54:59 616

原创 Linux内核中mktime()函数算法分析

内核中的mktime()函数位于kernel/time.c内该函数主要用于内核启动时,将CMOS中的 年-月-日 时:分:秒 信息转换为距离1970-01-01 00:00:00的秒数 具体定义如下: unsigned longmktime(const unsigned int year0, const unsigned int mon0, const unsi

2011-08-29 22:08:17 3089 2

原创 Linux内核加载过程

以32位x86,bzImge为例 grub版本为0.97 1、计算机上电2、0xFFFFFFF0当cpu检测reset引脚上的信号后便将指令指针寄存器的值设置为0xfff0——INTEL 80386 PROGRAMMER'S REFERENCE MANUAL 1986, Chapter 10此时为实模式,cpu将执行物理地址0xFFFFFFF0处的指令

2011-08-13 22:13:50 1920 2

原创 bzImage是怎么来的

以x86架构32位机为例,即i386 从经典的helloworld程序开始理解程序的编辑、编译、连接、运行的四个阶段内核也是使用gcc、ld等工具编译连接出来的,并没有什么神秘之处只不过文件繁多,代码树庞大而已,超出了大多数人的理解范围就好像一般人对支配几千或几万块钱还是没有问题的但是若突然让其支配上亿元时,一般人都是没有概念的 使用的工具make、gcc、ld

2011-07-31 14:47:38 2882

空空如也

空空如也

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

TA关注的人

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